SQLiteException:near"=":语法错误(代码1):(已关闭)

0 sqlite android

应用程序每次运行时都会关闭.当我检查logcat时,这是继续弹出的错误.

android.database.sqlite.SQLiteException: near "=": syntax error (code 1): , while compiling: SELECT * FROM tblresultsWHEREtopid=1ANDusname=fbbh
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2351)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2403)
        at android.app.ActivityThread.access$600(ActivityThread.java:165)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:194)
        at android.app.ActivityThread.main(ActivityThread.java:5391)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
        at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

这是来自DBHELPER的我的片段:TOP_ID初始化为字符串.

public List<Result> getAllResult() {


    String qry3 = "SELECT * FROM " + TABLE_RESULT + "WHERE" + TOP_ID + "=" + "1" + "AND" + USER_NAME + "=" + user;

    Log.e(LOG, qry3);

    SQLiteDatabase db = this.getReadableDatabase();

    Cursor c = db.rawQuery(qry3, null);

    if (c.moveToFirst()) {
        do {
            Result result = new Result();
            result.setResultID(c.getInt(c.getColumnIndex(RESULT_ID)));
            result.setUserName(c.getString(c.getColumnIndex(USER_NAME)));
            result.setAverage(c.getString(c.getColumnIndex(AVERAGE)));
            result.setTopicID(c.getString(c.getColumnIndex(TOP_ID)));

            results.add(result);
        } while (c.moveToNext());
    }

    return results;
}
Run Code Online (Sandbox Code Playgroud)

Rei*_*ica 5

我认为你的concat代码有问题

String qry3 = "SELECT * FROM " + TABLE_RESULT + "WHERE" + TOP_ID + "=" + "1" + "AND" + USER_NAME + "=" + user;
Run Code Online (Sandbox Code Playgroud)

我想你应该之间添加空间TABLE_RESULTWHERE后和空间"WHERE"和同样适用于cocat的AND.另外,如果你USER_NAME是一个字符串,你需要把它放在'

String qry3 = "SELECT * FROM " + TABLE_RESULT + " WHERE " + TOP_ID + "=" + "1" + " AND " + USER_NAME + "='" + user +"'";
Run Code Online (Sandbox Code Playgroud)