Java 在sqlite数据库中搜索数据时出错

Java 在sqlite数据库中搜索数据时出错,java,android,sql,database,sqlite,Java,Android,Sql,Database,Sqlite,因此,我想在android上的数据库sqlite中搜索一个值,为此我使用以下方法: public Stuff search(Stuff stuff) { String sql = "SELECT * FROM " + TABLE_STUFF + " WHERE NOME = " + stuff.getNome(); Cursor cursor = this.database.rawQuery(sql, null); Stuff tempStuff = new Stuff( /

因此,我想在android上的数据库sqlite中搜索一个值,为此我使用以下方法:

public Stuff search(Stuff stuff) {
String sql = "SELECT * FROM " + TABLE_STUFF + " WHERE NOME = " + stuff.getNome();

Cursor cursor = this.database.rawQuery(sql, null);

Stuff tempStuff = new Stuff(
        //cursor.getLong(0),
        cursor.getString(1)
);

if (tempStuff == null)
    return null;
else
    return tempStuff;

}
我的东西是运动。运行查询时,出现以下错误:

07-11 08:34:42.099 26595-26595/? E/SQLiteLog: (1) no such column: sports
07-11 08:34:42.101 26595-26595/? D/AndroidRuntime: Shutting down VM
07-11 08:34:42.108 26595-26595/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.nelsu.idk, PID: 26595
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.nelsu.idk/com.example.nelsu.idk.MainActivity}: android.database.sqlite.SQLiteException: no such column: Sports(code 1): , while compiling: SELECT * FROM STUFF WHERE NOME = Sports
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6494)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
 Caused by: android.database.sqlite.SQLiteException: no such column: Sports(code 1): , while compiling: SELECT * FROM STUFF WHERE NOME = Sports
它是按列名搜索,而不是按其中的数据搜索,对吗?为什么?
谢谢

一个值需要放在双引号内。将您的查询更改为

String sql = "SELECT * FROM " + TABLE_STUFF + " WHERE NOME = \"" + stuff.getNome() + "\"";

你试过NOME=Sports吗?可以给我们看一下创建查询吗?@B001ᛦ 不,但我希望它是通用的,我不想只搜索一个值,我想搜索来自的任何值;我不想只搜索一个值。。我知道。。。我想用双引号是的,就是这样,谢谢!同时也感谢那些投了反对票的人!这是错误的;字符串应该用单引号括起来,请参见“文字值”下的内容。@varro:这没有错。你说得对。顺便说一句,最好的方法是参数,了解它们。