27,579
社区成员
发帖
与我相关
我的任务
分享
string sql = "insert into 猪舍环境0725 (时间,温度,湿度,光照,二氧化碳,氨气) values (@p0,@p1,@p2,@p3,@p4,@p5)";
try
{
using (SqlConnection con = new SqlConnection(str))
{
con.Open();
//对于输入的值,不要拼SQL, 而应该用参数化来代替
//一是会带来 sql 注入, 不安全;
//二是容易出错;
//三是效率不高, 执行计划没办法重用
SqlParameter[] spArr = new SqlParameter[]{
new SqlParameter("@p0", sj),
new SqlParameter("@p1", TemptextBox.Text),
new SqlParameter("@p2", HumtextBox.Text),
new SqlParameter("@p3", IlltextBox.Text),
new SqlParameter("@p4", CO2textBox.Text),
new SqlParameter("@p5", NH3textBox.Text)
};
SqlCommand cmd = new SqlCommand(sql, con); //无须using, con 在 using结束时会自动关闭, 相关对象也会自动关闭
cmd.Parameters.AddRange(spArr);
cmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
string errMsg = string.Format("sql: {0} \r\n 错误原因:{1}", sql, ex.Message);
MessageBox.Show(errMsg);
}
using (SqlConnection con = new SqlConnection(str))
{
con.Open();
string sql = "insert into 猪舍环境0725 (时间,温度,湿度,光照,二氧化碳,氨气) values (@p0,@p1,@p2,@p3,@p4,@p5)";
//对于输入的值,不要拼SQL, 而应该用参数化来代替
//一是会带来 sql 注入, 不安全;
//二是容易出错;
//三是效率不高, 执行计划没办法重用
SqlParameter[] spArr = new SqlParameter[]{
new SqlParameter("@p0", sj),
new SqlParameter("@p1", TemptextBox.Text),
new SqlParameter("@p2", HumtextBox.Text),
new SqlParameter("@p3", IlltextBox.Text),
new SqlParameter("@p4", CO2textBox.Text),
new SqlParameter("@p5", NH3textBox.Text)
};
SqlCommand cmd = new SqlCommand(sql, con); //无须using, con 在 using结束时会自动关闭, 相关对象也会自动关闭
cmd.Parameters.AddRange(spArr);
cmd.ExecuteNonQuery();
}
用sql server profiler跟踪一下,看看程序执行的语句是不是这句
看起来是没有问题的
把拼接完的 sql 打印一下,贴到 ssms 中,执行一下;
[quote=引用 5 楼 wmxcn2000 的回复:] MessageBox.Show(sql); // 这里打印一下 using (SqlCommand cmd = new SqlCommand(sql, con))
MessageBox.Show(sql); // 这里打印一下
using (SqlCommand cmd = new SqlCommand(sql, con))
把拼接完以后的,粘贴过去。