2017-02-11 5 views
0

ローカルのSQL ServerにVBコードで接続し、Excelファイルからテーブルにデータをロードします。これは私が今までにコードが不完全であったためです。 SQLデータベースで作成したテーブルのフィールド(me_table)は、z、ad、ag、retd、to、wg、Excel sheet1のフィールドはテーブルのフィールドを反映したデータです。おかげVB - ローカルSQLサーバーに接続し、Excelからテーブルにデータをロード

考慮に良いデザインを取っていない

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 
+0

最初のステップは、Excelシートからデータを取得するためのExcelデータ – Plutonix

+0

HERESにリンクロードすることであるような音:http://vb.net-informations.com/excel-2007/vb.net_excel_2007_open_file.htm – obl

+0

をさて、情報とリンクをありがとう。私はそれを調べている。 – Johnseito

答えて

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 
+0

Dimアダプタ=新しいOleDbDataAdapter(String.Format( "SELECT * FROM [{0} $]"、connectionheet)-----コードに感謝しますが、エラーがありますOleDbDataAdapterが定義されていません。 – Johnseito

+0

私は、System.Data.Oledbのインポートを使用する必要があることを発見しました。残りのコードを見ています。ありがとう – Johnseito

+0

非常に良いコード、それは動作します。ありがとう、本当にありがとう。 :-) – Johnseito

関連する問題