VB - 连接到本地 SQL 服务器并从 excel 将数据加载到表中
Posted
技术标签:
【中文标题】VB - 连接到本地 SQL 服务器并从 excel 将数据加载到表中【英文标题】:VB - connect to local SQL server and load data to table from excel 【发布时间】:2017-06-29 19:35:20 【问题描述】:我想用 VB 代码连接到我的本地 SQL Server 并将数据从我的 Excel 文件加载到表中。到目前为止,我的代码不完整,这就是我所得到的。我在 SQL 数据库中创建的表 (me_table) 的字段是 z、ad、ag、retd、to、wg,在 Excel sheet1 中是包含反映表中字段的数据的列。谢谢
请指教
Imports System.Data
Imports System.Data.SqlClient
Module Module1
Dim myconnection As SqlConnection
Dim mycommand As SqlCommand
Dim dr As SqlDataReader
Dim dr1 As SqlDataReader
Dim ra As Integer
Sub Main()
Dim connectionString As String = "Server=DER7D;Database=testDB;User Id=DER7D\Der;Password="
myconnection = New SqlConnection("server=DER7D;uid=root;pwd=;database=simple")
'you need to provide password for sql server
myconnection.Open()
End Sub
End Module
【问题讨论】:
听起来第一步是加载excel数据 这是一个从 Excel 表中获取数据的链接:vb.net-informations.com/excel-2007/… 好的,感谢您提供的信息和链接。我正在调查它。 【参考方案1】:没有考虑好的设计,这是你需要的。只需更新 SqlConnection 字符串。如果您决定要使用多个工作表,只需将它们添加到工作表变量即可。
Private Sub SaveDataFromSpreadsheet()
Dim filePath = "directory\me_spreadsheet.xlsx"
Dim connectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=0; Extended Properties=Excel 12.0;", filePath)
Dim worksheets As New List(Of String)() From
"Sheet1"
For i As Integer = 0 To worksheets.Count - 1
Dim worksheetName As String = worksheets(i)
Dim adapter = New OleDbDataAdapter(String.Format("SELECT * FROM [0$]", worksheetName), connectionString)
Dim ds = New DataSet()
adapter.Fill(ds, "me_table")
Dim data As DataTable = ds.Tables("me_table")
For x As Integer = 0 To data.Rows.Count - 1
Dim z As String = If(String.IsNullOrEmpty(data.Rows(x).ItemArray(0).ToString()), "", data.Rows(x).ItemArray(0).ToString())
Dim ad As String = If(String.IsNullOrEmpty(data.Rows(x).ItemArray(1).ToString()), "", data.Rows(x).ItemArray(1).ToString())
Dim ag As String = If(String.IsNullOrEmpty(data.Rows(x).ItemArray(2).ToString()), "", data.Rows(x).ItemArray(2).ToString())
Dim retd As String = If(String.IsNullOrEmpty(data.Rows(x).ItemArray(3).ToString()), "", data.Rows(x).ItemArray(3).ToString())
Dim wg As String = If(String.IsNullOrEmpty(data.Rows(x).ItemArray(4).ToString()), "", data.Rows(x).ItemArray(4).ToString())
Using myconnection As New SqlConnection("Data Source=Your-Server;Initial Catalog=me_database;Integrated Security=True")
myconnection.Open()
Dim mycommand As New SqlCommand("INSERT INTO me_Table(z, ad, ag, retd, wg) VALUES(@z, @ad, @ag, @retd, @wg)", myconnection)
mycommand.Parameters.Add(New SqlParameter("@z", z))
mycommand.Parameters.Add(New SqlParameter("@ad", ad))
mycommand.Parameters.Add(New SqlParameter("@ag", ag))
mycommand.Parameters.Add(New SqlParameter("@retd", retd))
mycommand.Parameters.Add(New SqlParameter("@wg", wg))
mycommand.ExecuteNonQuery()
myconnection.Close()
End Using
Next
Next
End Sub
【讨论】:
Dim 适配器 = New OleDbDataAdapter(String.Format("SELECT * FROM [0$]", worksheetName), connectionString) ----.......谢谢代码,但是有一个错误,OleDbDataAdapter is not defined。 我发现问题需要使用Import System.Data.Oledb,我正在看剩下的代码。谢谢 非常好的代码,它可以工作。非常感谢,我真的很感激。 :-) 抱歉再次打扰您 Krob,我注意到它在我的窗口 7 和我的 sql server 2014 中工作,但是此代码不适用于窗口 10、office 360 和 sql sever 2016。错误与代码适配器。填充(da,“zipco”)。错误消息 Microsoft.ace.oledb.12.0 提供程序未在本地计算机上注册。请指教。谢谢 没问题。您需要安装组件。这些中的任何一个都应该工作。 'microsoft.com/en-us/download/details.aspx?id=50040' 'microsoft.com/en-us/download/details.aspx?id=39358' 'microsoft.com/en-us/download/details.aspx?id=13255'以上是关于VB - 连接到本地 SQL 服务器并从 excel 将数据加载到表中的主要内容,如果未能解决你的问题,请参考以下文章
如何在 VB.net 中连接到本地网络上的 Access 数据库?
VB.Net 应用程序无法连接到本地 MySQL,但我可以从命令连接
如何通过 Swift 连接到本地 Firebase 服务器?