这里有一些需要考虑的事情:
using (SqlConnection c = new SqlConnection(connString))
{
c.Open();
using (SqlCommand cmd = new SqlCommand("INSERT INTO [Table] ([Item], [Des1],[Des2], [Prodline], [ANR], [STime]) VALUES(@Item,@Des1,'0',@ProdLine,@ANR,@STime)", c))
{
cmd.Parameters.AddWithValue("@Item", txtText1.Text);
cmd.Parameters.AddWithValue("@Des1", txtText2.Text);
cmd.Parameters.AddWithValue("@ProdLine", txText3.Text);
cmd.Parameters.AddWithValue("@ANR", txtText4.Text);
cmd.Parameters.AddWithValue("@STime", txtText5.Text);
cmd.ExecuteNonQuery();
}
}
如果您要将正在构建的 SQL 语句发送到服务器,它可能看起来像这样:
INSERT INTO [Table] ([Item], [Des1],[Des2], [Prodline], [ANR], [STime])
VALUES(Item Name,Here is my description.,'0',Prod line,ANR value,some time)
显然这会失败。它甚至没有用单引号包围这些值。现在,他们可能都不是性格,我明白了,但你明白我的意思。
但是雪上加霜的是,它对SQL 注入是开放的,就像你编写它的方式一样。使用参数化方法并非如此。