我正在维护一些旧代码,并且在通过Jet.OleDB连接到Windows 7中的MSAccess数据库时遇到意外错误
在Windows 7中,以下代码失败,因为驱动程序找不到路径。 Windows XP和Windows 10中的相同代码工作并抛出预期的错误(因为.mdb文件为空)
using System.Data.OleDb;
namespace unicode_oledb_problem
{
class Program
{
static void Main(string[] args)
{
string path = @"ł.mdb";
using (System.IO.File.Create(path)) { }
string connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};", path);
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
conn.Open();
// windows xp: OleDbException - Unrecognized database format
// windows 7: OleDbException - Could not find file: ...
// windows 10: OleDbException - Unrecognized database format
}
}
}
}