我使用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
}
答案 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
我希望它会对你有所帮助。 :)