C# Jet 4.0与c windows应用程序的连接问题
我正在开发一个win.net应用程序,它在服务器机器上连续运行。应用程序将使用Jet 4.0 OLEDB provider与驻留在多台客户端计算机中的accessmdb数据库连接 每个连接的数据库都已被本地安装的其他应用程序使用 当客户端机器一直处于活动状态时,我的应用程序成功地与所有数据库通信 但若我的一台客户机在系统或网络上停机并重新启动,应用程序将无法重新连接到那个特定的数据库,尽管它可以通过网络访问 甚至我也尝试以编程方式重新启动应用程序以重新建立连接。但是,它也失败了 应用程序只是抛出 磁盘或网络错误 或 未明错误 或 无法启动您的应用程序。工作组信息文件丢失或由其他用户独占打开 有人吗?有 实际上,对于与应用程序相关联的每个数据库,我使用的是静态对象和下面的代码片段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数据库连接 每个连接的数据库都已被本地安装的其他应用程序使用 当客户端机器一直处于活动状态时,我的应用程序成功地与所有数据库通信 但若我的一台客户机在系统或网络上停机并重新启动,应用程序将无法重新连接到那个特定的数据库,尽管它可以通过网络访问 甚至我也尝试以编程方式重新启动应用程序以重新建立连接。但是,它也失败了 应用程序只是抛出
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连接。