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

Asp.net 如何连接到.NET4.5.1中的MDB文件(Access数据库)?,asp.net,ms-access,asp.net-web-api,.net-4.5,visual-studio-2013,Asp.net,Ms Access,Asp.net Web Api,.net 4.5,Visual Studio 2013,我已将MDB表添加到ASP.NET WebAPI项目的App_数据文件夹中 但是,由于这似乎是一件很奇怪的事情(我想这就是原因),我找不到任何关于如何进行编程连接的示例。有人有这方面的示例代码吗 使现代化 我试过这个: using (var conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\PlatypusBill\Data\PlatypusDAT03.mdb;Persist Securit

我已将MDB表添加到ASP.NET WebAPI项目的App_数据文件夹中

但是,由于这似乎是一件很奇怪的事情(我想这就是原因),我找不到任何关于如何进行编程连接的示例。有人有这方面的示例代码吗

使现代化 我试过这个:

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."
}
但是returnValue==0,尽管我可以在Access中运行相同的查询,并且它返回预期的(非0)值

更新3 我不知道为什么会有不同,但我切换到了数据库的不同“版本”(从DB1到DB3),现在它可以工作了。两者在Access中直接工作相同-我可以查看数据、查询数据等。;所以我不知道为什么这会对我的项目产生影响。但至少它现在起作用了

更新4
它今天又停止了工作,给了我同样的错误消息(“远程服务器返回了一个错误:(500)内部服务器错误”),这次将连接字符串中的“Persist Security Info=False”更改为“Persist Security Info=True”,解决了这个问题。

conn.Open()显然没有崩溃,看起来数据库连接正在建立。您可以尝试一个超级简单的SQL语句,如
SELECT COUNT(*)FROM TableName
并查看
.ExecuteScalar()
是否返回一个好的
Int32
值?好的,我尝试了最简单的SQL语句,但仍然得到了错误消息;正如您所注意到的,Open()可以工作,但是ExecuteScalar()不能……奇怪……如果FinaleOfSeem是一个字符串,那么它需要用撇号括起来,如果它更可能是一个变量,那么它需要被带到sql之外并连接到它。我也希望你的领域实际上没有被命名为“B”!如果我在Access中运行查询,它将返回我期望的数字。@AndyG:不,这是一个虚假的SQL语句;我只是不想说出真正的表名;有些雇主是“偏执狂”。现在(用于测试):从Bla中选择COUNT(*)(其中“Bla”是表名)。顺便说一句,你不是我从威斯康星州认识的安迪·G,是吗?
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 });
    }
}