0

私のAndroidアプリでは、1つのパラメーターを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実際に何かを得る前に、あなたは終わりに向かっていると思います。に変更してから、while ループで変更c.moveToLast();してみてください。c.moveToFirst()while (c.isBeforeFirst())while(!c.isAfterLast())

現在、カーソルの最後に移動してから、最初のエントリの前の位置にあるかどうかを確認しています...これはちょっと不可能です。何も返ってこない理由はおそらく

于 2013-06-24T08:53:35.263 に答える