试图简单地更新SQLiteDatabase数据库中的一行。我可以插入精细的记录有:在没有DatabaseHelper的情况下在Android SQLite数据库上运行更新
myDB.execSQL("INSERT INTO " + table + " (Date, Urine, Def, Flat, Snez, Mus)" + " VALUES ('" + dat + "', " + uri + ", " + def + ", " + fl + ", " + sn + ", " + mu + ");");
但是当我试图用更新行:
myDB.execSQL("UPDATE " + TableMain + " SET " + field+ "=" + number + "WHERE Date = "+ DateMaker(today)+";");
我得到一个在logcat的“数据库未打开”错误。所以我尝试打开德datbase有:
SQLiteDatabase db=myDB.getWritableDatabase();
但是我通过Eclipse中getWritableDatabase()是未定义告诉,所以我尝试:
myDB.openDatabase("myDB", null, MODE_PRIVATE);
但随后即时通讯与错误招呼“无法打开数据库文件“。所以我改变了路径data/data/com.BodyTracker /数据库所以..:
myDB.openDatabase("data/data/com.BodyTracker/database", null, MODE_PRIVATE);
我再次无法打开数据库错误。我不知道它为什么不能打开它,它可以写入和读取数据库,它只是不会更新。仅供参考,这一切都发生在我的主要活动中,它扩展了TabActivity,而不是SQLiteDatabase。我没有使用DatabaseHelper,即时消息太多,对我的简单需求来说太复杂了(读入和读出6个值,并更新它们)。
我在哪里创建数据库:
myDB = this.openOrCreateDatabase("DatabaseName", MODE_PRIVATE, null);
/* Create a Table in the Database. */
myDB.execSQL("CREATE TABLE IF NOT EXISTS "
+ TableMain
+ " (Date VARCHAR, Urine INT(3), Def INT(3), Flat INT(3), Snez INT(3), Mus INT(3));");
我的更新代码:
public int UpdateDB(String field, int number)
{
//SQLiteDatabase db=myDB.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put("Urine", number);
cv.put("Def", number);
cv.put("Flat", number);
cv.put("Snez", number);
cv.put("Mus", number);
cv.put("Date", DateMaker(today));
myDB.openDatabase("data/data/com.BodyTracker/database", null, MODE_PRIVATE);
// myDB.rawQuery("UPDATE " + TableMain + " SET " + field+ "=" + number + "WHERE Date =? ", new String[]{DateMaker(today)});
// myDB.execSQL("UPDATE " + TableMain + " SET " + field+ "=" + number + "WHERE Date = "+ DateMaker(today)+";");
return myDB.update(TableMain, cv, "Date=?", new String[]{DateMaker(today)});
}
请询问其他信息,这是我的第一个问题所以不能100%究竟给。
在我上面的代码块中,我使用了更新命令(其中包括注释掉的尝试)。它会因数据库未打开或无法打开数据库而失败,具体取决于myDB.openDatabase是否被评论过。我认为问题在于数据库的打开。 – 2012-02-11 22:07:53
您可以检查数据库是否真的在应用程序的文件夹中创建: /data/data/yourapp/databases – 2012-02-11 22:39:53
是的,我可以导航到它,甚至打开表格并查看数据。它挑衅地在那里。 – 2012-02-11 23:11:59