在我的Android应用程序中,我试图通过将一个参数传递给where子句来获取数据库中的值,但它始终返回null ...并且logcat中没有错误... 我似乎无法弄清楚这里有什么问题?
请帮忙!
我调用数据库函数的代码:
appmname=mDbHelper.getMname(appName);
applname=mDbHelper.getLname(appmname);
customername=appName+appmname+applname;
// app_formno=mDbHelper.getAppno(settings.getString("ap_First_Name", ""));
s=mDbHelper.fetchDetails(appName);
s=mDbHelper.getMainData(customername);
这些是返回数据库值的函数:
public String getMname(String fname)
{
String mname = null;
try
{
String sql="select app_mname from lnt_data_table where app_fname = '"+fname+"'";
Cursor c=mDb.rawQuery(sql, null);
if (c != null) {
c.moveToFirst();
while (!c.isAfterLast()) {
mname=c.getString(0);
}
c.close();
}
}
catch(Exception e)
{
e.printStackTrace();
}
return mname;
}
public String getLname(String mname)
{
String lname = null;
try
{
String sql="select app_lname from lnt_data_table where app_mname= '"+mname+"'";
Cursor c=mDb.rawQuery(sql, null);
if (c != null) {
c.moveToLast();
while (c.isBeforeFirst() != true) {
lname=c.getString(0);
}
c.close();
}
}
catch(Exception e)
{
e.printStackTrace();
}
return lname;
}
如果我给这个祝酒词消息
Toast.makeText(ListViewDetails.this,appName+ appmname +applname, Toast.LENGTH_LONG).show();
当数据库中包含值时返回null!
答案 0 :(得分:2)
尝试使用此格式调用光标并关闭它
if (cursor != null) {
if (cursor.moveToFirst()) {
do {
//your code
}
while (cursor.moveToNext());
}
cursor.close();
希望有所帮助:)
答案 1 :(得分:1)
我认为你在实际从中得到任何东西之前都要移到cursor
的末尾。尝试将c.moveToLast();
更改为c.moveToFirst()
,然后在while循环中将while (c.isBeforeFirst())
更改为while(!c.isAfterLast())
您当前正在移动到光标的末尾,然后检查它是否位于第一个条目之前的位置......这是不可能的。可能是为什么你没有得到任何回报