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数据库连接第一次失败的主要内容,如果未能解决你的问题,请参考以下文章

MS Access中的ODBC连接失败

Access 数据库远程连接

通过DBI从Access到R的连接

Mysql远程连接失败

为啥在 Access 中使用 UNION ALL 时出现 ODBC 连接失败错误?

MFC怎么连接数据库