【发布时间】:2014-04-07 08:06:58
【问题描述】:
我有一个非常简单的例子(在一个按钮 onClickListener 内,仅供参考):
DatabaseHandler dbHandler = new DatabaseHandler(
v.getContext(),
v.getContext().getResources().getString(R.string.DATABASE_NAME));
dbHandler.getWritableDatabase().execSQL("CREATE TABLE IF NOT EXISTS test (abc TEXT);");
dbHandler.getWritableDatabase().rawQuery("INSERT INTO test (abc) VALUES ('blah');", null);
Cursor test = dbHandler.getReadableDatabase().rawQuery("SELECT * FROM test;", null);
Log.e("TEST", test.toString());
Log.e("TEST", String.valueOf(test.getCount()));
类:
public class DatabaseHandler extends SQLiteOpenHelper {
private static int DATABASE_VERSION = 2;
public DatabaseHandler(Context context, String dbName) {
super(context, dbName, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
输出(它是一个按钮,我点击了 3 次):
04-07 01:31:51.047: E/TEST(11816): android.database.sqlite.SQLiteCursor@42e97400
04-07 01:31:51.047: E/TEST(11816): 0
04-07 01:31:51.677: E/TEST(11816): android.database.sqlite.SQLiteCursor@42ed3980
04-07 01:31:51.677: E/TEST(11816): 0
04-07 01:31:52.428: E/TEST(11816): android.database.sqlite.SQLiteCursor@42e755d8
04-07 01:31:52.438: E/TEST(11816): 0
我只是没有发现它有什么问题。几分钟前,我让它工作了。我不知道为什么它突然停止工作。有人看到我的错误吗?
【问题讨论】:
-
test是保存结果的游标。再看一遍,你可能只是忽略了它。 -
什么意思?
test在与Log.e一起使用之前在该行中被实例化了 -
我的错。你能显示哪些代码调用了按钮,或者调用了你的代码吗?这不完全是 SCCE。
-
相信我,所有这些调用的东西都有效。否则我不会有那个 logcat 输出,对吧。而且,当我删除
IF NOT EXISTS时,它给了我一个错误,告诉我表已经存在,所以它可以工作。只是 INSERT/SELECT 没有。不过好吧,这里是:btn_scan = (ImageButton)rootView.findViewById(R.id.btn_scan);btn_scan.setOnClickListener(btn_scan_listener);...static OnClickListener btn_scan_listener = new OnClickListener() { @Override public void onClick(View v) {... -
我不认为您的 INSERT 查询正在执行。