0

この質問は、ポップアップ ウィンドウで GridView の行を挿入および更新するためのネット記事から生じます。ここに

GridView の編集ボタンをクリックすると、編集用のポップアップ ウィンドウが表示されます。ウィンドウを編集し、「保存」をクリックしてデータベースに保存します。保存方法は次のとおりです。

protected void Save(object sender, EventArgs e)
{

    
    
    using (SqlCommand cmd = new SqlCommand())

    {
        cmd.CommandType = CommandType.StoredProcedure;
        //cmd.CommandText = "AddUpdateCustomer";

        cmd.CommandText = "UPDATE [Customers] SET [CompanyName] = @CompanyName ,[ContactName] = @ContactName WHERE CustomerID = @CustomerID";


        cmd.Parameters.AddWithValue("@CustomerID", txtCustomerID.Text);
        cmd.Parameters.AddWithValue("@ContactName", txtContactName.Text);
        cmd.Parameters.AddWithValue("@CompanyName", txtCompany.Text);
        
        GridView1.DataSource =  this.GetData(cmd);
        GridView1.DataBind();

        

        cmd.ExecuteNonQuery();

        
    }
}

オンライン記事では、コメント付きの行を使用してcmd.CommandTextいましたが、それは機能せず、その有用性も見つからなかったため、変更しました。クエリを実行する最後の行も追加しましたが、 cmd.ExecuteNonQuery();実際にはDBに変更はありません。

メソッドのどこが間違っている可能性がありSave、その問題に対処する方法は?

4

2 に答える 2

0

ストアド プロシージャの呼び出しを要求しましたが、コメントアウトした行にストアド プロシージャ名が含まれています。

実際には生の SQL を実行しているように見えるので、代わりに試してください:

cmd.CommandType = CommandType.Text;

しかし、実際の SQL ではないため、CommandText 行も機能しません。変数名ではなく、変数の内容を含める必要があります。また、非クエリではなくクエリを実行する必要があります。

protected void Save(object sender, EventArgs e)
{
    using (SqlCommand cmd = new SqlCommand())
    {
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = String.Concat("UPDATE [Customers] SET [CompanyName] = ", txtCompany.Text, ", [ContactName] = ", txtContactName.Text, " WHERE CustomerID = ", txtCustomerId.Text, ";");

etc
于 2013-01-10T16:11:09.873 に答える