Access数据库连接第一次失败
Posted
技术标签:
【中文标题】Access数据库连接第一次失败【英文标题】:Access database connection fails first time 【发布时间】:2013-02-17 12:16:05 【问题描述】:我有一个 C# 2010 WinForms 应用程序,在 .Net Framework 3.5 上运行。此应用程序在启动时会连接到与可执行文件位于同一文件夹中的 Access 2007 accdb 数据库。这是用于连接的代码:
public static OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=LineWatchManager.accdb;Persist Security Info=True;Jet OLEDB:Database Password=<password here>");
public static void CreateConnection()
con.Open();
我遇到的问题是在客户端计算机(Windows 7)上,第一次在启动计算机后启动程序,与数据库的连接总是失败。之后,它连接没有任何问题。
我试图让程序在启动时尝试连接到数据库 3 次,但这无济于事,即使尝试之间有 500 毫秒。我的计算机(Windows 7 或 8)上没有这个问题。
经过大量的调试尝试和在线花费了很多时间,我找到的唯一相关文章是this。遗憾的是没有解决方案,但由于这发生在不使用 Access 的人身上,我猜这要么是 .Net 的错,要么是 C# 的错。任何帮助将不胜感激!
编辑:客户端运行的不是完整版本的 Access,而是 this runtime。
【问题讨论】:
【参考方案1】:试试这个connectionString
,注意|DataDirectory|
这将是你的应用程序的默认路径。
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|/LineWatchManager.accdb;Persist Security Info=True;Jet OLEDB:Database Password=<password here>
【讨论】:
工作就像一个魅力。谢谢!【参考方案2】:使用它来创建连接:
public static OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory| ...");
【讨论】:
这是一个旧的连接字符串,它不适用于 2007 类型的文件 (.accdb) 我放弃了它,因为它包含 |DataDirectory|,这是修复。以上是关于Access数据库连接第一次失败的主要内容,如果未能解决你的问题,请参考以下文章