2013-06-24 55 views
0

数据库查询返回null在我的Android应用程序试图通过将一个参数传递给where子句从数据库获取值,但它总是返回null ...并且在logcat中没有错误.. 。 我似乎无法弄清楚这里有什么问题?数据库查询返回null即使它有值

请帮忙!

我在哪里callimg数据库函数的代码:

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

尝试加入'SQLiteQueryBuilder MDB =新SQLiteQueryBuilder();'里面你的方法..并检查是否有logtraces .. – CRUSADER

+0

按照这个教程它会帮助你http://www.vogella.com/articles/AndroidSQLite/article.html –

回答

1

我认为在实际从中获得任何东西之前,您将移动到cursor的末尾。尝试改变c.moveToLast();c.moveToFirst(),然后在while循环只是改变while (c.isBeforeFirst())while(!c.isAfterLast())

您正在移动光标结束,然后检查其是否在第一项......这是有点儿不可能的前侧的位置。也许就是为什么你没有得到任何东西

+0

我做了必要的更改!看我的编辑!但仍然返回null! – shivani

+0

你确定有'fname'的值吗?你确实打开了数据库?只是试图想到可能导致null的所有事情。 – SeanSWatkins

2

试试这个格式调用光标,并关闭它

if (cursor != null) { 

     if (cursor.moveToFirst()) { 

      do { 
         //your code 

       } 

      while (cursor.moveToNext()); 

     } 

    cursor.close(); 

希望它能帮助:)

+0

这仍然返回空值!:( – shivani

+0

你可以在SQLite中编写你的查询,看看你得到了什么结果? –

+0

好吧,让我试试 – shivani

相关问题