提问者:小点点

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


我有作业,但有一些错误,这是我的代码:

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/Android运行时(15694):致命例外:主12-07 22:55:13.831: E/Android运行时(15694):进程:com.example.assignment_android_ps04360,PID: 15694 12-07 22:55:13.831: E/Android运行时(15694):java.lang.运行时异常:无法启动活动ComponentInfo{com.example.assignment_android_ps04360/com.example.assignment_android_ps04360。Update活动}:android.database.sqlite.SQLiteExc的:没有这样的列:ID(代码1):,而编译:SELECT*从学生WHere ID=PS04107 12-07 22:55:13.831: E/Android运行时(15694):在android.app.ActivityThread.perform启动活动(ActivityThread.java:2299)

表格:table.png


共1个答案

匿名用户

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

这里的一个问题是,与< code>ID进行比较的值不是带引号的字符串。你需要生产一些更像

SELECT * FROM Student WHERE ID = 'PS04107'

您应该将< code>selectionArgs传递给< code>query方法,而不是将查询构建为字符串。