You should not create database in the assets folder as we can only read data from assets folder.
Infact you should create the database in the default internal folder i.e data/data/[package-name]/databases OR you also can create your database in the sdcard and can perform read-write operation but of course it will not run if there is no sdcard.
The following is the code for creating databse in 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();
}
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…