2014-11-21 49 views
0

我有一系列的excel文檔,所有這些文檔都有不同的結構,我試圖導入到SQL數據庫中。我提出的解決方案是讓用戶將電子表格中的列與數據庫中的列進行映射。我遇到的問題是逐個獲取數據庫列名,我可以一次使用Microsoft SQL Server Management Studio中的以下SQL命令將它們全部獲取,但我可以爲我的生活獲取它來遍歷它們,並且我不知道我會如何將其轉換爲vb.net。逐個遍歷表中的每個列名稱

SELECT [name] AS [Column Name] 
FROM syscolumns 
WHERE id = (SELECT id FROM sysobjects WHERE type = 'U' AND [Name] = 'table1') 

我目前擁有的用戶從列表框中選擇電子表格列,我想數據庫列出現在它上面的標籤,這樣當用戶點擊接下來我就可以重新設置列表框,並移動到下一個數據庫列,同時將兩個列名映射到二維數組中。

+0

你在VB做嘗試,並通過迭代列? – Jaques 2014-11-21 08:16:30

+0

你想在vb.net中做到嗎?提供更多信息。你想要完成什麼。你想在哪裏迭代列?你爲什麼要使用vb.net? – Jaques 2014-11-21 08:18:13

+0

我試圖使用TableAdapter,但沒有得到它的工作,所以基本上即時在完全損失,所以任何幫助將不勝感激。 – crackruckles 2014-11-21 08:18:55

回答

1

試試這個

 using (var conn = new SqlConnection("<your connection string>)")) 
     using (var cmd = new SqlCommand("SELECT * from table1)", conn)) 
     { 
      conn.Open(); 
      using (var reader = cmd.ExecuteReader()) 
      { 
       for (int i = 0; i < reader.FieldCount; i++) 
       { 
        reader.GetName(i); 
       } 
      } 
     } 
+0

好吧,我可以讓所有的工作,除了你已經把//Debug.WriteLn(閱讀[「名稱」] ToString()); 我無法找到翻譯。 – crackruckles 2014-11-21 08:57:13

+0

我剛剛在那裏添加了它。那就是你將填充你的組合的地方。無論如何,語法可能是錯誤的。這只是一個評論 – Jaques 2014-11-21 09:13:03

+0

感謝您的幫助,我設法弄清楚,生病發布答案我下面提出。 – crackruckles 2014-11-21 09:16:47

0
Using conn As New SqlConnection(My.Settings.UK_DATABASE_2014ConnectionString) 
     Using cmd As New SqlCommand("select * from table1;", conn) 
      conn.Open() 
      Dim reader As SqlDataReader = cmd.ExecuteReader() 
      If i >= reader.FieldCount Then 
       Return True 
      Else 
       Label1.Text = reader.GetName(i) 
       i = i + 1 
      End If 
     End Using 
    End Using 
+0

修復你的循環。在讀者你有reader.FieldCount,那麼你不需要如果或退出 – Jaques 2014-11-21 09:26:34

+0

我已經更新了我的答案,告訴你 – Jaques 2014-11-21 09:31:52

+0

它看起來像偉大的思想認爲,我剛剛注意到並修復它與FieldCount :) – crackruckles 2014-11-21 09:40:03