0

在我的 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 !

4

2 回答 2

2

尝试这种格式来调用光标并关闭它

    if (cursor != null) {

      if (cursor.moveToFirst()) {

          do {
                       //your code

              }

           while (cursor.moveToNext());

         }

  cursor.close();

希望能帮助到你 :)

于 2013-06-24T09:02:17.077 回答
1

cursor我认为你在真正从中得到任何东西之前已经走到了尽头。尝试更改c.moveToLast();c.moveToFirst(),然后在 while 循环中更改while (c.isBeforeFirst())while(!c.isAfterLast())

您当前正在移动到光标的末尾,然后检查它是否在第一个条目之前的位置……这有点不可能。可能是为什么你没有得到任何回报

于 2013-06-24T08:53:35.263 回答