日期:2014-05-17  浏览次数:20861 次

『100分』C#连接Access数据偶尔出错 求建立连接时完整的connString格式
曾经提过类似问题,见如下地址:

http://topic.csdn.net/u/20090303/18/519e8fb8-a304-4604-b35e-2b4301437cb0.html?1378107631

现在又出现了偶尔会在open()时出现下述异常的现象。 

System.Data.OleDb.OleDbException 
未指定的错误 

C# code

string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\DB\\log.mdb";
OleDbConnection connection = new OleDbConnection(connString);



以上代码中connString的完整格式是什么?会不会是建立数据库连接时,有其他什么约束造成的?因为该数据库没有设置用户权限,所以就写成了以上的格式,是不是还有什么控制的信息没有写上?
完全没有搞明白是怎么回事。。。为什么偶尔会出错?偶尔的条件也是不确定,而且按照出错的规律操作,又不会出错。。。晕倒。。。

------解决方案--------------------
估计要靠你自己了,从google搜不到东西,说明碰到的人不多。
------解决方案--------------------
应该不是链接字符串的问题
这里有所有的链接字符串:http://www.connectionstrings.com/access
------解决方案--------------------
探讨
引用:
出错的代码贴上来看看


C# code//Application.StartupPath 启动了应用程序的可执行文件的路径,不包括可执行文件的名称。//appPath为主窗口里一变量,为方便代码展示,贴到这里来的。该值仅在主窗口Load时赋值。stringappPath=Application.StartupPath+"\\";

...privatestaticstringconnString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+appPath+"DB\\log.mdb";


------解决方案--------------------
下面是获取三种联接到ACCESS联接字符串的函数

/// <summary>
/// 获得连接Access数据库文件的联接字符串(无密码模式)
/// </summary>
/// <param name="dbPath">数据库路径</param>
/// <returns>联接字符串</returns>
static public string GetAccessConnStr(string dbPath)
{
return @"Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data source=" + dbPath;
}
/// <summary>
/// 获得连接Access数据库文件的联接字符串(仅密码模式)
/// </summary>
/// <param name="dbPath">Access数据库路径</param>
/// <param name="userPwd">数据库密码</param>
/// <returns>联接字符串</returns>
static public string GetAccessConnStr(string dbPath, string userPwd)
{
return @"Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data source=" + dbPath + ";Jet OLEDB:Database Password=" + userPwd;
}
/// <summary>
/// 获得连接Access数据库文件的联接字符串(使用用户名与密码模式)
/// </summary>
/// <param name="dbPath">Access数据库路径</param>
/// <param name="userId">用户名</param>
/// <param name="userPwd">密码</param>
/// <returns>联接字符串</returns>
static public string GetAccessConnStr(string dbPath, string userId, string userPwd)
{
return @"Provider=Microsoft.Jet.OLEDB.4.0;Password=" + userPwd + ";User ID=" + userId + ";Data Source=" + dbPath + ";";
}