Sql 将datagridview的所有数据插入数据库vb.net

Sql 将datagridview的所有数据插入数据库vb.net,sql,database,vb.net,ms-access,Sql,Database,Vb.net,Ms Access,大家好,我的前辈,我不知道为什么它是没有任何错误显示,不能保存在Access数据库 整个代码都在按钮中,我解释了我希望我的程序如何工作: 1.)我有一个未绑定的datagridview,可以从几个文本框添加数据。 2.)一个名为签出的按钮,该按钮用于将我的datagridview数据传递到Access数据库……这是我面临的问题……有人能帮我解决吗 太多了 我也提到了这个链接,但我对C不太熟悉。你让事情变得比需要的更复杂。只需创建一个DataTable,并将其绑定到网格。当需要保存数据时,只需调用

大家好,我的前辈,我不知道为什么它是没有任何错误显示,不能保存在Access数据库

整个代码都在按钮中,我解释了我希望我的程序如何工作:

1.)我有一个未绑定的datagridview,可以从几个文本框添加数据。 2.)一个名为签出的按钮,该按钮用于将我的datagridview数据传递到Access数据库……这是我面临的问题……有人能帮我解决吗

太多了


我也提到了这个链接,但我对C不太熟悉。

你让事情变得比需要的更复杂。只需创建一个
DataTable
,并将其绑定到网格。当需要保存数据时,只需调用一次数据适配器的
Update
方法即可保存批次。通过调用
FillSchema
使用相同的数据适配器在
DataTable
中生成架构,然后使用命令生成器生成
INSERT
命令,或者可以手动生成架构和
INSERT
命令。以下是一些例子:


要求您在for循环之前打开连接并删除命令处的注释。ExecuteNonQuery()

您的代码如下所示

    Dim Con As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Music_Sales_Database.mdb;")
    Dim Com As OleDbCommand
    Dim SaleCode As Integer
    Dim MusicID As String
    Dim SubTotalPrice As Decimal
    Dim Copies1 As Integer
    Dim STR1 As String

    SaleCode = 1

    Com = New OleDbCommand
    Com.Connection = Con

    For x As Integer = 0 To SalesDataGridView.Rows.Count - 1
        MusicID = SalesDataGridView.Rows(x).Cells(0).Value
        SubTotalPrice = SalesDataGridView.Rows(x).Cells(5).Value
        Copies1 = SalesDataGridView.Rows(x).Cells(3).Value
        STR1 = "INSERT INTO Sales(Sales_ID, Sales_Date, Copies, Music_ID, Staff_ID, Total_Price) VALUES (@Sales_ID, @Sales_Date, @Copies, @Music_ID, @Staff_ID, @Total_Price)"
        Dim Comm As New OleDbCommand(STR1, Con)
        Comm.Parameters.AddWithValue("@Sales_ID", SaleCode)
        Comm.Parameters.AddWithValue("@Sales_Date", txtDateAndTime)
        Comm.Parameters.AddWithValue("@Copies", Copies1)
        Comm.Parameters.AddWithValue("@Music_ID", MusicID)
        Comm.Parameters.AddWithValue("@Staff_ID", txtStaff_ID)
        Comm.Parameters.AddWithValue("@Total_Price", SubTotalPrice)
        'Command.ExecuteNonQuery()
        Comm.Dispose()
    Next
    Connection.Close()

为什么
Command.ExecuteOnQuery()
被注释掉了?这使它起作用。另外,
Comm.Dispose()
应该位于下一个块之外,以插入所有行。否则,解释它如何失败或出现任何错误都会很有帮助。@PUROTIX显示“对象引用未设置为对象的实例”。当nvr注释掉命令时。ExecuteQuery()您的OLEDBCommand对象被创建为
Com
;但您也可以创建
Comm
,然后使用
Command
。您只需要一个OleDBCommand对象,请选择一个。下面是一个如何使用块的示例-
Dim Con As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Music_Sales_Database.mdb;")
Dim Com As OleDbCommand
Dim SaleCode As Integer
Dim MusicID As String
Dim SubTotalPrice As Decimal
Dim Copies1 As Integer
Dim STR1 As String

SaleCode = 1

Com = New OleDbCommand
Com.Connection = Con
Connection.open()
For x As Integer = 0 To SalesDataGridView.Rows.Count - 1
    MusicID = SalesDataGridView.Rows(x).Cells(0).Value
    SubTotalPrice = SalesDataGridView.Rows(x).Cells(5).Value
    Copies1 = SalesDataGridView.Rows(x).Cells(3).Value
    STR1 = "INSERT INTO Sales(Sales_ID, Sales_Date, Copies, Music_ID, Staff_ID, Total_Price) VALUES (@Sales_ID, @Sales_Date, @Copies, @Music_ID, @Staff_ID, @Total_Price)"
    Dim Comm As New OleDbCommand(STR1, Con)
    Comm.Parameters.AddWithValue("@Sales_ID", SaleCode)
    Comm.Parameters.AddWithValue("@Sales_Date", txtDateAndTime)
    Comm.Parameters.AddWithValue("@Copies", Copies1)
    Comm.Parameters.AddWithValue("@Music_ID", MusicID)
    Comm.Parameters.AddWithValue("@Staff_ID", txtStaff_ID)
    Comm.Parameters.AddWithValue("@Total_Price", SubTotalPrice)
    Command.ExecuteNonQuery()
    Comm.Dispose()
Next
Connection.Close()