从DataGridView更新数据时出错

时间:2014-12-05 17:29:27

标签: c# sql datagridview

我在这里遇到问题,我对数据库有一个查询,我只选择一个表,将其加载到dataSet中并填充DataGridView。

comm = new SqlCommand("Select * from measurement where me_user=@id order by me_date DESC", conn);
comm.Parameters.AddWithValue("@id", this.uId);
daPomiar = new SqlDataAdapter();
daPomiar.SelectCommand = comm;
daPomiar.Fill(dsPomiar, "Pomiary");
dataGridView2.DataSource = dsPomiar;
dataGridView2.DataMember = "Pomiary";

添加到此

SqlCommandBuilder cmdBldr = new SqlCommandBuilder(daPomiar); 

但是,当我尝试使用BindingNavigotor更新数据时:

private void toolStripButton1_Click(object sender, EventArgs e)
{
    SqlCommandBuilder cmdBldr = new SqlCommandBuilder(daPomiar);
    daPomiar.Update(dsPomiar, "Pomiary");
}

然后有时它会起作用,有时它会给我一个错误:

  

多个基表不支持动态SQL生成。

我的问题是,为什么会这样。我正在一个表上工作,所以我可以使用SqlCommandBuilder(我认为)。好吧,错误不规律 - 有时会出现错误,有时它会起作用 - 数据会在表格中更新。

1 个答案:

答案 0 :(得分:0)

您的查询告诉我您正在从measurement表中选择数据。我相信您正在尝试更新到Pomiary表。虽然您提供的是DataMember等,但我认为最佳做法是保持您的DataMember和表名称完全相同。

另外,请确保您的连接已打开,我看不到任何内容,可能会被遗漏。

string tableName = "measurement";
comm = new SqlCommand("Select * from measurement where me_user=@id order by me_date DESC", conn);
comm.Parameters.AddWithValue("@id", this.uId); //not sure what this does
daPomiar = new SqlDataAdapter(comm, tableName);
daPomiar.Fill(dsPomiar, tableName);
dataGridView2.DataSource = dsPomiar;

工具条:

private void toolStripButton1_Click(object sender, EventArgs e)
{
    SqlCommandBuilder cmdBldr = new SqlCommandBuilder(daPomiar);
    daPomiar.Update(dsPomiar, tablename);
}