我有代码SQLite,但这个代码不是我的应用程序中的工作者
错误
SQLiteException: near "=": syntax error (code 1): , while compiling: SELECT * FROM tabellirikWHERE kategori=Pupuh Ginada
和mya代码
public ArrayList<Lirik> getAllLirik2(){
ArrayList<Lirik> arrayList = new ArrayList<Lirik>();
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM "+ TABLE_MUPUH + "WHERE " + KATEGORY_LIRIK + "=" + "Pupuh Ginada ", null);
cursor.moveToFirst();
while (cursor.isAfterLast()==false){
Lirik lirik = new Lirik(
cursor.getInt(cursor.getColumnIndex(KEYL_ID)),
cursor.getString(cursor.getColumnIndex(KATEGORY_LIRIK)),
cursor.getString(cursor.getColumnIndex(JUDUL)),
cursor.getString(cursor.getColumnIndex(KEY_MUPUH))
);
arrayList.add(lirik);
cursor.moveToNext();
}
return arrayList;
}
帮助我,谢谢
答案 0 :(得分:3)
查看你的select子句......格式不正确:
SELECT * FROM tabellirikWHERE kategori=Pupuh Ginada
你需要增加一个额外的空间 BEFORE “WHERE”。 正如其他人所说,你需要确保用单引号包装“Pupuh Ginada”。以下是您需要的样子:
SELECT * FROM tabellirik WHERE kategori='Pupuh Ginada'
请注意这一点,因为这样可以打开你可能的SQL注入作为安全漏洞,如果你最终有一些UI组件(即和EditText)允许用户输入内容。您应该使用提供给您的参数化方法来完成此任务:
String[] selectionArgs = new String[]{"Pupuh Ginada"};
Cursor cursor = db.rawQuery("SELECT * FROM "+ TABLE_MUPUH + " WHERE " + KATEGORY_LIRIK + "=?", selectionArgs);
更好的是使用db.query ....但我觉得它更难以捕捉查询正在做什么。它使用一堆参数来构建整个查询语句。