db.execSQL("create table if not exists courses (acceptanceDate varchar(20),professional varchar(20),classs varchar(20),course varcharr(20))");
db.execSQL("insert into courses values(2015,'软件工程','一班','高等数学')");
建表和插入语句如上,查询的时候发现只有
Cursor cursor = db.rawQuery("select classs from courses where acceptanceDate="+AcceptanceDate+"",null);
这样才能成功,就是只有where查询条件是数字的时候才能查到东西(AcceptanceDate是我定义的一个变量,取到的值是2015),如果查询
Cursor cursor = db.rawQuery("select classs from courses where professional="+Professional+"",null);
就会报错
E/SQLiteLog: (1) no such column: 软件工程
关键是我用
Cursor cursor = db.rawQuery("select professional from courses where acceptanceDate="+AcceptanceDate+"",null);
也能查询到软件工程这个数据,有没有大佬知道这是哪有问题啊....
加上单引号试一下
Cursor cursor = db.rawQuery("select classs from courses where professional='"+Professional+"'",null);
同楼上加引号,但是楼主这样写sql会存在sql注入的情况,建议采用android官方room框架
看sql没发现什么错,不过自己写sql字符串,也很容易出错了自己却看不出来,建议两个排除方法
(1)查看表所有列,看看“professiona”l的列名是否变成了“软件工程”
(2)把db.rawQuery()里面的sql提出来,尽可能是全部的db.rawQuery(),打印或调试看看sql字符串是否正确,逐一排查