我正在尝试创建一个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。我检查表列名是否正确。任何人都可以帮助我??
答案 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+"'");