2012-10-16 330 views
3

我将数据保存在我的SQL数据库中。将sqlite与字符串进行比较

现在我想比较这保存的数据,用绳子

事情是这样的:

​​

现在我要检查,如果“家”已经在数据库,有若第

像这样

if (example == [SQL Data]) { 
} 
else { 
} 

现在,我怎么能做到这一点?

+0

你刚才一列或多个列? –

+0

所以这看起来更像是一个sql问题。看看这些:http://stackoverflow.com/questions/3634984/insert-if-not-exists-else-update,http://stackoverflow.com/questions/418898/sqlite-upsert-not-insert-或替换 –

+0

从[SQLiteDatabase.html#query()]开始(http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#query(java.lang.String,%20java.lang .String [],%20java.lang.String,%20java.lang.String [],%20java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String))或其一个变体。 –

回答

1

写偷了我回复Sharath的评论作为回答,因为代码会混乱在评论中:

不说你的回复是错误的,但是从表中选择所有内容并在数据库外迭代它并且不应该被建议作为对这个问题的回答,因为这样做一般来说是一个不好的习惯。

我通常这样做,如果我想查看数据库中是否存在某条记录,我喜欢这样。不是要去争辩使用做,而在正常while循环,因为这是关于不同的偏好;)

String query = "SELECT * FROM table_name WHERE column_name=" + the_example_string_to_find;    
Cursor cursor = db.rawQuery(query, null); 

if(cursor.getCount() > 0) { 
    cursor.moveToFirst(); 
    while(!cursor.isAfterLast()) { 
     // Do whatever you like with the result. 
     cursor.moveToNext(); 
    } 
} 
+1

嗨,谢谢你的回答 可悲的是我在这里得到一个nullpointerexception:光标cursor = db.rawQuery – user1750720

+0

问题是,我在一个broadcastreceiver – user1750720

+0

如何创建数据库? – Darwind

0

您需要首先从数据库中提取所有数据,然后使用从数据库中获取的数据检查数据。

看一看链接sample database example

假设你从数据库中有一个光标对象

cursor = db.rawQuery("SELECT yourColumnName FROM "+TABLE_NAME, null); 
if(!cursor.moveToFirst()){ 

} 
else{ 

do { 
if(cursor.getString(0).equals(example)) 
//do something which you want and break 
break; 
} while (cursor.moveToNext()); 

} 
+3

Performancewise您的方法是完全错误的。您的原始查询应该如下所示:SELECT * FROM table_name WHERE row_name = the_example_string。 不要仅仅选择数据库中的所有内容,并在数据库能够更高效地进行比较时使用编程语言进行比较。 此外,Android SQLite数据库类有一个名为getCount()的方法,您可以在执行select时获取返回的行数。 – Darwind

+0

是的你是对的,但他没有提及他是否需要某些特定值的数据,以便我们可以使用where子句。 他的信息只是搜索字符串是否存在于数据库中,或者我们需要从数据库中获取整个数据。我的方法错了吗?如果是的话,你可以建议任何其他方式请 –

7

这样做

String sql = "SELECT * FROM your_table WHERE your_column = '" + example + "'"; 
Cursor data = database.rawQuery(sql, null); 

if (cursor.moveToFirst()) { 
// record exists 
} else { 
// record not found 
} 

here

0
// Getting Specific Record by name. 
// in DB handler class make this function call it by sending search criteria. 
    Records getRecord(String name) { 
     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor cursor = db.query(TABLE_NAME, new String[]{KEY_ID, KEY_NAME, KEY_Auth_Name, KEY_B_PRICE}, KEY_ID + "=?", 
       new String[]{name}, null, null, null,null); 
     if (cursor.getCount() > 0) 
      cursor.moveToFirst(); 
     Records Records = new Records(Integer.parseInt(cursor.getString(0)), 
       cursor.getString(1), cursor.getString(2),cursor.getString(3)); 
// return book 
     return Records; 
    }