如何在.NET4.5.1中连接到MDB文件(Access数据库)?

时间:2013-10-22 18:29:36

标签: asp.net ms-access asp.net-web-api .net-4.5 visual-studio-2013

我已经在我的ASP.NET WebAPI项目的App_Data文件夹中添加了一个MDB表。

但是因为这看起来很奇怪(我猜这就是原因),我找不到任何关于如何进行编程连接的例子。有人有任何示例代码吗?

更新

我试过了:

using (var conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\PlatypusBill\Data\PlatypusDAT03.mdb;Persist Security Info=False;"))
using (var comm = conn.CreateCommand())
{
    comm.CommandText = "SELECT * FROM HERE2ETERNITY WHERE B = FinaleOfSeem";
    comm.CommandType = CommandType.Text;
    conn.Open();
    var returnValue = comm.ExecuteScalar(); // <-- fails here with "The remote server returned an error: (500) Internal Server Error."
}

...但是正如评论所示,我收到了错误。

更新2

现在运行,使用以下代码:

using (var conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;User ID=poisonousSpur;Password=venomousSpur;Data Source=C:\PlatypusBill\DATA\PlatypusDAT01.MDB;Persist Security Info=False;Jet OLEDB:System database=C:\PlatypusBill\Data\duckbill.mdw"))
using (var cmd = conn.CreateCommand())
{
    cmd.CommandText = "SELECT COUNT(*) FROM duckbilled_platypi";
    cmd.CommandType = CommandType.Text;
    conn.Open();
    var returnValue = cmd.ExecuteScalar();
    if (returnValue != null)
    {
        string s = returnValue.ToString();
        Add(new Platypus { Id = 77, DuckbillId = s, DuckbillName = s });
    }
}

但returnValue == 0,虽然我可以在Access中运行相同的查询,但它返回预期的(非0)值。

更新3

我不知道为什么它会有所作为,但我切换到数据库的不同“版本”(从DB1到DB3),现在它可以工作。他们两个在Access中直接工作 - 我可以看到数据,查询数据等;所以为什么它对我的项目产生影响,我不知道。但至少它现在正在运作。

更新4

它今天再次停止工作,给我同样的错误消息(“远程服务器返回错误:(500)内部服务器错误”),这次将“持久安全信息=假”更改为“持久安全信息=真的“在连接字符串中解决了它。

0 个答案:

没有答案