2012-08-08 130 views
0

我想寫一個mdb到CVS轉換器與VB.NET。 我想要得到的列標題使用oledbdata讀者的名字,這裏是我的代碼到目前爲止vb.net對象變量或與塊變量未設置,OleDbDataReader

Public Cheadernames As Array 
    Public firstRead As Boolean = False 
    Public columnCount 

    Dim connectionstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strfilename 
    Dim queryString = "SELECT * FROM products" 
    Dim connection As New OleDbConnection(connectionstring) 
    Dim command As New OleDbCommand(queryString, connection) 
    connection.Open() 
    Dim reader As OleDbDataReader = command.ExecuteReader() 
    While reader.Read 
     If firstRead Then 
      columnCount = reader.FieldCount() 
      firstRead = False 
      For i = 0 To columnCount - 1 
       Cheadernames(i) = reader.GetName(i) ' i am getting an error with this line 
       Console.WriteLine(Cheadernames(i)) 
      Next 
     End If 

,所以我試圖把所有的列標題名在一個數組,但註釋行給了我這個錯誤「對象變量或帶塊變量未設置「

+1

您的問題是,Cheadernames返回數組不會初始化。 您需要首先使用返回數組(應該初始化),然後返回該數組。看看http://www.dotnetperls.com/array-vbnet和返回數組部分。 – 2012-08-08 04:24:44

回答

3

您的Cheadernames變量是一個空數組,沒有元素,也沒有類型。這只是錯誤的:你幾乎從不聲明變量或方法參數「As Array」。相反,你想這樣的事情:

Private HeaderHames() As String 
Private firstRead As Boolean = True 
Private columnCount As Integer 

Dim connectionstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strfilename 
Dim queryString = "SELECT * FROM products" 
Using connection As New OleDbConnection(connectionstring), _ 
     command As New OleDbCommand(queryString, connection) 

    connection.Open() 
    Using reader As OleDbDataReader = command.ExecuteReader() 
     While reader.Read 
      If firstRead Then 
       columnCount = reader.FieldCount() 
       HeaderNames = New String(columnCount-1) 
       firstRead = False 
       For i = 0 To columnCount - 1 
        HeaderNames(i) = reader.GetName(i) 
        Console.WriteLine(HeaderNames(i)) 
       Next 
      End If 
      '... 
     End While 
    End Using 
End Using 
相關問題