巽诹 2022-12-11 15:33 采纳率: 54.5%
浏览 113
已结题

Android sqlite数据库读取问题

问题遇到的现象和发生背景

在实现读取写好的sqlite数据表并显示到AlertDialog对话框时读取错误

遇到的现象和发生背景,请写出第一个错误信息

(获取两个EditText中用户输入的数据,并且根据输入的数据去查询)

img

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%

用户输入的部分以及查询的部分如下

Button chaxunneirong = findViewById(R.id.chaxun_button);
        EditText editText1 = findViewById(R.id.chaxunkuang_1);
        EditText editText2 = findViewById(R.id.chengshikuang_1);
        chaxunneirong.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String chaxundata = editText1.getText().toString();//用户内容输入获取
                String chaxundata1 = editText2.getText().toString();
                SQLiteDatabase db = dbHelper.getWritableDatabase();//获取数据库对象
                Cursor cursor = db.rawQuery("select * from fenlei where shi = ? and (mingzi like ? or leibie like ?)",new String[]{chaxundata1,"%"+chaxundata+"%","%"+chaxundata+"%"},null);
                String massage_1 = null;
                String massage_2 = null;
                String massage_3 = null;
                String massage_4 = null;
                if (cursor.moveToFirst()) {
                    do {
                        massage_1 = cursor.getString(cursor.getColumnIndexOrThrow("shi"));
                        massage_2 = cursor.getString(cursor.getColumnIndexOrThrow("leibie"));
                        massage_3 = cursor.getString(cursor.getColumnIndexOrThrow("mingzi"));
                        massage_4 = cursor.getString(cursor.getColumnIndexOrThrow("caizhi"));
                    } while (cursor.moveToNext());
                }
                cursor.close();
                //将获取的内容显示到对话框
                AlertDialog alertDialog1 = new AlertDialog.Builder(chaxun.this)
                        .setTitle(chaxundata)//标题
                        .setMessage(massage_1 + " " + massage_2 + " " + massage_3 + " " + massage_4)//内容
                        .setIcon(R.mipmap.ic_launcher)//图标
                        .create();
                alertDialog1.show();
            }

运行结果及详细报错内容

使用sqlite expert查询时没有问题

img

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

下面是已经写好的数据

img

尝试过使用query以及rawQuery两种方法,sqlite expert对数据库操作没有任何问题,但Android studio这查询时就出现问题

  • 写回答

4条回答 默认 最新

  • 不会写代码的猴子 Android领域优质创作者 2022-12-11 16:14
    关注
    
    new String[]{chaxundata1,"%"+chaxundata+"%","%"+chaxundata+"%"}
    

    你最好把这个打印出来看看,是不是合法的数据库查询语句呢?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月11日
  • 已采纳回答 12月11日
  • 赞助了问题酬金15元 12月11日
  • 创建了问题 12月11日

悬赏问题

  • ¥20 关于#windows#的问题,请各位专家解答!(相关搜索:服务器)
  • ¥30 使用C++实现ATM系统
  • ¥20 求帮,直连能连上oracle12,但是thinkphp6就是报错
  • ¥15 paddleocr运行报错
  • ¥15 怎么用 matlab 设计滞后-超前串联校正网络
  • ¥15 MFC引用C#生成的dll,将dll放置到非exe程序目录,如何操作
  • ¥15 C#创建webservice接口,三方通过多次跳转访问本方服务,获取wsdl文档,wsdl中ip地址为局域网内本机地址而非三方直接访问的地址。
  • ¥15 关于#wireshark#的问题:需要安卓app流量数据集要安卓流量做包序列长度的实验,比如某些流量是在看视频还是在发评论
  • ¥15 Smail语句如何使用判断语句跳过验证卡密界面
  • ¥15 关于#wireshark#的问题:并且能够给数据做标注,如这个流量是在看视频或者是在转账