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