0

我目前正在尝试从我自己的数据库中获取一行,该数据库位于资产文件夹中。检查表中是否有一行,使用 SQLite 查询浏览器和调试器中的 SELECT-Statement 让我在数据库中找到一行。无论如何,从我的代码中调用该语句只会让我得到一个空游标。我还添加了方法

cursor.moveToFirst()

并避免打电话

myDataBase.close();

这是我试图在 TextView 上附加单个条目的方法:

private void getAdresses(Location location) { // TODO
    double lat = location.getLatitude();
    double lng = location.getLongitude();
    Geocoder geocoder = new Geocoder(this, Locale.GERMAN);

    try {
        List<Address> addresses = geocoder.getFromLocation(lat, lng, 1);
        if (addresses.size() != 0) {
            Address address = addresses.get(0);

            String addressString = address.getAddressLine(0).toString();
            System.out.println("(geocoder) " + addressString);
            textView.append(addressString + "\n");

            Cursor cursor = mDbHelper.getAllEntrys("tblBar", "Adresse",
                    addressString);

            if (cursor.moveToFirst()) {

                String cursorContent = cursor.getString(cursor
                        .getColumnIndexOrThrow("Name"));
                textView.append(cursorContent + "\n");

            } else {
                System.out.println("No bar at current location");
            }
        } else {
            System.out.println("(geocoder) no address!");
        }
    } catch (IOException e) {
        System.out.println(e.toString() + "(geocoder)");
    }
}

此外,这是我在数据库上调用实际查询的方法:

public Cursor getAllEntrys(String table, String column, String search) {
    try {
        String sSelect = "SELECT * FROM " + table + " WHERE " + column
                + " = '" + search + "'";
        Cursor cursor = mDb.rawQuery(sSelect, null);

        if (cursor != null) {
            cursor.moveToFirst();
        }
        return cursor;
    } catch (SQLException mSQLException) {
        System.out.println("getData >>" + mSQLException.toString());
        throw mSQLException;
    }
}

希望有人可以帮助我。提前谢谢了!

4

5 回答 5

2

好的,首先我要感谢你们所有人的快速回复。保持!虽然答案很明显,但我自己想通了。教程中的问题来自:http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/是,它没有考虑您手动添加值的情况(SQLite 数据库浏览器中的更新)在您第一次运行程序后到您的数据库。这就是我所做的......所以你必须编写自己的方法来检查自上次运行以来是否有任何变化。希望任何人都可以需要这个:)

于 2012-08-25T09:27:31.153 回答
1

//这对我有用

final Cursor c = sampleDB.rawQuery("SELECT FirstName, LastName,RedId FROM " +
                SAMPLE_TABLE_NAME +
                " where RedId =  '"+a+"'", null);
        int count = c.getCount();

        if(count == 0){

            Toast.makeText(RetrieveData.this, "Not Found", Toast.LENGTH_SHORT).show();
        }
于 2012-11-04T09:16:04.023 回答
0

试试这个从你的数据库中获取单行。

在您的 Database 类中声明此方法。

 public Cursor selectSingleRecord(String tableName, String[] tableColumns,
        String whereClause, String whereArgs[], String groupBy,
        String having, String orderBy) {
    return myDataBase.query(tableName, tableColumns, whereClause, whereArgs,
            groupBy, having, orderBy);  

} 

并使用此方法获取光标。

如果我的表结构如下。

_id | 姓名 | 地址

我会用下面的方式写

    String tableColumns[] = {"_id"}; // Here mansion the column which you want to retrieve I think in your case "addressString".
    String whereClause = {"Name"}; // Here use where clause

    Cursor cursor = dbHelper.selectSingleRecord("Your_Table_Name", tableColumns, whereClase +"=?" , new String[] {String.valueOf("NameOfPerson")}, null, null, null);

     // NameOfperson is the name which I am going to enter through EditText.
      if (cursor.moveToFirst())
        {            
              String getId = cursor.getString[0];  // Here you can get the id of respective person (i.e. the name which I have entered )                          
         }
        cursor.close();  // Finally close the curser

希望这会帮助你。

于 2012-08-24T13:27:08.693 回答
0

将您的 sSelect 更改为:有时在 SQL 中使用 like 'something' 比使用 = something 更好。

String sSelect = “SELECT * FROM” + 表格 + “WHERE” + 列 + “like '” + 搜索 + “'”;

于 2012-08-24T14:18:50.233 回答
0

不知道这是否可能是问题,但是。. .

String sSelect = "SELECT * FROM " + table + " WHERE " + column
                + " = '" + search + "'";

当您的搜索变量为空时,您的查询将转换为:

SELECT * FROM tblBar WHERE Adresse = 'null'

尝试改用它:

search = (search == null) ? " IS NULL " : " = '" + search +" '" ;

String sSelect = "SELECT * FROM " + table + " WHERE " + column + search;
于 2012-08-24T14:45:19.337 回答