2014-01-29 48 views
0

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

+0

任何错误的包围?堆栈跟踪? –

+0

您试图访问MS访问。你在'Class.forname'上写了什么? –

+0

请使用catch()。至少你会知道它是否正确执行或抛出'SQLException' –

回答

0

更新驱动程序的名称为

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

@VinayakPingale我觉得sun.jdbc.odbc.JdbcOdbcConnection驱动程序存在 – Kick

+0

我将JdbcOdbcConnection更改为JdbcOdbcDriver后,它不显示任何内容。 –

+0

@ user3243259你需要把varchar放在里面'',看我的回答 – SpringLearner

0

尝试增加报价

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

变化

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(); 
+0

@GordThompson OP是使用语句,所以我在Statement.I中给出了解决方案。我还提供了使用preparedstatement的替代方法 – SpringLearner