与c#windows应用程序的Jet 4.0连接问题

时间:2010-08-04 11:44:48

标签: c# ms-access oledb database-connection

我正在开发一个在服务器机器上连续运行的win .net应用程序。应用程序将与使用Jet 4.0 OLEDB提供程序驻留在多个客户端计算机中的访问(mdb)数据库连接。

每个已连接的数据库已被本地安装的其他应用程序使用。

当客户端计算机一直处于活动状态时,我的应用程序已成功与所有数据库通信。

但是,如果我的一台客户端计算机出现故障(例如系统或网络)并重新启动,则应用程序无法重新连接到该特定数据库,但可以通过网络访问。

即使我尝试以编程方式重新启动我的应用程序以重新建立连接。但是,它也失败了。

应用程序只是抛出

“磁盘或网络错误”

“未指定错误”

“无法启动您的应用程序。工作组信息文件丢失或由其他用户独占打开。”

任何?

1 个答案:

答案 0 :(得分:0)

是。

实际上,我正在为与应用程序关联的每个数据库使用带有以下代码的静态对象。

DbProviderFactory factory;
DbConnection connection;
DbDataAdapter dataAdapter;

void SetConnection(ConnectionStringSettings settings) {
    factory = DbProviderFactories.GetFactory(settings.ProviderName);
    if (factory != null) {
        if (connection == null) {
            connection = factory.CreateConnection();
            dataAdapter = factory.CreateDataAdapter();                    
            connection.ConnectionString = settings.ConnectionString;
        }
    }
}

public DataTable GetTable(string statement) {
    DataTable dataTable = null;
    if (connection != null) {
       dataAdapter.SelectCommand = connection.CreateCommand();
       dataAdapter.SelectCommand.CommandText = statement;
       dataTable = new DataTable();
       dataAdapter.Fill(dataTable);
    }
    else
       throw new Exception("Connection object null");

    return dataTable;
}

我正在从app.config设置连接字符串和提供程序名称。