2014-01-29 24 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