2012-07-04 16 views
5

Tôi đang cố gắng lấy lại dữ liệu từ cơ sở dữ liệu sqlite android nhưng ngoại lệ givine của nó không có cột như vậy: android.database.sqlite.SQLiteException: không có cột như vậy: aa:, trong khi biên dịch: Chọn Tên từ stud Địa chỉ Address = aa


Sqlite Chọn Query là -:

c=db.rawQuery("Select Name from stud Where Address="+a,null); 


Ngoại lệ: -

07-04 18:07:00.888: I/Database(648): sqlite returned: error code = 1, msg = no such column: aa 
07-04 18:07:00.910: D/AndroidRuntime(648): Shutting down VM 
07-04 18:07:00.910: W/dalvikvm(648): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
07-04 18:07:00.948: E/AndroidRuntime(648): FATAL EXCEPTION: main 
07-04 18:07:00.948: E/AndroidRuntime(648): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my.StudentInfoManagement/com.my.StudentInfoManagement.ListData}: android.database.sqlite.SQLiteException: no such column: aa: , while compiling: Select Name from stud Where Address=aa 
07-04 18:07:00.948: E/AndroidRuntime(648): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
07-04 18:07:00.948: E/AndroidRuntime(648): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
07-04 18:07:00.948: E/AndroidRuntime(648): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
07-04 18:07:00.948: E/AndroidRuntime(648): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
07-04 18:07:00.948: E/AndroidRuntime(648): at android.os.Handler.dispatchMessage(Handler.java:99) 
07-04 18:07:00.948: E/AndroidRuntime(648): at android.os.Looper.loop(Looper.java:123) 
07-04 18:07:00.948: E/AndroidRuntime(648): at android.app.ActivityThread.main(ActivityThread.java:3683) 
07-04 18:07:00.948: E/AndroidRuntime(648): at java.lang.reflect.Method.invokeNative(Native Method) 
07-04 18:07:00.948: E/AndroidRuntime(648): at java.lang.reflect.Method.invoke(Method.java:507) 
07-04 18:07:00.948: E/AndroidRuntime(648): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
07-04 18:07:00.948: E/AndroidRuntime(648): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
07-04 18:07:00.948: E/AndroidRuntime(648): at dalvik.system.NativeStart.main(Native Method) 
07-04 18:07:00.948: E/AndroidRuntime(648): Caused by: android.database.sqlite.SQLiteException: no such column: aa: , while compiling: Select Name from stud Where Address=aa 
07-04 18:07:00.948: E/AndroidRuntime(648): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method) 
07-04 18:07:00.948: E/AndroidRuntime(648): at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92) 
07-04 18:07:00.948: E/AndroidRuntime(648): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:65) 
07-04 18:07:00.948: E/AndroidRuntime(648): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:83) 
07-04 18:07:00.948: E/AndroidRuntime(648): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:49) 
07-04 18:07:00.948: E/AndroidRuntime(648): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42) 
07-04 18:07:00.948: E/AndroidRuntime(648): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1356) 
07-04 18:07:00.948: E/AndroidRuntime(648): at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1324) 
07-04 18:07:00.948: E/AndroidRuntime(648): at com.my.StudentInfoManagement.DataHelper.show(DataHelper.java:86) 
07-04 18:07:00.948: E/AndroidRuntime(648): at com.my.StudentInfoManagement.ListData.onCreate(ListData.java:19) 
07-04 18:07:00.948: E/AndroidRuntime(648): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
07-04 18:07:00.948: E/AndroidRuntime(648): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
07-04 18:07:00.948: E/AndroidRuntime(648): ... 11 more 
07-04 18:07:03.140: I/Process(648): Sending signal. PID: 648 SIG: 9 

Trả lời

13

Điều này đơn giản chỉ vì truy vấn sql của bạn sai. Khi truy vấn một văn bản, bạn cần phải thêm dấu nháy đơn xung quanh chuỗi truy vấn.

dòng bạn nên đọc:

c=db.rawQuery("Select Name from stud Where Address='"+a+"'",null); 
+0

sự cố có trong Địa chỉ! Đây là hàm dựng sẵn trong SQL, nó không thể là tên cột! –

+0

Xin lỗi, tôi nghĩ bạn nhầm. Địa chỉ chưa bao giờ được và sẽ không bao giờ có trong bất kỳ thực thi SQL nào một từ dành riêng. Trường hợp sử dụng cơ bản nhất để sử dụng SQL là lưu trữ mọi người và địa chỉ của họ. Nó sẽ thực sự ngu ngốc để làm cho ADDRESS một từ dành riêng. – Yahel

+0

Tôi vừa thử nghiệm điều này và khi tôi gõ địa chỉ trong truy vấn SQL nó là màu xanh, vậy tại sao nó là màu xanh nếu nó không phải là từ dành riêng! –

0

Nếu bạn đang sử dụng string sau đó bạn phải thể hiện nó trong dấu nháy đơn như:

Cursor cursor = db.rawQuery("SELECT '"+WINNER+"' FROM '"+TABLE.trim()+"' WHERE 
     country1='"+c1.trim()+"' AND Country2='"+c2.trim()+"'", null); 

Nếu bạn đang đại diện cho một giá trị int sau đó bạn có thể chỉ cần sử dụng như sau: +num+

Các vấn đề liên quan