【发布时间】:2016-04-07 13:11:46
【问题描述】:
我正在创建一个应用程序,用户可以在其中使用用户通过编辑文本框提供的输入来搜索数据库。我将它们作为字符串参数传递给数据库文件进行查询,我收到错误。附加代码
这是按钮点击监听器,自动命名为 Autotextview
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyDatabase m =new MyDatabase(getActivity());
Cursor c=m.searchname(autoname.getText().toString());
simpleCursorAdapter = new SimpleCursorAdapter(getActivity(), R.layout.custom_layout_row, c,
new String[]{"_id", "name", "phone", "email", "subject"},
new int[]{R.id.rownumber, R.id.rowname, R.id.rowphone, R.id.rowmail, R.id.rowsubject}, 0);
listView.setAdapter(simpleCursorAdapter);
}
});
这是Mydatabase.java(数据库文件)中的代码
public Cursor searchname(String argument) {
Cursor cursor = null;
cursor = s.query("student", null, "name=?", new String[]{argument}, null, null, null);
return cursor;
}
我在查询字符串中遇到错误
如果我运行原始查询
Cursor cursor = db.rawQuery("select * from student where name =?", new String[]{argument});
我收到了这个错误:
java.lang.NullPointerException:尝试调用虚拟方法 'android.database.Cursor android.database.sqlite.SQLiteDatabase.rawQuery(java.lang.String, java.lang.String[])' 在空对象引用上 com.techpalle.miniproject.MyDatabase.searchname(MyDatabase.java:107) 在 com.techpalle.miniproject.SearchFragment$2.onClick(SearchFragment.java:71)
【问题讨论】:
-
你可以尝试运行原始查询 Cursor cursor = db.rawQuery("select * from student where name =?", new String[]{argument});
-
也报错。
-
java.lang.NullPointerException: 尝试调用虚拟方法 'android.database.Cursor android.database.sqlite.SQLiteDatabase.rawQuery(java.lang.String, java.lang.String[])'在 com.techpalle.miniproject.SearchFragment$2.onClick(SearchFragment.java:71) 的 com.techpalle.miniproject.MyDatabase.searchname(MyDatabase.java:107) 的空对象引用上
-
你能把错误贴在这里吗
-
写 SQLiteDatabase s = this.getWritableDatabase(); Cursor cursor = s.rawQuery("select * from student where name =?", new String[]{argument});
标签: android database sqlite parameter-passing