2016-01-21 91 views
0

每当我运行它时,应用程序强制关闭。当我检查logcat时,这是不断弹出的错误。SQLiteException:接近“=”:语法错误(代码1):(关闭)

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) 

这是我的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; 
} 
+1

变化'“和”'和'” AND“' – Blackbelt

+1

当你是一个绝对的初学者时,这是一个最常犯的错误。 – Yogesh

回答

5

我觉得有问题,你的CONCAT代码

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

我想你应该在“WHERE”后TABLE_RESULTWHERE和空间之间增加的空间和同样适用于cocat为AND。 另外,如果您USER_NAME是一个字符串,你就需要把它里面' 喜欢的东西引号内

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

我改变了它,但这里的日志猫: 没有这样的列:user1(code 1):,while compiling:SELECT * FROM tblresults WHERE topid = 1 AND usname = user1 – user2204221

+1

@ user2204221 may be you have not usname列在您的数据库。清楚地检查你的桌子。 –

+0

当我用来获取表中的所有列时,数据就在那里,但是当我试图询问特定列时,它一直出现错误 – user2204221

4

认沽差距文本:

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

我改变了它,但这里的日志猫:没有这样的列:user1(代码1):,编译时:SELECT * FROM tblresults WHERE topid = 1和usname = user1 – user2204221

相关问题