外部数据库路径作为参数化查询到Access的参数

时间:2011-06-10 14:10:03

标签: sql vb.net ms-access

我正在编写小型VB.Net应用程序,该应用程序应根据从某些外部MDB文件(Access 2007)收集的数据构建报告。计划此应用程序将使用参数化SQL查询来收集数据。这些查询的参数之一是外部MDB文件的路径。

以下是示例代码:

Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" _
                                & "Data Source=C:\Temp\Temp.mdb;")
conn.Open()

Dim cmd As New OleDbCommand()
cmd.Connection = conn
cmd.CommandType = CommandType.Text
cmd.CommandText = "SELECT * INTO Trend FROM TI IN '?' WHERE TI.Id=?;"
With cmd.Parameters
    .Add("@p1", OleDbType.VarChar).Value = "C:\Temp\Source.mdb"
    .Add("@p2", OleDbType.Integer).Value = 5
End With

cmd.ExecuteNonQuery()
conn.Close()

看起来很简单,但不起作用。启动后,我的应用程序抛出异常 - System.Data.OleDb.OleDbException:磁盘或网络错误

花了一整天时间让它工作没有成功。我做错了什么?

1 个答案:

答案 0 :(得分:1)

这是其他人建议的评论是这个问题的答案:

Access / Jet / ACE FROM子句中的任何内容都不可参数化(当然,除非它在子查询中)。

使用Access / Jet / ACE,您唯一的选择是使用其他方法即时编写FROM子句。