做一个简单的工业项目,连接一个2003的access数据库。
private static string connStr = "Provider = Microsoft.Jet.OLEDB.4.0;DataSource = ";
private OleDbConnection conn = null;
OpenFileDialog openDB = new OpenFileDialog();
openDB.Filter = "数据库文件|*.mdb";
openDB.RestoreDirectory = true;
openDB.FilterIndex = 1;
if (openDB.ShowDialog() == DialogResult.OK)
{
filename = openDB.FileName;
conn = new OleDbConnection(connStr + filename);
}
简单的很吧,结果刚开始就来个下马威
“ServerVersion = “conn.ServerVersion”引发了“System.InvalidOperationException”类型的异常”
OMG,这是怎么回事?
网上查了查,一说是03和07的连接字符串不一样。但是我看了看,我用的就是03版,驱动就是Jet.OLEDB 4.0
继续调试,异常信息里有一句“找不到可安装的ISAM”,百度这个,发现有人说是文件名中带有非法字符。再检查一下,文件名ok的。
再向后翻翻,有人一语道破:
字符串是copy的吧,“Data Source”中间需要有空格!
private static string connStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = ";
加上空格,一切OK