没有这样的列:ID(code1):,同时编译:SELECT *

时间:2016-12-07 16:01:09

标签: java android sql database sqlite

抱歉我的英语,请帮助我,我有一个功课,但它有一些错误,这是我的代码:

private void initUI() {
    // TODO Auto-generated method stub
    Intent i =getIntent();
    String id =i.getStringExtra("ID");
    SQLiteDatabase database = Database.initDatabase(this, DB_NAME);
    Cursor cursor = database.rawQuery("SELECT * FROM Student WHERE ID = "+id,null);
    cursor.moveToFirst();
    String ten = cursor.getString(1);
    String sdt = cursor.getString(2);
    String classid = cursor.getString(3);
    byte[] anh= cursor.getBlob(4);

    Bitmap bitmap = BitmapFactory.decodeByteArray(anh, 0,anh.length);
    imgupdate.setImageBitmap(bitmap);
    edtid.setText(id);
    edtname.setText(ten);
    edtsdt.setText(sdt);


}

和错误

    12-07 22:55:13.831: E/AndroidRuntime(15694): FATAL EXCEPTION: main
12-07 22:55:13.831: E/AndroidRuntime(15694): Process: com.example.assignment_android_ps04360, PID: 15694
12-07 22:55:13.831: E/AndroidRuntime(15694): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.assignment_android_ps04360/com.example.assignment_android_ps04360.UpdateActivity}: android.database.sqlite.SQLiteException: no such column: ID (code 1): , while compiling: SELECT * FROM Student WHERE ID = PS04107
12-07 22:55:13.831: E/AndroidRuntime(15694):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2299)

对不起我的英文(T_T)

表: Table.png

1 个答案:

答案 0 :(得分:0)

一种简单的调试方法是在将sqlite放入程序之前直接对sqlite运行查询。

这里的一个问题是,您与ID的比较值不是带引号的字符串。你需要制作更像

的东西
SELECT * FROM Student WHERE ID = 'PS04107'

您应该pass selectionArgs to the query method

,而不是将查询构建为字符串