使用c#在Microsoft SQL Server中删除和更新表



我使用以下代码将项目添加到表中,但我在删除或更新表中的项目时遇到麻烦。我正在尝试像

这样的命令
delete from MyTable 
values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "',)"; 

,命令被接受,但项目不被删除。

con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "insert into MyTable values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "',)";
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Item inserted");

这是一个有点难找到资源,因为谷歌只是显示,sql或mysql当我试图搜索一个解决方案。

为什么期望基于INSERT关键字的SQL命令删除记录?

using var con = new SqlConnection(" ... ");
using var cmd = con.CreateCommand();
cmd.CommandText = @"
DELETE 
FROM MyTable 
WHERE MyColumn= @SomeValue";
cmd.Parameters.Add("@SomeValue", SqlDbType.Int).Value = textBox1.Text;
con.Open();
cmd.ExecuteNonQuery();
// No need to call con.Close();. The using directive takes care of it.

特别注意我是如何使用查询参数的。问题中的字符串连接技术是NEVER好吧,这是我所见过的最简单的方法来发现一年后你六个月前被黑了。

要更改(更新)一条记录,您必须编写一个UPDATE查询:

using var con = new SqlConnection(" ... ");
using var cmd = con.CreateCommand();
cmd.CommandText = @"
UPDATE MyTable 
Set SomeColumn = @SomeValue 
WHERE SomeOtherColumn = @SomeOtherValue";
cmd.Parameters.Add("@SomeValue", SqlDbType.Int).Value = textBox2.Text;
cmd.Parameters.Add("@SomeOtherValue", SqlDbType.Int).Value = textBox1.Text;
con.Open();
cmd.ExecuteNonQuery();
// No need to call con.Close();. The using directive takes care of it.

要理解的是,您不需要通过指定VALUES()子句中的所有字段来删除或更新记录,就像您使用INSERT一样。相反,您可以使用WHERE子句,并且只需要包含足够的条件表达式来标识您想要更改或删除的行。UPDATE语句将通过SET子句进一步指定要更改的内容。

最新更新