【问题标题】:SQLite doesn't work with AndroidSQLite 不适用于 Android
【发布时间】: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 查询正在执行。

标签: android sqlite


【解决方案1】:

似乎rawQuery 不适用于INSERT-Statements。使用execSQL 有效。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-01-22
  • 2019-10-14
  • 1970-01-01
  • 2012-04-12
  • 2014-04-09
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多