Android(sqlite)如何使用where子句查看数据?

时间:2019-05-11 22:09:51

标签: android android-sqlite

我正在制作一个需要您输入ID的应用程序,如果该ID中存储了数据,它将通过alertdialog显示。我的问题是,当我单击[查看输入的ID号]时,如果有数据,什么都不会发生,但是当我单击[查看所有数据]时,将显示每个存储的ID和信息。

我的DatabaseHelper查询: (COL_1)是ID

public Cursor getOneData(String id){
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor result = db.rawQuery("select * from " +TABLE_NAME+ " where " +COL_1+ " = ? ",new String[]{id});
        return result;
    }

我的查看按钮代码: (txtNum是ID的EditText)


        btnView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Cursor res = myDb.getOneData(txtNum.getText().toString());
                if(res.getCount()==0){
                    showMessage("Error","Nothing found");
                    return;
                }
                StringBuffer buffer = new StringBuffer();
                while(res.moveToNext()){
                    buffer.append("ID: "+ res.getString(0)+"\n");
                    buffer.append("Name: "+ res.getString(1)+"\n");
                    buffer.append("Surname: "+ res.getString(2)+"\n");
                    buffer.append("Marks: "+ res.getString(3)+"\n\n");
                }
            }
        });

单击查看按钮时,我希望输出显示输入的ID号上的信息。

1 个答案:

答案 0 :(得分:0)

简而言之,您告诉它在提取一行时不执行任何操作,您要做的就是将值保存到String缓冲区对象调用缓冲区中。返回之前,您对这些数据不执行任何操作,因此提取的数据会丢失,因为缓冲区对象不再存在。

如果您这样做(例如):

    btnView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Cursor res = myDb.getOneData(txtNum.getText().toString());
            if(res.getCount()==0){
                showMessage("Error","Nothing found");
                return;
            }
            StringBuffer buffer = new StringBuffer();
            while(res.moveToNext()){
                buffer.append("ID: "+ res.getString(0)+"\n");
                buffer.append("Name: "+ res.getString(1)+"\n");
                buffer.append("Surname: "+ res.getString(2)+"\n");
                buffer.append("Marks: "+ res.getString(3)+"\n\n");
            }
            Toast.makeText(v.getContext(),"Here is my data:- " + buffer.toString(),Toast.LENGTH_SHORT).show(); //<<<<<<<<<< ADDED
        }
    });

然后在短时间内显示提取的数据。

您可能想对提取的数据做其他事情,以上只是演示将要提取数据的示例(假设查询提取了4列)。

您要做什么以及如何做取决于不属于所问问题的代码,因此,如果您对此方面有疑问,则应该提出另一个问题。