折磨了我三天的ACCESS数据库调用问题,
一下是我的代码
<%@ page contentType="text/html; charset=Gb2312" import="java.sql.*"%>
<%!
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
public void jspInit()
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc:odbc:ClassDB");
stmt=con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
}
catch(Exception ex)
{
System.out.println(ex.toString());
}
}
public void jspDestroy()
{
try{
rs.close();
stmt.close();
con.close();
}
catch(Exception ex)
{
System.out.println(ex.toString());
}
}
%>
<html>
<head>
<title>讨论区</title>
</head>
<body>
<a href="postform.jsp?RepID=0" target="PostContent">张贴新文章</a><br>
<%
String strSQL="SELECT*FROM Board"+"WHERE RepID=0 ORDER BY LastRep DESC";
rs=stmt.executeQuery(strSQL);
if(!rs.next())
{
%>
<font size=5 color="red">目前无人张贴文章</font>
<%
}
else
{
%>
<table bgcolor="dodgerblue">
<tr bgcolor="SkyBlue">
<TD>标题</TD><td>日期</td><td>粘贴者</td>
<td>回复篇树</td><td>人气指数</td><td>最近回复时间</td>
</tr>
<%
do
{%>
<tr>
<td bgcolor="LightYellow">
<a href='Content.jsp?ID=<%=rs.getString("ID")%>&ReLoad=yes' target="PostContent">
<%=rs.getString("Title")%></a></td>
<td bgcolor=LightYellow><%=rs.getString("PostTime")%></td>
<td bgcolor=LightYellow><%=rs.getString("Poster")%></td>
<td bgcolor=LightYellow><%=rs.getString("RepNum")%></td>
<td bgcolor=LightYellow><%=rs.getString("ConNum")%></td>
<td bgcolor=LightYellow><%=rs.getString("LastRep")%></td>
<TR>
<%
}while(rs.next());
}
%>
</table>
</body>
</html>
其中我做了一个叫"Class.mdb"的access的数据库,其中包含一个表叫"Board",然后我再"数据源"中选择"系统DNS"-"添加"-Microsoft access Driver-数据源名"ClassDB"-数据库路径"D:\test\讨论区\Class.mdb"-确定
然后运行这个jsp,报错:
org.apache.jasper.JasperException: [Microsoft][ODBC Microsoft Access Driver] FROM 子句语法错误。
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:594)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:536)