android - 在 Android 中处理无效的 SQLite 查询

标签 android sqlite

我有一个简单的代码可以成功查询 SQLite 数据库并将结果从游标转换为字符串以便在屏幕上显示。

我现在的问题是导致应用程序崩溃的无效查询。有没有办法成功处理无效查询?最好是可以防止我的应用程序崩溃并且只会将用户重定向到主页并显示警告提示的东西。

到目前为止,我的搜索方法如下所示:

public String search(DataBaseHelper myDB){
    SQLiteDatabase db = myDB.getReadableDatabase();
    Cursor cursor = db.rawQuery("SELECT BuildingColor, Room FROM LSBuildingsDB WHERE _id =" + newString, null);

    cursor.moveToFirst();

    String data = cursor.getString(cursor.getColumnIndexOrThrow("BuildingColor")) + " " +
                    cursor.getString(cursor.getColumnIndex("Room"));

    //Toast msg = Toast.makeText(getBaseContext(),data, Toast.LENGTH_SHORT);
    //msg.show();

    cursor.close();

    return data;

}

最佳答案

Cursor cursor = NULL ;
try
{
   cursor = db.rawQuery("SELECT BuildingColor, Room FROM LSBuildingsDB WHERE _id =" + newString, null);
   if(cursor != NULL)
   {
      try {
         if (cursor.moveToNext()) {
            String data = cursor.getString(cursor.getColumnIndexOrThrow("BuildingColor")) + 
               " " + cursor.getString(cursor.getColumnIndex("Room"));
         } else {
            // Query result was empty, deal with it here.
         }
      } finally {
        // Cursors should be closed
        cursor.close();
      }
   }
}
catch (SQLiteException e) // (Exception e) catch-all:s are bad mmkay.
{
    //print exception
}

关于android - 在 Android 中处理无效的 SQLite 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10877693/

相关文章:

android - 关闭通知后打开应用程序主页

android - Python 和安卓

android动态壁纸重新缩放

c# - 使用 System.Data.SQLite 和 Entity Framework 6 的简单示例

java - 如何在android中将数据库记录转换为csv文件?

sqlite - 如何每周删除 SQLite 的旧记录?

c++ - 我调用 sqlite_open_v2 有什么问题?

java - 尝试遵循之前关于如何创建动画的答案,但它完全消失了

android - 将 NumberPicker 文本左对齐

sqlite查询以获取所有表名列表及其中的记录数