لا يمكن أن ينتقل المؤشر إلى الأول

0

مرحباً ، أنا أعمل على مشروع يحتوي على قاعدة بيانات. بعد إنشاء قاعدة البيانات وإدراج البيانات في قاعدة البيانات ، أريد إرسال البيانات إلى هدف آخر. توجد أزرار صور في تطبيقي عندما يلمس المستخدم أحد هذه ، ويفتح هدف آخر ويعرض معلومات حول هذه الأزرار.

لذا أرسل معرف لمست imageButton لذلك أعرف ما هو زر المصدر. حيث أن الرمز أدناه لا يؤدي نص "if" [ if(cursor.moveToFirst() ]. ما هي مشكلة المؤشر؟ لماذا لا تستطيع الانتقال إلى الأول؟

هذه هي النية التي يجب أن تظهر المعلومات.

IDVALUE هو معرف imageButtons . راجعت ، يعمل بشكل جيد.

 @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 إجابة

1
افضل جواب
"SELECT * FROM movieInfo WHERE movie_id = '+IDVALUE+'"

أنت مطابقة للحرف +IDVALUE+ ، وليس البيانات الموجودة في متغير Java المسمى IDVALUE . التغيير إلى:

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

لاحظ أن MainActivity.db.rawQuery() يبدو مريبًا - إذا لم يكن هذا الرمز في MainActivity ، فلا يمكنك الاعتماد على أن بعض الأنشطة الأخرى قامت بتهيئة الحقول الخاصة به. افتح مرجع قاعدة بيانات جديد بدلاً من ذلك في هذا النشاط.

:مؤلف
فوق
قائمة طعام