【问题标题】:Android SQLite query doesn't return column valuesAndroid SQLite 查询不返回列值
【发布时间】:2014-09-27 19:54:00
【问题描述】:

我无法从以下 SQLite 选择查询函数中添加读取数据。我有一个包含 3 列的表,即 driverID、driversName、driversNo。

它应该返回一个简单的字符串,但是唉。

public String readDrivers() {
Cursor cursor = database.query(MySQLiteHelper.PROFILE_TABLE_NAME, necessaryColumns, null, null, null, null, null);

if (cursor != null){
    cursor.moveToFirst();
    Log.v("TEST", Integer.toString(cursor.getCount()));
    Log.v("TEST", cursor.getColumnName(0));
    Log.v("TEST", cursor.getColumnName(1));
    Log.v("TEST", cursor.getString(0));
    Log.v("TEST", cursor.getString(1));
}

String returnString = cursor.getString(0) + cursor.getString(1);
return returnString;
}

以下是 LogCat 的最新结果。两个字符串结果不显示。

08-04 20:27:35.271: V/TEST(25126): 1
08-04 20:27:35.271: V/TEST(25126): driversName
08-04 20:27:35.271: V/TEST(25126): driversNo

【问题讨论】:

  • 你确定这些列实际上有值吗?
  • 什么是necessaryColumnsmoveToFirst()的返回值是多少?
  • 由于返回了 1 条记录,让我假设您的两个列都包含 null空字符串。我假设 null,因为 Log.v 失败 打印。
  • 你可以添加一个try和catch块来检查是否产生任何异常吗?

标签: android sql sqlite persistent-storage


【解决方案1】:

尝试使用isNull方法检查列是否为空

由于您正在获取cursor.getColumnName(0)); 的输出,这意味着列索引 0 存在。所以,cursor.getString(0) 不应被视为错误!

请参阅cursor.getString 的文档:

上面写着:

The result and whether this method throws an exception when the 
column value is null or the column type is not a string type 
is implementation-defined.

【讨论】:

    【解决方案2】:

    问题

    cursor.getString(0) 
    

    我认为它是 int 值,所以试试 cursor.getInt(0)

    有一些方法可以从光标中获取数据

           public String readDrivers() {
        Cursor cursor = database.query(MySQLiteHelper.PROFILE_TABLE_NAME, necessaryColumns, null, null, null, null, null);
    
        if (cursor != null){
            cursor.moveToFirst();
            Log.v("TEST", Integer.toString(cursor.getCount()));
            Log.v("TEST", cursor.getColumnName(0));
            Log.v("TEST", cursor.getColumnName(1));
            Log.v("TEST", cursor.getString(0));
            Log.v("TEST", cursor.getString(1));
        }
    
        String returnString = cursor.getString(0) + cursor.getString(1);
        //you suppose to get data from cursor like
       String temp = cursour.getString(cursour.getColumIndex("YOUR_COLUMN_NAME"));
       Log.i(TAG , "Required Data:: "+temp);
        return returnString;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2017-11-30
      • 1970-01-01
      相关资源
      最近更新 更多