2013-08-01 63 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)