我有一个保存单词的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#
答案 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);
这样做的好处是数据库确保该值是唯一的,而不是应用程序。因此,这将阻止另一个INSERT
或UPDATE
语句生成唯一值。
此外,这比IF
方法更安全。这种方法受竞争条件的影响 - 尝试插入相同值的两个线程都可能成功。