1

Customers カテゴリの Northwind データベースで挿入、更新、および削除操作を行う割り当てがあります。コードは似ているはずなので、なんとか挿入部分を実行し、すべて完了したと思いましたが...基本的に挿入をコピーし、ストアドプロシージャへの参照を変更するだけでUpdateを書きましたが、ボタンを押しても何もありません起こります。コード :

        private void buttonUpdate_Click(object sender, RoutedEventArgs e)
    {
        SqlConnection cn = new SqlConnection(@"Integrated Security=SSPI;Initial Catalog=Northwind;Data Source=(local)");
        SqlCommand cmd = new SqlCommand("UpdateCustomer", cn);
        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.AddWithValue("@CustomerID", "");
        cmd.Parameters.AddWithValue("@CompanyName", companyName);
        cmd.Parameters.AddWithValue("@ContactName", contactName);
        cmd.Parameters.AddWithValue("@ContactTitle", contactTitle);
        cmd.Parameters.AddWithValue("@Address", address);
        cmd.Parameters.AddWithValue("@City", city);
        cmd.Parameters.AddWithValue("@PostalCode", zip);
        cmd.Parameters.AddWithValue("@Phone", phone);

        cmd.Parameters.AddWithValue("@Region", "");
        cmd.Parameters.AddWithValue("@Country", "");
        cmd.Parameters.AddWithValue("@Fax", "");

        cn.Open();
        cmd.ExecuteNonQuery();
        cn.Close();
    }

そのための私のストアドプロシージャはMSDNから取得されました:

 CREATE PROCEDURE [dbo].[UpdateCustomer]
    @CustomerID nchar(5),
    @CompanyName nvarchar(40),
    @ContactName nvarchar(30),
    @ContactTitle nvarchar(30),
    @Address nvarchar(60),
    @City nvarchar(15),
    @Region nvarchar(15),
    @PostalCode nvarchar(10),
    @Country nvarchar(15),
    @Phone nvarchar(24),
    @Fax nvarchar(24)
AS
UPDATE [dbo].[Customers]
   SET [CompanyName] = @CompanyName
      ,[ContactName] = @ContactName
      ,[ContactTitle] = @ContactTitle
      ,[Address] = @Address
      ,[City] = @City
      ,[Region] = @Region
      ,[PostalCode] = @PostalCode
      ,[Country] = @Country
      ,[Phone] = @Phone
      ,[Fax] = @Fax
 WHERE CustomerID=@CustomerID

しかし、何も変わりません。私は何を間違っていますか?また、Customer を削除するためにカスケードで何かをする必要がありますか?これらのテーブルは一種の組み合わせであるためです。

これは基本的なプロジェクトであり、DataSet などについて何も知らないので、1000 の Web サイトを検索した後でも、これを理解することはできません.. :( どんな助けも大歓迎です!

4

1 に答える 1

1

特定の顧客のを実行するUPDATEには、以下を渡す必要がありますCustomerID

  cmd.Parameters.AddWithValue("@CustomerID", "");  <- Don't pass an empty string here..

[問題の原因ではありませんが、CustomerID列が次のように定義されている理由を調査しますnchar(5)]

于 2012-12-31T00:10:22.910 に答える