Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net windows窗体中的多个基表不支持动态SQL生成_Vb.net_Winforms_Datagridview - Fatal编程技术网

Vb.net windows窗体中的多个基表不支持动态SQL生成

Vb.net windows窗体中的多个基表不支持动态SQL生成,vb.net,winforms,datagridview,Vb.net,Winforms,Datagridview,我在vb.net windows应用程序中工作 在我的加载事件中,我给出了这样的代码,用于将数据从不同的表加载到我的datagridview Dim cmd As New SqlCommand("select M.Model,c.Colname,ma.Make from Model_tbl M join Color_tbl C on c.colid=M.mdlid join Make_tbl ma on ma.mkid=c.colid where mdlid=5", con.connect)

我在vb.net windows应用程序中工作

在我的加载事件中,我给出了这样的代码,用于将数据从不同的表加载到我的datagridview

 Dim cmd As New SqlCommand("select M.Model,c.Colname,ma.Make from Model_tbl M join Color_tbl C on c.colid=M.mdlid join Make_tbl ma on ma.mkid=c.colid  where mdlid=5", con.connect)
        Dim builder As SqlClient.SqlCommandBuilder = New SqlCommandBuilder(da)

        da.SelectCommand = cmd
        da.Fill(ds, "MyTable")
        If (ds.Tables(0).Rows.Count > 0) Then
            DGV.DataSource = ds.Tables("MyTable")

        End If 
单击“更新”按钮时,我想从datagridview将数据更新到不同的表中。所以我在更新按钮中给出了这样的代码

 Me.Validate()
        Me.da.Update(Me.ds.Tables("MyTable"))
        Me.ds.AcceptChanges()
但是在这一行中,Me.da.Update(Me.ds.Tables(“MyTable”):

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


我必须在代码中进行哪些更改?如果有人知道如何解决,请帮助我找出答案。

查看将主键添加到原始select语句是否有帮助。先生,您的意思是什么?将主键添加到原始select语句中..我必须添加主键的表是哪一个?最佳实践是,大多数表,尤其是将要更新的表,都定义了主键(PK)。如果所有被调用的表都有PKs,并且连接是一个相等的连接(每侧始终有一条记录),则ADO.Net有可能生成所需的更新SQL。否则,您可能必须为更新提供正确的SQL。或者自己进行更新并刷新正在使用的查询结果。您需要自己执行insert、update和delete命令