Я пытаюсь записать в таблицу в моей базе данных sqlite в Android код, который я использую, следующим образом:
DBH = new DatabaseHelper(this);
try {
DBH.createDataBase();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DBH.getWritableDatabase().rawQuery("insert into profile (_id, FirstName) values (1, 'Dave')", null);
DBH.close();
DBH - это мой вспомогательный класс базы данных, и он отлично создает базу данных, и яЯ даже смог прочитать из базы данных, так что я знаю, что там.Таблица, в которую я пытаюсь записать, является профильной, и я уверен, что она действительно существует, но каждый раз, когда я запускаю ее, я получаю эту ошибку:
sqlite returned: error code = 1, msg = no such table: profile
Я пытался читать из этой таблицы и былв состоянии получить результаты, так что я в значительной степени озадачен.У кого-нибудь есть идеи?
Редактировать: По запросу это мой класс помощника по базам данных
public class DatabaseHelper extends SQLiteOpenHelper {
private static String DB_PATH = "/data/data/com.ProjectZeus.FitnessWire/databases/";
private static String DB_NAME = "fitnesswire.db";
private SQLiteDatabase myDB;
private Context myContext;
public DatabaseHelper(Context context) {
super(context,DB_NAME, null, 1);
this.myContext = context;
}
public void createDataBase() throws IOException{
boolean check = checkDataBase();
if(check){
//Log.e("Check", "Database exists");
}else{
this.getReadableDatabase();
try{
copyDataBase();
}catch(Exception e){
throw new Error("Error copying database");
}
}
}
private void copyDataBase() throws IOException {
InputStream myInput = myContext.getAssets().open(DB_NAME);
String outFileName = DB_PATH + DB_NAME;
OutputStream myOutput = new FileOutputStream(outFileName);
byte [] buffer = new byte[1024];
int length;
while((length = myInput.read(buffer))>0){
myOutput.write(buffer,0,length);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
private boolean checkDataBase() {
SQLiteDatabase checkdb = null;
try{
String myPath= DB_PATH + DB_NAME;
checkdb = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
}catch(SQLiteException e){
Log.e("checkDataBase()", "Database doesntexist yet");
}
if(checkdb != null){
checkdb.close();
}
return checkdb != null ? true : false ;
}
public void openDataBase() throws SQLException {
String myPath = DB_PATH + DB_NAME;
myDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
}
@Override
public synchronized void close(){
if(myDB != null){
myDB.close();
}
super.close();
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}