SQL Server复制数据

时间:2017-08-10 09:27:10

标签: c# sql-server

我使用C#的程序复制了SQL Server中存储的所有数据;下面的if声明有什么问题?

if (input.StartsWith("H") && input2.Equals("01"))
{
    conn.Open();
    comando.CommandText = "INSERT INTO data(id, name, time) VALUES ('" + textBox1.Text + "', '" + textBox2.Text + "', GETDATE())";
    comando.ExecuteNonQuery();
    conn.Close();
    textBox1.Clear();
}

if (input.StartsWith("H") && input2.Equals("02"))
{
    conn.Open();
    comando.CommandText = "INSERT INTO data(id, name, time) VALUES ('" + textBox1.Text + "', '" + textBox2.Text + "', GETDATE())";
    comando.ExecuteNonQuery();
    conn.Close();
    textBox1.Clear();
    textBox2.Clear();
}
else
{
    //do nothing
}   

2 个答案:

答案 0 :(得分:0)

为避免重复,您可以使用if exists语句添加检查id是否已存在。希望这会奏效。

答案 1 :(得分:0)

将主键约束放在Id列上,如果Id可用,则检查是否存在。如果是,则更新else插入。

您可以像这样进行查询:

IF EXISTS (SELECT 1 FROM data WHERE Id = '" + textBox1.Text + "')
   UPDATE data SET name = '" + textBox2.Text + "', time = GETDATE()
ELSE
   INSERT INTO data(id, name, time) VALUES ('" + textBox1.Text + "', '" + textBox2.Text + "', GETDATE())

我没有测试它是否有效,但您可以将它作为参考。

但是,是的,使这个查询paramaterize查询,以避免像其他人说的sql注入。您可以在下面看到如何将查询作为paramatrize查询的链接: https://www.aspsnippets.com/Articles/Parameterized-Queries-ADO.Net.aspx https://visualstudiomagazine.com/articles/2017/07/01/parameterized-queries.aspx

我希望它会对你有所帮助。 :)