如何以及在何处修改DataAdapter中自动生成的查询?

时间:2016-10-18 11:51:55

标签: c# .net sql-server winforms datagridview

我正在使用DataGridView,我想从网格中更新我的表。我得到了错误"多个基表不支持动态SQL生成"使用DataAdapter.Update(dataTable)时。原因是我通过加入2个表填充了我的dataTable。

这是我用来从网格更新数据库的功能。

private void button2_Click(object sender, EventArgs e)
    {
        dataGridView2.EndEdit();
        //da.Update(dataTable);
        OleDbCommand com = new OleDbCommand();
        com.Connection = connection;            
        com.CommandText = "update Name_Corpus2 set EngWord = @EngWord where ID = @ID";
        com.Parameters.Add("@ID", OleDbType.Integer, 32, "ID");
        com.Parameters.Add("@EngWord", OleDbType.VarChar, 64, "EngWord");
        da.UpdateCommand = com;
        da.Update(dataTable);
        MessageBox.Show("Updated");
        bind(classification, language);            
    }

据我所知,我必须创建自己的查询来从网格中更新表格。我想知道如何以及在何处输入代码以自动生成更新查询。

1 个答案:

答案 0 :(得分:0)

这是我更新的自动生成更新查询的函数,通过从OleDB命令切换到SqlCommand并为其添加命令文本和参数。谢谢@Steve

private void button2_Click(object sender, EventArgs e)
    {
        dataGridView2.EndEdit();
        SqlCommand com = new SqlCommand();
        com.Connection = con;
        com.Parameters.Add("@EngWord", SqlDbType.NVarChar, 256, "EngWord");
        com.Parameters.Add("@ID", SqlDbType.Int, 32, "ID");
        com.CommandText = "update Name_Corpus2 set EngWord = @EngWord where ID = @ID";

        da.UpdateCommand = com;
        da.Update(dataTable);
        MessageBox.Show("Updated");
        bind(classification, language);            
    }