我有一个小型数据库应用程序。例如,它要求用户输入代码 1A1 来搜索 Db。
如果我对 sql 命令进行硬编码,它将找到该行。
Cursor c=db.rawQuery("SELECT * from emdcode WHERE code = '1A1'",null);
在我的布局上,我有一个用于用户输入的文本框
<EditText
android:id="@+id/codelookup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView1"
android:layout_alignBottom="@+id/textView1"
android:layout_alignParentRight="true"
android:layout_toRightOf="@+id/button3"
android:ems="10" >
<requestFocus />
</EditText>
我的问题> 如何编写 SQL 来搜索用户输入?
我已经在 Java 中做到了这一点
private void SrchCodeActionPerformed(java.awt.event.ActionEvent evt)
{
String sql = "SELECT * FROM emdcodes WHERE Codes like ?";
try
{
ps = conn.prepareStatement(sql);
ps.setString(1, EMDCODELOOKUP.getText() + "%");
rs = ps.executeQuery();
ResultsTable.setModel(DbUtils.resultSetToTableModel(rs));
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null, e);
}
}
所以我假设 SQLite 是相似的
我努力了
Cursor c=db.rawQuery("SELECT * from emdcode WHERE code = codelookup",null);
Cursor c=db.rawQuery("SELECT * from emdcode WHERE code = ?",null);
任何建议或指导都会很棒。谢谢
更新
使用光标时 c=db.rawQuery("SELECT * from emdcode WHERE code = ?", new String[]{"codelookup"}); 我得到一个空结果集。这是 logcat 文件:
07-31 00:10:34.735: E/Trace(1765): error opening trace file: No such file or directory (2)
07-31 00:10:38.645: E/AndroidRuntime(1765): 致命异常: main 07-31 00:10:38.645: E/AndroidRuntime(1765): java.lang.IllegalStateException: 无法执行活动 07 的方法-31 00:10:38.645: E/AndroidRuntime(1765): 在 android.view.View$1.onClick(View.java:3599) 07-31 00:10:38.645: E/AndroidRuntime(1765): 在 android. view.View.performClick(View.java:4204) 07-31 00:10:38.645: E/AndroidRuntime(1765): 在 android.view.View$PerformClick.run(View.java:17355) 07-31 00: 10:38.645: E/AndroidRuntime(1765): 在 android.os.Handler.handleCallback(Handler.java:725) 07-31 00:10:38.645: E/AndroidRuntime(1765): 在 android.os.Handler.dispatchMessage (Handler.java:92) 07-31 00:10:38.645: E/AndroidRuntime(1765): 在 android.os.Looper.loop(Looper.java:137) 07-31 00:10:38.645: E/AndroidRuntime (1765):在 android.app.ActivityThread。main(ActivityThread.java:5041) 07-31 00:10:38.645: E/AndroidRuntime(1765): at java.lang.reflect.Method.invokeNative(Native Method) 07-31 00:10:38.645: E/AndroidRuntime (1765): 在 java.lang.reflect.Method.invoke(Method.java:511) 07-31 00:10:38.645: E/AndroidRuntime(1765): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller。运行(ZygoteInit.java:793)07-31 00:10:38.645:E/AndroidRuntime(1765):在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)07-31 00:10: 38.645: E/AndroidRuntime(1765): at dalvik.system.NativeStart.main(Native Method) 07-31 00:10:38.645: E/AndroidRuntime(1765): 由: java.lang.reflect.InvocationTargetException 07-31 00:10:38.645: E/AndroidRuntime(1765): 在 java.lang.reflect.Method.invokeNative(Native Method) 07-31 00:10:38.645: E/AndroidRuntime(1765): 在 java.lang.reflect。方法。调用(Method.java:511) 07-31 00:10:38.645: E/AndroidRuntime(1765): at android.view.View$1.onClick(View.java:3594) 07-31 00:10:38.645: E /AndroidRuntime(1765): ... 11 more 07-31 00:10:38.645: E/AndroidRuntime(1765): Caused by: java.lang.IllegalArgumentException: 索引 1 处的绑定值为 null 07-31 00:10 :38.645: E/AndroidRuntime(1765): 在 android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:164) 07-31 00:10:38.645: E/AndroidRuntime(1765): 在 android.database.sqlite。 SQLiteProgram.bindAllArgsAsStrings(SQLiteProgram.java:200) 07-31 00:10:38.645: E/AndroidRuntime(1765): 在 android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47) 07-31 00:10: 38.645: E/AndroidRuntime(1765): 在 android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314) 07-31 00:10:38.645:E/AndroidRuntime(1765): 在 android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253) 07-31 00:10:38.645: E/AndroidRuntime(1765): 在 com.example.studentdatabase.MainActivity.showdata (MainActivity.java:47) 07-31 00:10:38.645: E/AndroidRuntime(1765): ... 14 更多 07-31 00:11:55.095: E/Trace(1839): 打开跟踪文件时出错:否这样的文件或目录 (2) 07-31 00:20:08.084: E/Trace(2020): 打开跟踪文件时出错: 没有这样的文件或目录 (2) 07-31 00:20:16.915: E/AndroidRuntime(2020) ): 致命异常: main 07-31 00:20:16.915: E/AndroidRuntime(2020): java.lang.IllegalStateException: 无法执行活动的方法 07-31 00:20:16.915: E/AndroidRuntime(2020) : 在 android.view.View$1.onClick(View.java:3599) 07-31 00:20:16.915: E/AndroidRuntime(2020): 在 android.view.View.performClick(View.java:4204) 07- 31 00:20:16.915: E/AndroidRuntime(2020): 在 android.view.View$PerformClick.run(View.java:17355) 07-31 00:20:16.915: E/AndroidRuntime(2020): 在 android.os.Handler.handleCallback (Handler.java:725) 07-31 00:20:16.915: E/AndroidRuntime(2020): 在 android.os.Handler.dispatchMessage(Handler.java:92) 07-31 00:20:16.915: E/AndroidRuntime (2020): 在 android.os.Looper.loop(Looper.java:137) 07-31 00:20:16.915: E/AndroidRuntime(2020): 在 android.app.ActivityThread.main(ActivityThread.java:5041) 07-31 00:20:16.915: E/AndroidRuntime(2020): at java.lang.reflect.Method.invokeNative(Native Method) 07-31 00:20:16.915: E/AndroidRuntime(2020): at java.lang .reflect.Method.invoke(Method.java:511) 07-31 00:20:16.915: E/AndroidRuntime(2020): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 07-31 00:20:16.915:E/AndroidRuntime(2020): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 07-31 00:20:16.915: E/AndroidRuntime(2020): 在 dalvik.system.NativeStart.main (本机方法)07-31 00:20:16.915:E/AndroidRuntime(2020):原因:java.lang.reflect.InvocationTargetException 07-31 00:20:16.915:E/AndroidRuntime(2020):在 java.lang .reflect.Method.invokeNative(Native Method) 07-31 00:20:16.915: E/AndroidRuntime(2020): at java.lang.reflect.Method.invoke(Method.java:511) 07-31 00:20: 16.915: E/AndroidRuntime(2020): at android.view.View$1.onClick(View.java:3594) 07-31 00:20:16.915: E/AndroidRuntime(2020): ... 11 更多 07-31 00 :20:16.915:E / AndroidRuntime(2020):引起:java.lang.IllegalArgumentException:索引1处的绑定值为null 07-31 00:20:16.915:E / AndroidRuntime(2020):在android.database。 sqlite。SQLiteProgram.bindString(SQLiteProgram.java:164) 07-31 00:20:16.915: E/AndroidRuntime(2020): 在 android.database.sqlite.SQLiteProgram.bindAllArgsAsStrings(SQLiteProgram.java:200) 07-31 00:20: 16.915: E/AndroidRuntime(2020): 在 android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47) 07-31 00:20:16.915: E/AndroidRuntime(2020): 在 android.database.sqlite.SQLiteDatabase .rawQueryWithFactory(SQLiteDatabase.java:1314) 07-31 00:20:16.915: E/AndroidRuntime(2020): 在 android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253) 07-31 00:20:16.915 : E/AndroidRuntime(2020): at com.example.studentdatabase.MainActivity.showdata(MainActivity.java:47) 07-31 00:20:16.915: E/AndroidRuntime(2020): ... 14 更多 07-31 00 :32:07.675:E / Trace(2296):打开跟踪文件时出错:没有这样的文件或目录 (2) 07-31 00:33:22.405: E/Trace(2377): 打开跟踪文件时出错:没有这样的文件或目录 (2)