2014-02-20 30 views
0

嗨我繼續獲取選擇命令屬性在調用Fill之前未被初始化。有人能幫助我嗎。我不知道如何解決這個錯誤。Select Comand屬性

Public Class Form1 

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     'Fill retrieves rows from the data source by using the SELECT statement 
     Dim con As New OleDb.OleDbConnection 
     Dim da As OleDb.OleDbDataAdapter 

     Dim ds As New StudentDataSet 

     da = New OleDb.OleDbDataAdapter 
     da.Fill(ds) 


    End Sub 

    ' ... 

End Class 
+1

之前,你可以調用填充,您需要添加一個SELECT語句,該語句定義要用來填充DataSet的數據。你可以在構造函數中提供一個語句。 – Markus

回答

0

有一個強類型DataSet並不意味着,如果不指定命令來提取數據

Using con = New OleDb.OleDbConnection(....connection string here....) 
Using da = New OleDb.OleDbDataAdapter("SELECT * FROM Students", con) 
    Dim ds As New StudentDataSet 
    da.Fill(ds) 

    ... use your dataset 


End Using 
End Using 

請記住,連接需要知道數據被自動加載位於您的數據庫,這是一個connection string is required。然後,在完成使用OleDbConnection和OleDbDataAdapter時,每個對象都應該關閉並銷燬,這就是Using Statement

0

的原因您已使用默認構造函數初始化了OleDb.OleDbDataAdapter。所以它還不知道它是SelectCommand。如果沒有指定的選擇命令,則無法填充DataTableDataSet。因此,你可以使用屬性或構造函數:

Dim da As New OleDb.OleDbDataAdapter("SELECT Col1, Col2 FROM dbo.TableName ORDER BY Col2", con) 

但是,你應該使用Using-statement,以確保一切實現IDisposable得到妥善處置甚至錯誤:

Using con = New OleDb.OleDbConnection("ConnectionString Here") 
    Using da = New OleDb.OleDbDataAdapter("SELECT Col1, Col2 FROM dbo.TableName ORDER BY Col2", con) 
     da.Fill(ds) 
    End Using 
End Using