0

我可以读取数据库中的一行和一列,但是当我想写入同一个地方时,我收到一条错误消息,我不明白可能出了什么问题?

我收到此错误消息:

对于不返回任何键列信息的 SelectCommand,不支持为 UpdateCommand 生成动态 sql

我的代码:

    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

在您 SelectCommand 中,您必须返回主键,因为 SqlCommandBuilder 需要生成更新,并且您必须在表上设置主键

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

“SelectCommand 还必须返回至少一个主键或唯一列。如果不存在,则会生成 InvalidOperation 异常,并且不会生成命令。”

于 2012-08-02T08:05:22.493 回答
0

您的选择查询需要返回表的主键。如果您的表没有主键,则需要设置一个。确保您的表包含主键....

于 2012-08-02T08:06:26.673 回答