2013-08-01 64 views
1

幫助,我的代碼在da.fill(dt)上失敗。錯誤說OleDBexception了未處理 沒有爲一個或多個必需的參數OleDBDataAdapter填充錯誤使用VB.net和MS訪問選擇語句

我的代碼

 Dim Conn As OleDb.OleDbConnection = New OleDb.OleDbConnection 
     Dim connString As String 
     Dim da As OleDb.OleDbDataAdapter 
     Dim dt As New DataTable 
     Dim oCmd As OleDb.OleDbCommand 
     Dim SQLString As String 

     connString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source =" & sRemoteAccessFolder & "Projects.MDB" 
     Conn.ConnectionString = connString 
     Conn.Open() 
     SQLString = "select * from tblProjects where ProjectNumber='10100'" 


     da = New OleDb.OleDbDataAdapter(SQLString, Conn) 
     da.Fill(dt) 

任何想法給定值?

THXü

+0

如果在沒有where子句的情況下運行查詢會發生什麼? –

+0

我錯過了它在da.fill –

+0

@ T.S上的故障。如果是這種情況,那麼Conn.Open將失敗,但錯誤消息將會非常不同 – Steve

回答

1

此行有可能的問題:

SQLString = "select * from tblProjects where ProjectNumber='10100'" 

領域ProjectNumber必須匹配的是在表中。如果有一個空間,那麼你需要包括括號:

SQLString = "select * from tblProjects where [Project Number]='10100'" 

如果它是一個數字字段,然後刪除引號:

SQLString = "select * from tblProjects where [Project Number]=10100" 

如果仍然有錯誤,那麼請確保您有一個表在數據庫中調用tblProjects。

一如既往,請務必使用參數,而不是完全手動完成sql語句。這將避免潛在的SQL注入問題。

+0

你是對的先生。我在SQL查詢中犯了一個錯誤。正確的字符串是select * from tblProjects其中[ProjectID] ='10100' – BobNoobGuy

0

我很久沒使用過它了。但可能會做如下。

connString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source =" & sRemoteAccessFolder & "Projects.MDB" 
    Conn.ConnectionString = connString 
    Conn.Open() 

    Dim oCmd As new OleDb.OleDbCommand 
    oCmd.CommandText= "select ...." 
    Dim da As OleDb.OleDbDataAdapter 
    Dim dt As New DataTable 

    da = New OleDb.OleDbDataAdapter(oCmd) 
    da.Fill(dt)