Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Jet 4.0与c windows应用程序的连接问题_C#_Ms Access_Oledb_Database Connection - Fatal编程技术网

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

C# Jet 4.0与c windows应用程序的连接问题,c#,ms-access,oledb,database-connection,C#,Ms Access,Oledb,Database Connection,我正在开发一个win.net应用程序,它在服务器机器上连续运行。应用程序将使用Jet 4.0 OLEDB provider与驻留在多台客户端计算机中的accessmdb数据库连接 每个连接的数据库都已被本地安装的其他应用程序使用 当客户端机器一直处于活动状态时,我的应用程序成功地与所有数据库通信 但若我的一台客户机在系统或网络上停机并重新启动,应用程序将无法重新连接到那个特定的数据库,尽管它可以通过网络访问 甚至我也尝试以编程方式重新启动应用程序以重新建立连接。但是,它也失败了 应用程序只是抛出

我正在开发一个win.net应用程序,它在服务器机器上连续运行。应用程序将使用Jet 4.0 OLEDB provider与驻留在多台客户端计算机中的accessmdb数据库连接

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

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

但若我的一台客户机在系统或网络上停机并重新启动,应用程序将无法重新连接到那个特定的数据库,尽管它可以通过网络访问

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

应用程序只是抛出

磁盘或网络错误

未明错误

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

有人吗?

实际上,对于与应用程序相关联的每个数据库,我使用的是静态对象和下面的代码片段

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设置连接字符串和提供商名称。

一些代码可能会有所帮助。您是否尝试在连接重新联机后重新打开连接?一旦连接丢失,Jet/ACE将无法恢复连接。也就是说,如果远程计算机重新启动,您需要从头开始重新初始化连接。没有任何恢复,大卫的评论是完美的。Jet从失败连接中恢复的能力非常糟糕。丢失一个数据包将中断您的连接。我们建议所有用户只在实际服务器上使用共享数据库,而不要在用户的工作站上使用,也不要跨越VPN连接。