我正在 VS Community 2015 中编码。我使用的是一台装有 Windows 10 的新计算机,刚刚从 8.0 升级。我有一个独立的(没有Office套件)Access 2016 安装。一切正常。
我找不到可以为我提供 Access 2016 连接字符串的蹲点。所以 我尝试了这段代码(十几个版本):
public OleDbConnection TryOleDbConnection()
{
string ConnString =
"Provider=Microsoft.ACE.OLEDB.15.0;" +
"Data Source=" +
"C:\\A A A A AutoBot4\\CALENDAR\\CALENDAR.addcb;" +
"User Id=admin; Password=;";
MessageBox.Show(ConnString);
OleDbConnection OLE = new OleDbConnection();
OLE.ConnectionString = ConnString;
try
{
OLE.Open();
MessageBox.Show("Opened");
}
catch (Exception ex)
{
MessageBox.Show("Failed");
}
finally
{
}
return OLE;
}
我无法让任何东西工作,并且不知道如何获得更好的错误信息。我在一台未联网的计算机上,并且是唯一的用户和管理员。 我也对用户 ID 和密码感到困惑,不明白它们是否指的是系统或数据库或其他东西。任何帮助将不胜感激!我确信一旦建立连接,剩下的事情就会很容易。
最佳答案
你可以使用这样的函数:
public void FindProvider()
{
var reader = OleDbEnumerator.GetRootEnumerator();
var list = new List<String>();
while (reader.Read())
{
for (var i = 0; i < reader.FieldCount; i++)
{
if (reader.GetName(i) == "SOURCES_NAME")
{
list.Add(reader.GetValue(i).ToString());
}
}
}
reader.Close();
foreach (var provider in list)
{
if (provider.StartsWith("Microsoft.ACE.OLEDB"))
{
this.provider = provider.ToString();
}
}
}
它所做的只是搜索系统上可能的提供程序并选择与 Microsoft.ACE.OLEDB 匹配的提供程序,但您可以将其更改为您想要的。您还需要注意,如果您有 64 位版本的 Office 2016,您的应用程序必须在 64 位模式下运行;如果您的 Office 版本是 32 位,则您的应用程序必须在 32 位模式下运行。
关于c# - 无法弄清楚 OLE DB 连接,C# 到 Access 2016,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35618860/