2011-06-10 53 views
1

我正在写小型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:磁盘或网络错误

已经花了整整一天的时间让它无法工作。我做错了什么?

+0

检查文件“C:\ Temp \ Temp.mdb”是否存在,如果存在,则通过本文:http://support.microsoft.com/kb/q251254/ – Chandu 2011-06-10 14:12:34

+0

检查此链接。 http://www.mikesdotnetting.com/Article/26/Parameter-Queries-in-ASP.NET-with-MS-Access – Jack 2011-06-10 14:15:58

+0

是的,看过这篇文章。没有运气。它似乎与第一个参数有某种联系,因为当我排除第一个参数并用**“SELECT * INTO TREND FROM TI IN'C:\ Temp \ Source.mdb'替换** CommandText **值时,TI.IdentKp = ?“**它的工作原理像是魅力/ – me9a6yte 2011-06-10 14:17:57

回答

1

这是其他人所说的注释是问题的答案:在Access /喷气/ ACE

没有FROM子句是参数化(除非它是一个子查询中,当然)。

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