java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 不能使用 '(未知的)';文件已在使用中

时间:2021-12-31 15:42:46

最近查看程序输入的日志时发现一个java连接Access的程序时不时的抛出:

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 不能使用 '(未知的)';文件已在使用中

相关代码如下:

public static Connection getConnection(String dbFilePath)
 { 
  try
  {             
   //数据库连接字符串 
         String url ="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; access;DBQ=" + dbFilePath;

//加载驱动程序
         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
         //建立连接
         Connection conn= DriverManager.getConnection(url); //抛异常的是这一行
         
         return conn;

}
  catch(Exception err)
  {   
   err.printStackTrace();
   return null;
  }
 }

但并不是每次java程序连接Access的都会抛这样的异常,经过一段时间的观察发现原来这个错误的发生与IIS的asp程序有关。

环境描述及分析:

由于这个access数据库在两个网站和一个java程序中同时使用:

网站A绑定的用户名是 IIS_A

网站B绑定的用户名是 IIS_B

运行发现,网站A连接数据库后,如果java程序同时连接数据库,不会抛异常。

但如果网站B连接数据库后,java程序同时连接数据库,就抛出了上面的那个异常:[Microsoft][ODBC Microsoft Access Driver] 不能使用 '(未知的)';文件已在使用中

至于为什么会这样,我也不知道。

我试着,把网站B绑定的用户名改为IIS_A,然后再测试,当网站B的程序连接数据库的同时,java程序也连接这个Access数据库,不再抛java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 不能使用 '(未知的)';文件已在使用中。

2012-03-28