0

複数のチェックボックスリストの値をデータベースに更新したい。私はすでに薬テーブルである他のテーブルからチェックボックスリストをデータバインドしています。今、相談表に自分の値を更新したいのですが、できません

`

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 = "";
        }
}







    `
4

1 に答える 1

0

ここで例外があると思います。なぜなら:

String sql = "UPDATE [相談] set mname3 = " + str + " WHERE [conid] = @conid";

ここで文字列の連結を使用すると、SQL クエリは次のようになります。 UPDATE [consultation] set mname3 = sometextvale WHERE [conid] = @conid

mname3 には nvarchar sql 型があると思いますので、文字列値を qoutes に入れる必要があります。

String sql = "UPDATE [相談] set mname3 = ' " + str + " ' WHERE [conid] = @conid";

または、@conid で既に行ったように、sql クエリに paramaeter を使用できます。

String sql = "UPDATE [相談] set mname3 = @mname3 WHERE [conid] = @conid";

セキュリティ面で優れたソリューションです。

いくつかの追加コメント:

for (int i = 0; i < txtcheckbox.Items.Count - 1; i++)

txtcheckbox.Items.Count - 1 でよろしいですか? あなたは最後のものを失います。

そして2つ目:ページのコードビハインドに構築および実行クエリ(DAL)のコードを、ある種のビジネスロジックと混在させることはお勧めできません=)

于 2013-05-25T05:06:21.603 に答える