2

データベースと SQL の仕組みを理解するのに苦労しています。データベースの特定の行を更新しようとしています。行を削除できますが、InsertAt 関数を使用すると、常にデータベースの末尾に追加されます。また、新しい識別子キーが割り当てられています。

既にあるものを編集したいだけです。新しいキーは必要ありません。編集した行を元の場所に残しておいてください。

問題を示すためにコードを削除しようとしました。

public partial class MainWindow : Window
{

    System.Data.SqlClient.SqlConnection con;
    System.Data.SqlClient.SqlDataAdapter da;

    DataSet sessions;

    public MainWindow()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        con = new System.Data.SqlClient.SqlConnection();

        sessions = new DataSet();

        con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\md\\PokerDataBase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

        con.Open();

        string sql = "SELECT * From Sessions";
        da = new System.Data.SqlClient.SqlDataAdapter(sql, con);
        da.Fill(sessions, "Sessions");

        con.Close();

        System.Data.SqlClient.SqlCommandBuilder cb;
        cb = new System.Data.SqlClient.SqlCommandBuilder(da);

        DataTable dt = sessions.Tables["Sessions"];


        DataRow table = sessions.Tables["Sessions"].NewRow();
        table[0] = "Some Data";
        table[1] = "Some Data";
        table[2] = "Some Data";
        table[3] = 2;
        table[4] = 3;
        sessions.Tables["Sessions"].Rows[2].Delete();
        sessions.Tables["Sessions"].Rows.InsertAt(table, 2);

        da.Update(sessions, "Sessions");
    }
}

誰かが私が間違っていることを理解するのを手伝ってくれますか?

4

1 に答える 1

1

エラー

を使用して新しい行を作成しています

DataRow table = sessions.Tables["Sessions"].NewRow();

これにより、データベースに新しい行が追加されます。行は更新されません。

解決

行を更新するには、次のような特定の行を選択する必要があります。

DataRow table = sessions.Tables["Sessions"].Rows[0];

次に、行データを変更してから更新しdaます。
これにより、データベースの既存の行が更新されます。

于 2012-08-02T07:55:00.543 に答える