2012-12-24 32 views
0

在我的應用程序中,我想獲取特定行的id。我使用下面的代碼:在android中獲取SQLite行的id

public String getid(String heading) throws SQLException 
    { 
     System.out.println("ddbpos="+heading); 
     long recc=0; 
     String rec=null; 
     Cursor mCursor = db.rawQuery(
       "SELECT id FROM savedstoriestable WHERE heading="+heading , null); 
    if (mCursor != null) 
    { 
    mCursor.moveToFirst(); 
    recc=mCursor.getLong(0); 
    rec=String.valueOf(recc); 
    } 
    return rec; 
    } 

我的數據庫看起來是這樣的:

id  heading            Description          
1  Congress countdown for 2014 polls:     ghdfsfdghsdjfsdfhds 
     Possibility of UPA-III hinges on how other   

但它顯示 「Force to close」 錯誤:

我的logcat如下:

12-24 12:02:10.733: E/AndroidRuntime(22030): Uncaught handler: thread main exiting due to uncaught exception 
12-24 12:02:10.804: E/AndroidRuntime(22030): android.database.sqlite.SQLiteException: near "countdown": syntax error: , while compiling: SELECT id FROM savedstoriestable WHERE heading=Congress countdown for 2014 polls: Possibility of UPA-III hinges on how other parties fare 
12-24 12:02:10.804: E/AndroidRuntime(22030): at android.database.sqlite.SQLiteProgram.native_compile(Native Method) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at android.database.sqlite.SQLiteProgram.compile(SQLiteProgram.java:110) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:49) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:49) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1221) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1194) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at com.newspaper.DBadapter.getid(DBadapter.java:104) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at com.newspaper.SavedStoriesActivity.onOptionsItemSelected(SavedStoriesActivity.java:72) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at android.app.Activity.onMenuItemSelected(Activity.java:2170) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:730) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:139) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:525) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at android.view.View.onTouchEvent(View.java:4179) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at android.widget.TextView.onTouchEvent(TextView.java:6541) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at android.view.View.dispatchTouchEvent(View.java:3709) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at android.view.ViewRoot.handleMessage(ViewRoot.java:1691) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at android.os.Looper.loop(Looper.java:123) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at android.app.ActivityThread.main(ActivityThread.java:4363) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at java.lang.reflect.Method.invokeNative(Native Method) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at java.lang.reflect.Method.invoke(Method.java:521) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
12-24 12:02:10.804: E/AndroidRuntime(22030): at dalvik.system.NativeStart.main(Native Method) 

幫我解決這個問題。提前致謝。

回答

6

試試這個:

Cursor mCursor = db.rawQuery(
       "SELECT id FROM savedstoriestable WHERE heading= '"+heading+"'" , null); 

標題是一個字符串。所以你必須把它放在裏面。

+1

哦,我的上帝..我原諒這個簡單的事情..謝謝很多.. – Subburaj

+0

@Subburaj,如果答案幫助你,隨時接受。 – thepoosh