我想将多个checkboxlist值更新到数据库。我已经从其他表中将我的checkboxlist数据绑定,这是一个药物表。现在我想将我的价值更新到咨询表,但我不能
`
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
try
{
for (int i = 0; i < txtcheckbox.Items.Count - 1; i++)
{
if (txtcheckbox.Items[i].Selected == true)
{
str = str + txtcheckbox.Items[i].Text + ",";
}
}
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
String sql = "UPDATE [consultation] set mname3 = " + str + " WHERE [conid] = @conid";
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@conid", txtconid);
cmd.Parameters.AddWithValue("@mname3", str);
int j = cmd.ExecuteNonQuery();
if (j > 0)
{
Label2.Visible = true;
Label2.Text = "Successfully Complete Dispensary";
txtconid.Text = "";
}
else
{
Label2.Visible = true;
Label2.Text = "Not Successfully Complete Dispensary";
txtconid.Text = "";
}
con.Close();
}
catch
{
Label2.Visible = true;
Label2.Text = "Error";
txtconid.Text = "";
}
}
`
答案 0 :(得分:0)
我猜你这里有例外。这是因为:
String sql =“UPDATE [咨询]设置mname3 =”+ str +“WHERE [conid] = @conid”;
这里你使用字符串的连接,你的SQL查询将如下所示: 更新[咨询]设置 mname3 = sometextvale WHERE [conid] = @conid
mname3我有nvarchar sql类型,所以你需要把字符串值放在qoutes中:
String sql =“UPDATE [咨询]设置mname3 = '”+ str +“' WHERE [conid] = @conid”;
或者你可以使用paramaeter进行sql查询,就像你已经为@conid做的那样:
String sql =“UPDATE [咨询]设置mname3 = @mname3 WHERE [conid] = @conid”;
这是安全方式的更好解决方案。
其他一些评论:
for(int i = 0; i&lt; txtcheckbox.Items.Count - 1; i ++)
你确定这里应该是txtcheckbox.Items.Count - 1吗?你将失去最后一个。
第二个:在页面后面的代码中混合构造和执行查询(DAL)的代码与某种业务逻辑不是一个好的做法=)