Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法从Access数据库检索数据_Java_Ms Access - Fatal编程技术网

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

Java 无法从Access数据库检索数据,java,ms-access,Java,Ms Access,我正在尝试创建一个JavaWeb应用程序。在该应用程序中,我创建了一个servlet来从MS Access数据库检索数据。我在实验室做了很多次,但现在不行了。我不知道原因是什么。以下是我的processRequest方法: 处理请求 protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

我正在尝试创建一个JavaWeb应用程序。在该应用程序中,我创建了一个servlet来从MS Access数据库检索数据。我在实验室做了很多次,但现在不行了。我不知道原因是什么。以下是我的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。我检查表列名是否正确。任何人都可以帮助我???

将驱动程序名称更新为

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
尝试添加引号

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

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

ResultSet rs=st.executeQuery("select * from Table1 where wsdesc='"+des+"'");
Varchar数据类型应该用
'
'

使用PreparedStatement代替语句

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

有错误吗?Stacktrace?您正在尝试访问MS access。你在
类中写了什么。对于name
请使用
catch()
。至少您会知道它是正确执行还是抛出了“SQLException”(1)尝试注释掉
Class.forName
语句。在大多数情况下,不再需要它。(2) 您将用户数据直接注入到SQL语句中,因此容易出现SQL注入问题。您也可能没有正确引用您的
wsdesc
值。如果使用
PreparedStatement
,这两个问题都会消失。我无法在try块之后添加catch。它显示了一个错误,对应的异常没有在try正文中抛出。@vinayakpingle我不认为sun.jdbc.odbc.JdbcOdbcConnection驱动程序存在。在我将JdbcOdbcConnection更改为JdbcOdbcDriver后,它不会显示任何内容。@user3243259您需要将varchar放在“”中,看我的answer@GordThompsonOP正在使用语句,所以我在语句中给出了解决方案。我还提供了使用preparedstatement的替代方案