如何检查表中的字段是否已存在?

时间:2013-08-21 15:13:46

标签: c# sql sql-server

我的问题非常简单: 我有一个SQL表,列名为'lastname',字段为lastname1,lastname2,lastname3 ......

在我的c#代码中,我有一个方法只有在表中没有列lastname的字段时才在表中插入一行。输入中的此方法具有姓氏,因此对于我的INSERT是一个参数。

我如何比较和后续检查字段姓氏是否已经在表中?

由于

3 个答案:

答案 0 :(得分:2)

如果字段必须是唯一的,则应始终在表中使用unique constraints。这样,即使输入直接来自SSMS或其他应用程序,也可以始终防止重复。

然后最简单的方法是处理根据它的数字引发的sql异常。

....

try
{
    int inserted = cmd.ExecuteNonQuery();
} catch (SqlException ex)
{
    if (ex.Number == 2601)
    {
        // show meaningful error message
        MessageBox.Show("Cannot insert duplicate key row in object"); 
    }
    else
        throw;
}

....

答案 1 :(得分:0)

仅当表中的值尚未包含时,此SQL才会插入新记录:

INSERT INTO Your_Table ( LastName )
SELECT @NewLastName
WHERE NOT EXISTS( SELECT * FROM Your_Table WHERE LastName = @NewLastName )

答案 2 :(得分:0)

有两个选项,一个是来自sql,另一个方法是来自代码。

遗憾的是,您无法更改您同意@David的SQL代码。

从背后的代码你必须做这样的事情。

首先,您必须从表中选择所有数据并检查该数据。像这样的东西。

    SqlConnection con = new SqlConnection();
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con; //Your connection string"
    cmd.CommandText = "Select * from table1"; // your query
    cmd.CommandType = CommandType.Text;
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    da.Fill(ds);
    DataTable dt = new DataTable();
    dt = ds.Tables[0];
    int count=0;
    for (int i = 0; i > dt.Rows.Count; i++)
    {
        if (Convert.ToString(dt.Rows[i]["LastName"]) == Lastname)
        {
            count++;
        }
    }
    if (count > 0)
    {
        //insert code for data
    }
    else
    {
        var script = "alert('"+ Lastname + "already exist.');";
        ClientScript.RegisterStartupScript(typeof(Page), "Alert", script, true);
        // or you can use here your Update statement
    }

这可以帮助你,你可以理解。