验证文本是否已存在

时间:2017-08-18 09:44:35

标签: c# sql

我有一个保存单词的sql表,我需要检查该单词是否已经存在,所以,我应该收到一条消息,说该单词已经存在。 可能吗?如果是这样我该怎么办? 我将它留在myccode下面为sql添加单词,但如果你需要别的东西,我会毫无问题地为你提供。

string conn = ConfigurationManager.ConnectionStrings["test"].ConnectionString;
 using (SqlConnection sqlConn = new SqlConnection(conn))
  {
   sqlConn.Open();
   string sqlQuery = @"INSERT INTO testetiposdestados(CDU_ESTADOS) VALUES(@estados)";
   SqlCommand SQLcm = new SqlCommand();
   SQLcm.Connection = sqlConn;
   SQLcm.CommandText = sqlQuery;
   SQLcm.CommandType = CommandType.Text;
   SQLcm.Parameters.AddWithValue("@estados", textBox1.Text);
   SQLcm.ExecuteNonQuery();
   sqlConn.Close();
}

我正在使用c#

2 个答案:

答案 0 :(得分:1)

您可以使用IF NOT EXIST这样的语句

IF NOT EXISTS (SELECT * FROM testetiposdestados 
   WHERE CDU_ESTADOS = @estados)
BEGIN
   INSERT INTO testetiposdestados(CDU_ESTADOS) VALUES(@estados)
END

您的查询将变为:

string sqlQuery = 
  @"IF NOT EXISTS(SELECT * 
                    FROM testetiposdestados 
                   WHERE CDU_ESTADOS = @estados) 
    BEGIN 
      INSERT INTO testetiposdestados(CDU_ESTADOS) 
           VALUES (@estados) 
    END";

如果插入成功,则意味着它已经不存在于表中。

答案 1 :(得分:1)

我建议使用唯一约束:

CREATE UNIQUE CONSTRAINT unq_testetiposdestados_estados
    UNIQUE (CDU_ESTADOS);

INSERT INTO testetiposdestados(CDU_ESTADOS)
    VALUES(@estados);

这样做的好处是数据库确保该值是唯一的,而不是应用程序。因此,这将阻止另一个INSERTUPDATE语句生成唯一值。

此外,这比IF方法更安全。这种方法受竞争条件的影响 - 尝试插入相同值的两个线程都可能成功。

相关问题