我希望将多个复选框列表值更新到数据库中。我已经把我的支票清单从另一张表,也就是医药表里存起来了。现在我想把我的价值更新到咨询表,但是我不能。
`
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 = "";
}
}
`发布于 2013-05-25 05:06:21
我想你在这里有例外。因为:
字符串sql = "UPDATE咨询集mname3 =“+ str +”其中conid = @conid";
这里使用字符串连接,您的sql查询如下: UPDATE咨询集mname3 = sometextvale,其中conid = @conid
我猜mname3有nvarchar类型,所以您需要将字符串值放在qoutes中:
String sql = "UPDATE咨询集mname3 = '“+ str +”' WHERE conid = @conid";
或者,您可以像前面对@conid一样,使用paramaeter进行sql查询:
字符串sql =“更新咨询集mname3 = @mname3,其中conid = @conid";
这是更好的安全解决方案。
一些补充意见:
(int i= 0;i< txtcheckbox.Items.Count - 1;i++)
你确定这里应该是txtcheckbox.Items.Count - 1吗?你会失去最后一个。
第二部分:将构建和执行查询(DAL)代码与某种业务逻辑混合在页面后面的代码中,这不是一个好的实践=)
https://stackoverflow.com/questions/16746520
复制相似问题