bugfix> asp.net > 投稿

私のアクセスデータベースはこのコードで更新されません。問題に見えるのは? 私は成功せずにアクセスデータベースを更新するための多くの方法を試しました みんな助けてください。

protected void Btnupdate_Click(object sender, EventArgs e)
    {
        foreach (RepeaterItem RI in rptEdit.Items)
        {
            Label id = RI.FindControl("Pid") as Label;
            TextBox prdname = RI.FindControl("prdname") as TextBox;
            TextBox prdprice = RI.FindControl("prdprice") as TextBox;
            TextBox prdshortdesc = RI.FindControl("prdshortdesc") as TextBox;
            TextBox prdtype = RI.FindControl("prdtype") as TextBox;
            TextBox prdbrand = RI.FindControl("prdbrand") as TextBox;
            int updated;
            string connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\Table.accdb";
            using (var conn = new OleDbConnection(connection))
            {
                conn.Open();
                string updSql = @"UPDATE ProductList SET
                    Pname = '" + prdname.Text + "' WHERE Pid = ?";
                using (var cmd = new OleDbCommand(updSql, conn))
                {
                    cmd.Parameters.Add("@Pname", OleDbType.VarChar).Value = prdname.Text;
                    updated = cmd.ExecuteNonQuery();
                    conn.Dispose();
                    conn.Close();
                }
            }
        }
    }

回答 1 件
  • ?を使用するだけですSQLのスタイルパラメータ。

    string sql = @"UPDATE ProductList SET Pname = ? WHERE Pid = ?";
    
    

    次に、SQLに表示されるのと同じ順序でパラメーターをコードに追加してください。

    cmd.Parameters.Add(prdName.Text);
    cmd.Parameters.Add(int.Parse(id.Text));
    
    

    C#で追加される変数の型がDBの型(テキストまたは数値の点で)と一致することを確認する必要があります。その後、必要に応じて適切に引用することも引用しないこともできます。

あなたの答え