我已将一个 MDB 表添加到我的 ASP.NET WebAPI 项目的 App_Data 文件夹中。
但由于这似乎是一件很奇怪的事情(我想这就是原因),我找不到任何关于如何进行编程连接的示例。有人有任何示例代码吗?
更新
我试过这个:
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)内部服务器错误”),这次将“Persist Security Info=False”更改为“Persist Security Info=True”连接字符串解决了它。