[英]Update database with dataviewgrid on joined query
使用dataviewgrid更改(主要是復選框/位字段)提供的信息更新我的SQL Server。
我可以填充我的dataviewgrid,如果我只使用一個表,甚至可以更新它,問題是我希望我的查詢具有三個表,以便顯示信息。
我嘗試復制一些教程並自行更改,但似乎沒有點擊。
自從我用VB編碼以來已經有一段時間了,所以還有。
到目前為止,我有:
Imports System.Data.SqlClient
Public Class Form1
Dim myDA1 As SqlDataAdapter
Dim myDataSet1 As DataSet
Dim myDA2 As SqlDataAdapter
Dim myDataSet2 As DataSet
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim con2 As SqlConnection = New SqlConnection("Data Source=CONNECTION STRING WORKS FINE")
Dim cmd2 As SqlCommand = New SqlCommand("SELECT x1,y2,z1 from a inner join b where a.x1=b.x2", con2)
con2.Open()
myDA2 = New SqlDataAdapter(cmd2)
Dim builder2 As SqlCommandBuilder = New SqlCommandBuilder(myDA2)
myDataSet2 = New DataSet()
myDA2.Fill(myDataSet2, "MyTable2")
DataGridView2.DataSource = myDataSet2.Tables("MyTable2").DefaultView
con2.Close()
con2 = Nothing
End Sub
Private Sub DataGridView2_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView2.CellContentClick
Me.Validate()
Me.myDA2.Update(Me.myDataSet2.Tables("MyTable2"))
Me.myDataSet2.AcceptChanges()
End Sub
End Class
它是在基本查詢上更新的,是的,但是我需要在聯接查詢上使其更新。
正如我在評論中說的那樣,使用CommandBuilder
時不能使用CommandBuilder
。 您需要為DataAdapter提供自己的Update,Insert和Delete命令。 確保使用包含源列名稱的Parameters.Add方法的重載。 這提供了DataAdapter的映射。 我在機器上使用數據庫來顯示代碼。 您可能要添加用於插入和刪除的命令。
Private da As SqlDataAdapter
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
da = New SqlDataAdapter
Dim dt As New DataTable
Dim query = "Select Article.ArticleID, Article.Title, Author.LastName From Article Inner Join Author on Article.AuthorID = Author.AuthorID"
Using cn As New SqlConnection(My.Settings.PublishersConnection)
Using cmd As New SqlCommand(query, cn)
da.SelectCommand = cmd
da.Fill(dt)
End Using
End Using
DataGridView1.DataSource = dt
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Dim Uquery = "Update Article Set Title = @Title Where ArticleID = @ID;"
Dim dt As DataTable = CType(DataGridView1.DataSource, DataTable)
Using cn As New SqlConnection(My.Settings.PublishersConnection)
Using UCommand As New SqlCommand(Uquery, cn)
UCommand.Parameters.Add("@Title", SqlDbType.VarChar, 50, "Title")
UCommand.Parameters.Add("@ID", SqlDbType.Int, 4, "ArticleID")
da.UpdateCommand = UCommand
da.Update(dt)
End Using
End Using
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.