Не следует создавать базу данных в папке ресурсов, поскольку мы можем только читать данные из папки активов.
Фактически вам следует создать базу данных во внутренней папке по умолчанию, т.е. data / data / [package-имя] / database ИЛИ вы также можете создать свою базу данных на SD-карте и выполнить операцию чтения-записи, но, конечно, она не будет работать, если нет SD-карты.
Ниже приведен код для созданиябаза данных в SDCard: -
private SQLiteDatabase db;
private static Context cntxt;
public static File filename = null;
public static String DATABASE_FILE_PATH_EXTERNAL = null;
public DBHelper(Context context) {
super(context, DATABASE_NAME, null,1);
cntxt = context;
try{
try{
filename = Environment.getExternalStorageDirectory();
}catch(Exception e){
Toast.makeText(DbHelper.cntxt, "Please Insert SD card To create Database", Toast.LENGTH_LONG).show();
Log.e("Log",e.getMessage(),e.fillInStackTrace());
}
DATABASE_FILE_PATH_EXTERNAL = filename.getAbsolutePath()+File.separator+DATABASE_NAME;
// db = SQLiteDatabase.openDatabase(DATABASE_FILE_PATH_EXTERNAL, null, SQLiteDatabase.OPEN_READWRITE + SQLiteDatabase.CREATE_IF_NECESSARY);
}catch(Exception e){
Log.e("Log",e.getMessage(),e.fillInStackTrace());
}
}
@Override
public synchronized SQLiteDatabase getWritableDatabase() {
// TODO Auto-generated method stub
try{
db = SQLiteDatabase.openDatabase(DATABASE_FILE_PATH_EXTERNAL, null, SQLiteDatabase.OPEN_READWRITE + SQLiteDatabase.CREATE_IF_NECESSARY);
try{
onCreate(db);
}catch(Exception e){
Log.e("Log",e.getMessage(),e.fillInStackTrace());
}
return db;
}catch(Exception e){
Log.e("Log",e.getMessage(),e.fillInStackTrace());
if(db!=null)
db.close();
}
return db;
}// End of getWritableDatabase()
**Inserting and Retrieving data from database:-**
public void insertIntoTable(String[] userName,int[] score)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
try {
db.beginTransaction();
for (int i = 0; i < beatID.length; i++) {
cv.put("UserName",userName[i]);
cv.put("Score",score[i]);
db.insert("TableName", "UserName",
cv);
}
db.setTransactionSuccessful();
} catch (Exception ex) {
} finally {
db.endTransaction();
db.close();
}
}
public void getUserNamePswd(){
Cursor c = null;
SQLiteDatabase db = null;
try{
db = this.getReadableDatabase();
c = db.rawQuery("Select UserName,Score from TableName",null);
c.moveToFirst();
String[] username = new String[c.getCount()];
int[] score = new int[c.getCount()];
int counter = 0;
c.moveToFirst();
while(!c.isAfterLast()){
username[counter] = c.getString(0);
score[counter] = c.getInt(1);
c.moveToNext();
counter++;
}
}catch(Exception e){
Log.e("Log", e.getMessage(), e.fillInStackTrace());
return null;
}finally{
c.close();
db.close();
}
}