我怎么知道数据库中是否存在这样的值? (ADO.NET)

时间:2009-11-09 16:30:48

标签: c# .net sql database ado.net

例如,我有一个表,并且有一个名为“Tags”的列。我想知道此列中是否存在值'编程'。我怎么能在ADO.NET中做到这一点?

我这样做了:

OleDbCommand cmd = new OleDbCommand("SELECT * FROM table1 WHERE Tags='programming'", conn);
OleDbDataReader = cmd.ExecuteReader();
接下来我该怎么办?

4 个答案:

答案 0 :(得分:5)

使用SELECT COUNT(*)并检查结果。  (并使用ExecuteScalar)

(假设您知道如何设置连接并使用它)

答案 1 :(得分:3)

SELECT  TOP 1 1
FROM    table1
WHERE   Tags='programming'

答案 2 :(得分:1)

更好的版本,使用参数而不是字符串连接是一个好习惯,请参阅sql injection

OleDbCommand cmd = new OleDbCommand("SELECT TOP 1 1
 FROM table1 WHERE Tags=?", conn);
cmd.Parameters.Add("@p1", OleDbType.VarChar).Value = "Programming";
OleDbDataReader rdr = cmd.ExecuteReader();
if(rdr.Read())
    // record exists
else
   //Not exists

答案 3 :(得分:1)

你应该做两件事:

如果您只是检查是否存在名为Programming的标记,则应更改查询以返回COUNT而不是返回所有行。

SELECT TOP 1 Column1 FROM Table1 WHERE Tags = 'Programming'

您应该检查阅读器中的返回集以查看是否有任何行。如果有,则表示标签存在。