JSP修改数据库页面

<%@ 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);
%>

"> ID:">
姓名:">
性别:">
年龄:">

报错为:
org.apache.jasper.JasperException: An exception occurred processing JSP page /modify.jsp at line 20

17: %>
18:


19:
20: ">
21: ID:">

22: 姓名:">

23: 性别:">

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()