2012-04-29 156 views
4

我有应用程序,用户输入具体日期的名称和其他详细信息。我需要检查值/名称用户是否尝试添加已存在于数据库列名称。我有这个代码,但这不起作用,因为它只选择一个值。谢谢如何检查值是否已经存在于android sqlite数据库?

Cursor c = dbe.rawQuery("SELECT name FROM tbl_user WHERE meeting_date LIKE'" + mydate + "'", null); 

if ((c.getString(3)).equals(editTextName.getText().toString())) 

{ 
// do something 
} 
+0

显示更多的代码。 –

回答

2

如果您只是检查字段中是否存在值,最简单的方法是使用适当的过滤器进行选择计数。

东西沿着

SELECT count(*) 
FROM tbl_user 
WHERE meeting_date LIKE ' + my_date' 
AND name = ' + editTextName.getText() + ' 

线,这将让你轻松,快速地确定这些值在表中存在。

如果您需要检查多个表格,那么您必须在这些表格之间进行连接并相应地编写您的过滤器。

如果碰巧你没有很好地处理SQL。
这个网站是一个很好的起点: W3Schools SQL Tutorial

希望这有助于。

+2

如果我使用检查if(c!= null) c总是与null不同 – GuyWhoReadsStockoverflow

1

您只是选择了一列(name),而在您的if中,您试图比较(不存在的)第三列的内容(不知道为什么要尝试这样做,但这是一个问题,显然)。

而不是试图这样做,为什么不使用列标题?

所以你if是这样的(而且并不重要的列是你的光标什么位置):

if (c.getString(c.getColumnIndex("name")).equals(editTextName.getText().toString())) 
+1

试图这样做,但应用程序崩溃 – GuyWhoReadsStockoverflow

+1

logcat在崩溃时会说什么? – Barak

+1

threadid = 1:线程退出时未捕获异常(group = 0x409c01f8) E/AndroidRuntime(4433):致命异常:主要 E/AndroidRuntime(4433):android.database.sqlite.SQLiteException:表tbl_user已存在:,while编译:CREATE TABLE tbl_user(id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,surname TEXT,meeting_title TEXT,meeting_date DATE); – GuyWhoReadsStockoverflow

相关问题