我在通过Tomcat中的servlet连接到MS Access数据库时遇到问题。它以前工作但它不再存在,我很困惑。我的servlet代码:
import java.io.*;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.util.*;
public class TestServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String dataSourceName = "mdbTest";
String dbURL = "jdbc:odbc:" + dataSourceName;
Connection conn = DriverManager.getConnection(dbURL ,"","");
String SEARCH = "SELECT * FROM User_Table WHERE ID = ?";
PreparedStatement p = conn.prepareStatement(SEARCH, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
p.setInt(1, 68);
ResultSet rs = p.executeQuery();
rs.first();
out.println(rs.getString("Name"));
} catch (ClassNotFoundException e) {
out.println("Class not found");
e.printStackTrace();
}
catch (SQLException e) {
out.println(e);
e.printStackTrace();
}
}
}
我得到的消息是java.sql.SQLException:[Microsoft] [ODBC Microsoft Access Driver]找不到文件'(未知)'。
但是,当我使用离线应用程序执行此操作时,它可以正常工作并打印所需的值:
import java.io.*;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.util.*;
public class Tester1 {
public static void main (String[] args)
{
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String dataSourceName = "mdbTest";
String dbURL = "jdbc:odbc:" + dataSourceName;
Connection conn = DriverManager.getConnection(dbURL ,"","");
String SEARCH = "SELECT * FROM User_Table WHERE ID = ?";
PreparedStatement p = conn.prepareStatement(SEARCH, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
p.setInt(1, 68);
ResultSet rs = p.executeQuery();
rs.first();
out.println(rs.getString("Name"));
} catch (ClassNotFoundException e) {
out.println("Class not found");
e.printStackTrace();
}
catch (SQLException e) {
out.println(e);
e.printStackTrace();
}
}
}
发生了什么事?