آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

کپی نشدن دیتابیس از پوشه assets

General  8 سال پیش  8 سال پیش
0 0

سلام خدمت دوستان

من با استفاده از روس sqliteopenhelper با دیتابیس کار میکنم ومشکلی نداره

ولی وقتی دیتابیسی رو از پوشه assets کپی میکنم دیتابیس من جدولی که داشته رو دیگه نداره واطلاعاتی نیست که بخواد بخونه

این هم کدهام ممنون میشم راهنمایی کنید

کدها:

public class ChatDatabase extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "chat_db";
public static final int VERSION = 1;
public static final String TABLE_NAME = "tbl_chat_list";
public static final String DATABASE_PATH="data/data/testdatabase.clicksite.org.testdatabase/database/";
public static final String COL_ID = "id";
public static final String COL_USERNAME = "username";
public static final String QUERY = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + "(" +
COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COL_USERNAME + " TEXT);";

SQLiteDatabase database;

Context context;

public ChatDatabase(Context context) {
super(context, DATABASE_NAME, null, VERSION);
this.context = context;
}

/* @Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(QUERY);
} catch (SQLException e) {
e.printStackTrace();
}
}*/

@Override
public void onCreate(SQLiteDatabase db) {

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}

public void addChat(String username) {
ContentValues cv = new ContentValues();
cv.put(COL_USERNAME, username);
SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
long result = sqLiteDatabase.insert(TABLE_NAME, null, cv);
if (result > 0) {
Toast.makeText(G.context, "id is:" + result, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(G.context, "faild", Toast.LENGTH_SHORT).show();
}
}

public String openDatabase() {
String path = context.getDatabasePath(DATABASE_NAME).getPath();
return path;
}

public Cursor getAllRecords() {
String query = "SELECT * FROM " + TABLE_NAME;
SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
return sqLiteDatabase.rawQuery(query, null);
}

}


public class MainActivity extends AppCompatActivity {

ArrayList<String> arrayList;
TextView txtShow;
ChatDatabase chatDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

arrayList=new ArrayList<>();

txtShow = (TextView) findViewById(R.id.txtShow);
chatDatabase = new ChatDatabase(G.context);
File file=getApplicationContext().getDatabasePath(chatDatabase.DATABASE_NAME);
if(!file.exists()){

chatDatabase.getReadableDatabase();
if(copyDatabase(this)){
Toast.makeText(G.context,"succed",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(G.context,"no",Toast.LENGTH_SHORT).show();
}
}

String path = chatDatabase.openDatabase();
//txtShow.setText(path);
Cursor cursor = chatDatabase.getAllRecords();
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
final int id = cursor.getInt(0);
final String username = cursor.getString(1);
// txtShow.setText(username);

arrayList.add(username);

}

for(int i=0;i<arrayList.size();i++){
txtShow.setText(arrayList.get(i));
}

}

public boolean copyDatabase(Context context){
try {
InputStream inputStream=context.getAssets().open(chatDatabase.DATABASE_NAME);
String outFileName=chatDatabase.DATABASE_PATH+chatDatabase.DATABASE_NAME;
OutputStream outputStream=new FileOutputStream(outFileName);
byte[] buffer=new byte[1024];
int length=0;
while((length=inputStream.read(buffer))>0){
outputStream.write(buffer,0,length);
}
outputStream.flush();
outputStream.close();

} catch (IOException e) {
e.printStackTrace();
}
return true;
}



}
0 0
دوستان لطفا راهنمایی کنید ممنون میشم خیلی درگیرم.اگه کدی دارید که این کارو میکنه لطفا بگید (8 سال پیش)
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .