最近查看程序输入的日志时发现一个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