Android 如果光标为空或null,如何继续
我有一个sqlite数据库,我想查询和检索一些值(如果它们存在的话),以防它们不存在 对于这只海豚,我有下一个代码,它将调用一个函数来创建光标,如果光标不是空的,它将检索edittext中的信息,否则它将发出祝酒词:Android 如果光标为空或null,如何继续,android,sqlite,cursor,Android,Sqlite,Cursor,我有一个sqlite数据库,我想查询和检索一些值(如果它们存在的话),以防它们不存在 对于这只海豚,我有下一个代码,它将调用一个函数来创建光标,如果光标不是空的,它将检索edittext中的信息,否则它将发出祝酒词: private String lookforelementID() { // TODO Auto-generated method stub int ElementRequest=0; ElementRequest = Integer.parseInt(eTE
private String lookforelementID() {
// TODO Auto-generated method stub
int ElementRequest=0;
ElementRequest = Integer.parseInt(eTElementNumb.getText().toString());
try{
database db = new database(this);
db.open();
String passedReg = getIntent().getStringExtra(MainActivity.ID_STUDY);
String returnedInfo1 = db.elementID(ElementRequest, passedReg, 0);
if (returnedInfo1.matches("")){
Toast.makeText(getApplicationContext(), "No Exist this Element", Toast.LENGTH_SHORT).show();
}else{
eTIDElement.setText(returnedInfo1);
String returnedInfo2 = db.elementID(ElementRequest, passedReg, 2);
eTElementCode.setText(returnedInfo2);
String returnedInfo3 = db.elementID(ElementRequest, passedReg, 3);
eTElementDecription.setText(returnedInfo3);
}
db.close();
}catch(ClassCastException e){
e.printStackTrace();
}
eTElementNumb.setText("");
return null;
}
带有光标的函数如下所示:
public String elementID(int elementRequest, String idStudy, int i) {
// TODO Auto-generated method stub
String[] columns = new String[]{ KEY_ROWELEMENTID, KEY_STUDYID, KEY_ELEMENTCODE, KEY_ELEMENTNAME};
Cursor c = ourDatabase.query(DATABASE_TABLEELEMENTS, columns, KEY_ELEMENTCODE + "=" + elementRequest + " AND " + KEY_STUDYID + "=" + idStudy, null, null, null, null);
String ElementInformation = null;
if(c != null){
c.moveToFirst();
ElementInformation = c.getString(i);
}
return ElementInformation;
}
通过以下行声明并初始化
光标
:
Cursor c=ourDatabase.query(数据库\u表元素、列、键\u元素代码+“=”+elementRequest+”和“+KEY\u STUDYID+”=”+idStudy,null,null,null)代码>
这意味着它不能为null
(如果'ourDatabase'为null或无法访问,NullPointerException
或其他类型的异常将被抛出)。因此,您不需要检查光标是否为null
如何确定光标是空的还是(如果不是)列值是空的
您可以利用以下事实:moveToFirst()
以及isNull()
返回boolean
值:
String ElementInformation = null;
if(c.moveToFirst() && ! c.isNull(i))
{
ElementInformation = c.getString(i);
}
return ElementInformation;
这样,如果光标
为空,或者如果有一行与搜索条件匹配,但列“i”的值为null,则方法elementID()
将返回null
当然,现在您必须相应地评估返回值:
String returnedInfo1 = db.elementID(ElementRequest, passedReg, 0);
if (returnedInfo1 == null){
Toast.makeText(getApplicationContext(), "No Exist this Element", Toast.LENGTH_SHORT).show();
}
else{
// ... do something else ...
}
这里的问题是什么?您刚才提到了它应该做什么,而不是实际发生的事情。Cursor.getCount()==0表示Cursor为空。