光标不能移到第一位

时间:2018-07-30 15:03:06

标签: android database sqlite

嗨,我正在研究一个项目,它包含一个数据库。 创建数据库并将数据插入数据库后,我想将数据发送到另一个意图。当用户触摸其中一个图像按钮时,我的应用程序上会出现图像按钮,另一个意图会打开并显示有关该图像按钮的信息。

因此,我发送了被触摸的imageButton的ID,因此我知道源按钮是什么。由于以下代码不会执行“ if”主体[if(cursor.moveToFirst()]。游标有什么问题?为什么它不能移到第一位?

这是显示信息的意图。

IDVALUEimageButtons的ID。我检查了一下,效果很好。

 @Override
protected void onCreate(@Nullable Bundle savedInstanceState) {


    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_info);

    Bundle IDbundle = this.getIntent().getExtras();
    IDVALUE = IDbundle.getInt("cnt0");
    tv1 = (TextView) findViewById(R.id.Info_textView1);

    cursor = MainActivity.db.rawQuery("SELECT * FROM movieInfo WHERE movie_id = '+IDVALUE+'",null);
    if(cursor != null) {
        if (cursor.moveToFirst()) {

            tv1.setText(cursor.getString(2));
        }
    }

我的数据库中有两条记录(代码在MainActivity中),一条 包含id,另一个包含information

private void InitialDatabase() {

    try {
        File root = new File(Environment.getExternalStorageDirectory(), "infoFile");

        if (!root.exists()) {
            root.mkdir();
        }

        File file = new File(root, "info");

        if (!file.exists()) {
            file.createNewFile();
        }

        db = SQLiteDatabase.openOrCreateDatabase(file, null);
        db.execSQL("CREATE TABLE IF NOT EXISTS" +
                " movieInfo(movie_id INTEGER PRIMARY KEY AUTOINCREMENT,movie_info TEXT)");
                //now i have a data base with two record
        db.execSQL("INSERT  INTO movieInfo (movie_info) VALUES('1')");
        db.execSQL("INSERT  INTO movieInfo (movie_info) VALUES('2')");
        db.execSQL("INSERT  INTO movieInfo (movie_info) VALUES('3')");
        db.execSQL("INSERT  INTO movieInfo (movie_info) VALUES('4')");
        db.execSQL("INSERT  INTO movieInfo (movie_info) VALUES('5')");
        db.execSQL("INSERT  INTO movieInfo (movie_info) VALUES('6')");



    } catch (IOException io) {

        Toast.makeText(this, "error on initialing dataBase", Toast.LENGTH_SHORT).show();
    }


}

这是我的数据库代码

1 个答案:

答案 0 :(得分:1)

"SELECT * FROM movieInfo WHERE movie_id = '+IDVALUE+'"

您要匹配文字+IDVALUE+,而不是Java变量IDVALUE中包含的数据。更改为:

"SELECT * FROM movieInfo WHERE movie_id = '" + IDVALUE + "'"

请注意MainActivity.db.rawQuery()看起来很可疑-如果此代码不在MainActivity中,则不能依靠其他活动已初始化其字段。而是在该活动中打开一个新的数据库引用。