使用SQLite android中作为参数传递的变量查询数据库



我正在创建一个应用程序,用户可以在其中使用用户通过编辑文本框提供的输入搜索数据库。我将它们作为字符串参数传递到数据库文件中进行查询,但我遇到了错误。附加代码

这是按钮点击监听器,autoname是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.Cursorandroid.database.sqlite.SQLiteDatabase.rawQuery(java.lang.String,java.lang.String[])'com.techpall.miniproject.MyDatabase.searchname(MyDatabase.java:107)在com.techpall.minproject.SearchFragment$2.onClick(SearchFragment.java:71)

错误表明您正试图在null对象上运行rawQuery:)这意味着你的s为null:)在执行任何查询之前,你应该获得一个可写的数据库引用:)

所以你可以试试这个:)

public Cursor searchname(String argument) {
     Cursor cursor = null;
     SQLiteDatabase s = this.getWritableDatabase(); 
     Cursor cursor = s.rawQuery("select * from student where name =?", new String[]{argument});
     return cursor;
}

让我知道你是否还有这个问题:)快乐的编码伙伴:)

相关内容

  • 没有找到相关文章

最新更新