我正在制作一个需要您输入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号上的信息。
答案 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列)。
您要做什么以及如何做取决于不属于所问问题的代码,因此,如果您对此方面有疑问,则应该提出另一个问题。