【发布时间】:2013-11-04 19:48:06
【问题描述】:
我在 android sqlite 中创建表。 我的表是类别:
db.execSQL("CREATE TABLE IF NOT EXISTS category (id_category INTEGER PRIMARY KEY AUTOINCREMENT,sub INT(5),name VARCHAR ,father INT(5), income_bool INT(1));");
现在我创建一个变量:
String a="بنزین"
我成功插入一行(波斯名称)并在列表视图中显示;
> But when i select i have errors: String ROW3 = "SELECT * FROM category
> WHERE name=" + a;
>Cursor cursor = db.rawQuery(ROW3, null);
>cursor.moveToFirst();
>Log.d("ghable vorod be for", "sa");
>for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext())
{
Log.d("ghable vorod be for1", "sa");
cat_id=(cursor.getColumnIndex("id_category"));
Log.d("ghable vorod be for2", "sa");
}
但我在 logcat 中有这个错误:
sqlite 返回:错误代码 = 1,msg = 没有这样的列:بنزین
关闭虚拟机
线程以未捕获的异常退出(组=0x40015560) E/AndroidRuntime(28713): 致命异常: main
android.database.sqlite.SQLiteException: 没有这样的列: بنزین: , 编译时:SELECT * FROM category WHERE name=بنزین
09-30 15:28:17.358: E/AndroidRuntime(28713): 在 android.database.sqlite.SQLiteCompiledSql.native_compile(Native 方法) 09-30 15:28:17.358: E/AndroidRuntime(28713): at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92) 09-30 15:28:17.358: E/AndroidRuntime(28713): 在 android.database.sqlite.SQLiteCompiledSql.(SQLiteCompiledSql.java:65) 09-30 15:28:17.358: E/AndroidRuntime(28713): 在 android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:83) 09-30 15:28:17.358: E/AndroidRuntime(28713): 在 android.database.sqlite.SQLiteQuery.(SQLiteQuery.java:49) 09-30 15:28:17.358:E/AndroidRuntime(28713):在 android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42) 09-30 15:28:17.358: E/AndroidRuntime(28713): 在 android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1356) 09-30 15:28:17.358: E/AndroidRuntime(28713): 在 android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1324) 09-30 15:28:17.358: E/AndroidRuntime(28713): 在 com.example.hesabdar.New_income.onClick(New_income.java:174) 09-30 15:28:17.358:E/AndroidRuntime(28713):在 android.view.View.performClick(View.java:2485) 09-30 15:28:17.358: E/AndroidRuntime(28713):在 android.view.View$PerformClick.run(View.java:9080) 09-30 15:28:17.358: E/AndroidRuntime(28713):在 android.os.Handler.handleCallback(Handler.java:587) 09-30 15:28:17.358:E/AndroidRuntime(28713):在 android.os.Handler.dispatchMessage(Handler.java:92) 09-30 15:28:17.358:E/AndroidRuntime(28713):在 android.os.Looper.loop(Looper.java:123) 09-30 15:28:17.358: E/AndroidRuntime(28713):在 android.app.ActivityThread.main(ActivityThread.java:3683) 09-30 15:28:17.358:E/AndroidRuntime(28713):在 java.lang.reflect.Method.invokeNative(Native Method) 09-30 15:28:17.358:E/AndroidRuntime(28713):在 java.lang.reflect.Method.invoke(Method.java:507) 09-30 15:28:17.358: E/AndroidRuntime(28713):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 09-30 15:28:17.358: E/AndroidRuntime(28713): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 09-30 15:28:17.358:E/AndroidRuntime(28713):在 dalvik.system.NativeStart.main(本机方法)09-30 15:33:17.468: I/Process(28713):发送信号。 PID:28713 SIG:9
【问题讨论】:
-
你有一个 SQL 注入漏洞。
标签: java android sqlite select persian