database 如何使用 datagridview (vb.net) 更新数据库

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/1993558/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-08 07:33:58  来源:igfitidea点击:

How to update database by using datagridview (vb.net)

databasevb.netms-access

提问by user225269

Here is my code, but its the other way around, it commits changes to the datagridview when the database is updated.

这是我的代码,但反过来说,它会在数据库更新时提交对 datagridview 的更改。

Imports System    
Imports System.Data    
Imports System.Data.OleDb    
Imports System.Windows.Forms

Public Class Form1    
Inherits System.Windows.Forms.Form

    Private bindingSource1 As New BindingSource()    
    Private dataAdapter As New OleDbDataAdapter()

    <STAThreadAttribute()> _    
    Public Shared Sub Main()    
        Application.Run(New Form1())    
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load    
        Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\GRN.mdb;User Id=admin;Password=;"    
        Dim selectCommand As String    
        Dim connection As New OleDbConnection(connectionString)

        selectCommand = "select * from GRNITEMS ORDER BY GRNNO, ITEMCODE"    
        Me.dataAdapter = New OleDbDataAdapter(selectCommand, connection)

        With DataGridView1    
            .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells    
            .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader    
            .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader    
        End With

        Dim commandBuilder As New OleDbCommandBuilder(Me.dataAdapter)    
        Dim table As New DataTable()

        table.Locale = System.Globalization.CultureInfo.InvariantCulture

        Me.dataAdapter.Fill(table)    
        Me.bindingSource1.DataSource = table

        Dim data As New DataSet()

        data.Locale = System.Globalization.CultureInfo.InvariantCulture

        DataGridView1.DataSource = Me.bindingSource1    
        Me.DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Aqua    
        Me.DataGridView1.AutoResizeColumns( _    
            DataGridViewAutoSizeColumnsMode.AllCells)

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim table As New DataTable()

        Me.bindingSource1 = Me.DataGridView1.DataSource    
        table = Me.bindingSource1.DataSource

        Me.dataAdapter.Update(table)    
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Me.Close()   
    End Sub

End Class

采纳答案by Tony The Lion

this line:

这一行:

Me.dataAdapter.Update(table)

updates your table with recent data from your database using your dataAdapter.

使用 dataAdapter 使用数据库中的最新数据更新您的表。

That's where the problem is. I'm not familiar enough with VB.NET to write you the code to update your database with your new data from gridview.

这就是问题所在。我对 VB.NET 不够熟悉,无法为您编写代码以使用来自 gridview 的新数据更新数据库。

回答by amin

dataAdapter.Fill(dataSource.tableName)

dataAdapter.Fill(dataSource.tableName)