无法从Access数据库中检索数据

时间:2014-01-29 10:06:22

标签: java ms-access

我正在尝试创建一个java Web应用程序。在该应用程序中,我创建了一个servlet来从MS-Access数据库中检索数据。我在我们的实验室这么多次这样做但现在我不能。我不知道是什么原因。这是我的processRequest方法:

的ProcessRequest

 protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException, ClassNotFoundException, SQLException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try {
        String des=request.getParameter("desc");
        Class.forName("sun.jdbc.odbc.JdbcOdbcConnection");
        Connection con=DriverManager.getConnection("jdbc:odbc:wsds","","");
        Statement st=con.createStatement();
        ResultSet rs=st.executeQuery("select * from Table1 where wsdesc="+des);
        while(rs.next())
        {
            String description=rs.getString("wsdesc");
            String url=rs.getString("url");
            out.println(description);
            out.println(url);
        }

    } finally {   
        out.close();
    }
}

我使用Netbeans 7.0.1 IDE。我创建了一个数据源wsds。我检查表列名是否正确。任何人都可以帮助我??

3 个答案:

答案 0 :(得分:1)

更改

ResultSet rs=st.executeQuery("select * from Table1 where wsdesc="+des);

ResultSet rs=st.executeQuery("select * from Table1 where wsdesc='"+des+"'");

Varchar数据类型应附在' '

之后

而不是Statement使用PreparedStatement

PreparedStatement pt=con.prepareStatement("select * from Table1 where wsdesc=?");
pt.setString(1,desc);
ResultSet rs=pt.executeQuery();

答案 1 :(得分:0)

将驱动程序名称更新为

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

答案 2 :(得分:0)

尝试添加引号

ResultSet rs=st.executeQuery("select * from Table1 where wsdesc='"+des+"'");