【发布时间】:2021-11-15 03:56:24
【问题描述】:
我正在尝试通过在我的 .net 项目中使用 insert 命令将值插入到 db
命令:
string[] dist_name = new string[] { "Yuma", "Wickenburg", "Verde", "Prescott", "Pinal", "Payson", "Paradise Valley/Eastern", "Navajo", "Mountain", "La Paz", "Goodyear/Western", "Deer Valley/Central","Coconino","Cochise","Buckeye" };
int[] cust_count = new int[] { int.Parse(TextBox11.Text), int.Parse(TextBox11.Text), int.Parse(TextBox12.Text), int.Parse(TextBox13.Text), int.Parse(TextBox14.Text), int.Parse(TextBox15.Text), int.Parse(TextBox16.Text), int.Parse(TextBox17.Text), int.Parse(TextBox18.Text), int.Parse(TextBox19.Text), int.Parse(TextBox20.Text), int.Parse(TextBox21.Text), int.Parse(TextBox22.Text), int.Parse(TextBox23.Text), int.Parse(TextBox24.Text), int.Parse(TextBox25.Text) };
string[] dist_code = new string[] { "YU","WG","VR","VP","PL","GP","PV","NN","GM","YP","YP","GY","DV","NC","CO","WB" };
SqlConnection con = new SqlConnection(_connectionString);
con.Open();
for (int i = 0; i < dist_name.Length; i++) {
SqlCommand sc1 = new SqlCommand("insert into tempdivcustcount(dist_name,dist_code,cust_count,year) Values("+dist_name[i]+","+dist_code[i]+","+cust_count[i]+","+int.Parse(thresholdYear.Text)+") ", con);
object o1 = sc1.ExecuteNonQuery();
}
但是当我运行它时,我得到了这个错误: “无效的列名“YUMA” "无效的 column_name "YU"
“Yuma”和“Yu”将作为记录插入到我的数据库中 请让我知道如何解决它。 感谢您的帮助
【问题讨论】:
-
了解如何编写参数化查询。此代码未插入 YUMA 值
-
您必须在 SQL 中的字符串文字周围加上单引号,但是,正如您 @Steve 指出的那样,正确参数化您的 sql 将解决问题并使您免受潜在的 sql 注入攻击。
-
关于副本:小心使用 AddWithValue。它很便宜,但它可能会导致比已解决的问题更多的问题。
-
你能给我举个例子吗?
-
你读过副本吗?这实际上是你的问题