无法连接到Tomcat中的MS Access数据库

时间:2011-08-09 22:54:31

标签: java tomcat servlets odbc

我在通过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();
    }
  }
}

发生了什么事?

0 个答案:

没有答案