0

データベースの行と列から読み取ることはできますが、同じ場所に書き込もうとするとエラー メッセージが表示され、何が問題なのかわかりません。

次のエラー メッセージが表示されます。

UpdateCommand の動的 SQL 生成は、キー列情報を返さない SelectCommand に対してサポートされていません

私のコード:

    public void LoadData()
    {
        connection = new SqlConnection(connectionString);
        dataset = new DataSet();

        sql = "SELECT * From Guests";

        try
        {
            connection.Open();
            adapter = new SqlDataAdapter(sql, connection);
            adapter.Fill(dataset, "Guests");
            connection.Close();

            string test = Convert.ToString(dataset.Tables["Guests"].Rows[0][1]);
            MessageBox.Show(test, "This is only a test!",
                   MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

            dataset.Tables["Guests"].Rows[0][1] = "Hello";

            connection.Open();
            new SqlCommandBuilder(adapter);
            adapter.Update(dataset.Tables["Guests"]);
            connection.Close();
        }
        catch
        {
            throw;
        } 
    }
4

2 に答える 2

2

SqlCommandBuilder は更新を生成する必要があり、テーブルに主キーを設定する必要があるため、SelectCommand では主キーを返す必要があります。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommandbuilder(v=vs.90).aspx

「SelectCommand は、少なくとも 1 つの主キーまたは一意の列も返す必要があります。何も存在しない場合、InvalidOperation 例外が生成され、コマンドは生成されません。」

于 2012-08-02T08:05:22.493 に答える
0

選択クエリは、テーブルの主キーを返す必要があります。テーブルに主キーがない場合は、設定する必要があります。テーブルに主キーが含まれていることを確認してください....

于 2012-08-02T08:06:26.673 に答える