<%@ page contentType="text/html; charset=gb2312" language="java" %>
<%@ page import="java.sql.*, java.util.*, java.io.*" %>
<%
String driverName="com.mysql.jdbc.Driver";
String userName="root";
String userPasswd="123456";
String dbName="test";
String tableName="t1";
String url="jdbc:mysql://localhost:3306/"+dbName+"?user="+userName+"&password="+userPasswd+"&useUnicode=true&characterEcoding=GB2312";
Class.forName(driverName).newInstance();
Connection conn=DriverManager.getConnection(url);
Statement stmt=conn.createStatement();
String str=request.getParameter("haoma");
String sql="select * from t1 where id="+str;
ResultSet rs=stmt.executeQuery(sql);
%>
报错为:
org.apache.jasper.JasperException: An exception occurred processing JSP page /modify.jsp at line 20
17: %>
18:
if (rs.next() {
....
}
[color=red]
[b]错误在于:对于同一条记录,在默认情况下,不能2次调用get的方法,获得同一个字段。
显然,你获得了2次。[/b][/color]
[code="java"]">
ID:">[/code]
[color=blue][b]原因在于:[/b][/color]
[code="java"]Statement stmt=conn.createStatement(); [/code]
[color=blue]
[b]此语句构造的是 不可滚动的结果集。[/b][/color]
[quote]Statement stmt=conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY); [/quote]
这样就可在同一条记录上2次调用了getXXXX了
[code="java"]<%
String driverName="com.mysql.jdbc.Driver";
String userName="root";
String userPasswd="123456";
String dbName="test";
String tableName="t1";
String url="jdbc:mysql://localhost:3306/"+dbName+"?user="+userName+"&password="+userPasswd+"&useUnicode=true&characterEcoding=GB2312";
Class.forName(driverName).newInstance();
Connection conn=DriverManager.getConnection(url);
Statement stmt=conn.createStatement();
String str=request.getParameter("haoma");
String sql="select * from t1 where id="+str;
ResultSet rs=stmt.executeQuery(sql);
[color=red]if (rs.next()) {[/color]
%> [/code]
...
前面提到的也是一个错误。
你的另一个错误就是: ResultSet的游标指针的位置不对。
应该先调用一下rs.next()