1

Visual Studio 2008、C# を使用

過去 2 日間、私は問題に直面していたので、ここで質問しようと思いました。データベースに次のストアド プロシージャがありますStoredProcedure1

ALTER PROCEDURE dbo.StoredProcedure1
   @ID int,
   @Username varchar(10),
   @Pass varchar(10),
   @Status varchar(10)
AS
   INSERT INTO tPasswords(ID, fUsername, fPassword, fStatus)
   Values (@ID, @Username, @Pass, @Status)

   RETURN 

テーブルに行を追加するだけです。

Visual Studio 内のサーバー エクスプローラーから手順を実行すると、すべてがスムーズに実行され、データベースにデータが表示されると、追加したばかりの新しい行が表示されます。

問題は、プログラム内でプロシージャを実行しようとしたときです。

したがって、空のフォーム内でテストするために、ボタンを作成しました。

using System.Data.Sql;
using System.Data.SqlClient;

private void button1_Click(object sender, EventArgs e)
{
    string a = "Andreas"; 
    string b = "Andreas2"; 
    string c = "Andreas3"; 
    int _id = 10;
     SqlConnection connection = new SqlConnection(
        Properties.Settings.Default.dPasswordsConnectionString);
    SqlCommand cmd = new SqlCommand(
        "StoredProcedure1", connection);
    connection.Open();
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandTimeout = 600;
    cmd.Parameters.Add("@ID", _id);
    cmd.Parameters.Add("@Username", a);
    cmd.Parameters.Add("@Pass", b);
    cmd.Parameters.Add("@Status", c);

    int i = cmd.ExecuteNonQuery();

    connection.Close();
}

このボタンを押すと、エラーも何もありません.2回押すと、同じ主キーについてエラーが発生するため、手順は機能しています。

しかし、データベースにアクセスすると、新しいデータが挿入されていません。

それが実際に私の問題です。プログラム内からデータベースに書き込むことができません。

4

1 に答える 1

1

ストアドプロシージャに主キーを設定しようとしていると思います。

SQLに設定させる必要があります。

@IDが主キーだと思います...そのコードと、値を行に挿入しているprocからコードを削除します。

列定義がこれらを自動生成するように設定されていることを確認する必要があります。

于 2012-02-24T01:00:46.927 に答える