【发布时间】:2019-08-29 15:55:36
【问题描述】:
我有一段可以重复使用的代码,它可以帮助我连接到 adt 数据库并读取数据。
using Advantage.Data.Provider;
...
protected DataTable FillTable(string tableName)
{
DataTable table = new DataTable();
using (var conn = new AdsConnection(connectionString))
using (var adapter = new AdsDataAdapter())
using (var cmd = new AdsCommand())
{
cmd.Connection = conn;
cmd.CommandText = "select * from " + tableName;
adapter.SelectCommand = cmd;
conn.Open();
adapter.Fill(table);
conn.Close();
}
return table;
}
此代码在我第一次运行时完美运行,但第二次使用不同的表名调用它时会出现以下异常。
System.EntryPointNotFoundException: 'Unable to find an entry point named 'AdsIsConnectionAlive' in DLL 'ace32.dll'.'
我想要一个解释。
我已尝试阅读此错误,但我发现的所有可能情况都无法解释为什么它第一次起作用。他们提到了 DLL 的问题,例如版本错误或与 .NET 版本不兼容,...
如果我更改调用顺序,代码第二次仍然失败,所以我知道问题不在于表的名称或我调用代码的方式。问题可能是我没有正确关闭连接。我尝试添加更多大括号以确保该部分正确运行,并且我已经调试以确保第一个 conn.Close(); 正确执行。
我可以将我的所有代码放在这段代码中,并且只使用一个连接,只要我需要它就保持打开状态。这会绕过我的问题,但我想避免这种情况并了解我做错了什么。
【问题讨论】:
标签: c# advantage-database-server