Aar*_*rst 1 vb.net sql-server visual-studio-2010
问题:
我需要将DataGridView的内容转储到SQL Server数据库表中.我有datagridview加载正常,没有问题.我对VB.NET不太熟悉,无法理解如何将数据导入数据库表.
代码:(到目前为止)
Dim connection As New Data.SqlClient.SqlConnection
Dim dataAdapter As New Data.SqlClient.SqlDataAdapter
Dim command As New Data.SqlClient.SqlCommand
Dim dataSet As New Data.DataSet
connection.ConnectionString = "Server= server; Database= DB; integrated security=true"
command.CommandText = "INSERT INTO <table> (Col1, Col2, Col3, Col4) VALUES (@Name, @Property, @Value, @Date)"
dataAdapter.InsertCommand.Parameters.Add("@ServerName", SqlDbType.VarChar)
dataAdapter.InsertCommand.Parameters.Add("@Property", SqlDbType.VarChar)
dataAdapter.InsertCommand.Parameters.Add("@Value", SqlDbType.VarChar)
dataAdapter.InsertCommand.Parameters.Add("@CaptureDate", SqlDbType.DateTime)
For i As Integer = 0 To DataGridView.Rows.Count - 1
dataAdapter.InsertCommand.Parameters(0).Value = dgvServerConfig.Rows(i).Cells(0).Value
dataAdapter.InsertCommand.Parameters(1).Value = dgvServerConfig.Rows(i).Cells(1).Value
dataAdapter.InsertCommand.Parameters(2).Value = dgvServerConfig.Rows(i).Cells(2).Value
dataAdapter.InsertCommand.Parameters(3).Value = dgvServerConfig.Rows(i).Cells(3).Value
Next
connection.Open()
command.Connection = connection
dataAdapter.SelectCommand = command
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?什么都没有插入我的桌子.任何帮助,将不胜感激.就像我说的那样,我对VB不太熟悉,所以请放轻松.
好吧,你需要执行命令,而不是简单地添加到DataAdapter.
另外,就像现在编码一样,你根本不需要DataAdapter.
Dim connection As New Data.SqlClient.SqlConnection
Dim command As New Data.SqlClient.SqlCommand
connection.ConnectionString = "Server= server; Database= DB; integrated security=true"
command.CommandText = "INSERT INTO <table> (Col1, Col2, Col3, Col4) VALUES (@Name, @Property, @Value, @Date)"
command.Parameters.Add("@ServerName", SqlDbType.VarChar)
command.Parameters.Add("@Property", SqlDbType.VarChar)
command.Parameters.Add("@Value", SqlDbType.VarChar)
command.Parameters.Add("@CaptureDate", SqlDbType.DateTime)
connection.Open()
command.Connection = connection
For i As Integer = 0 To DataGridView.Rows.Count - 1
command.Parameters(0).Value = dgvServerConfig.Rows(i).Cells(0).Value
command.Parameters(1).Value = dgvServerConfig.Rows(i).Cells(1).Value
command.Parameters(2).Value = dgvServerConfig.Rows(i).Cells(2).Value
command.Parameters(3).Value = dgvServerConfig.Rows(i).Cells(3).Value
command.ExecuteNonQuery()
Next
Run Code Online (Sandbox Code Playgroud)
但是,这会调用数据库一次插入一行.我认为最好只查看一次调用解决插入/更新工作的SqlDataAdapter.Update方法.
使用SqlDataAdapter.Update方法,要求您在填充DataGridView时使用适配器保存的全局变量,并添加为您生成InsertCommand,UpdateCommand和DeleteCommand的SqlCommandBuilder
' At form loading'
Dim adapter As New OleDbDataAdapter()
adapter.SelectCommand = New OleDbCommand("SELECT COL1, COL2,COL3,COL4 FROM TABLE", connection)
Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(adapter)
connection.Open()
Dim myTable As DataTable = New DataTable
adapter.Fill(myTable)
DataGridView.DataSource = myTable
....
' at grid save'
Dim myTable = CType(DataGridView.DataSource, DataTable)
adapter.Update(myTable)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45534 次 |
| 最近记录: |