在执行数据库修改时,修改那一条语句为什么不执行,已用红字标出.还有一点,我建数据库时用的编码方式是GB2312,但为什么只有用ISO8859-1的编码方式才能从数据库中进行查询
<%@page contentType="text/html;charset=gb2312"%>
<%@page import="java.sql.*"%>
<html><body bgcolor=pink><font>
<head>
      <title>用户密码修改</title>
</head>
<center>
<h1>实验室设备管理系统</h1>
<font=4>----密码修改----</font>
</center>
<br>
<table>
<tr>
<td width="50"><A href="exit.jsp">退出</A></td>
</table><%   
      //接收表单中提交的值
     String uname=new String(request.getParameter("uname").getBytes("ISO8859-1"));
     String oldp=new String(request.getParameter("oldp").getBytes("ISO8859-1"));
     String newp=new String (request.getParameter("newp").getBytes("ISO8859-1"));
     String newpp=new String (request.getParameter("newpp").getBytes("ISO8859-1"));
%><%try 
{
Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/device","root","123456");
 Statement stmt=conn.createStatement();
     String sql="select uweb from user where uname='"+uname+"' and upassword='"+oldp+"'";
 ResultSet rs=stmt.executeQuery(sql);
if(rs.next())
{
    if (newp.equals(newpp)==true)
{    //如果有记录,执行修改
 sql="update user set upassword='"+newp+"' where uname='"+uname+"'";
     out.println("修改成功,");
    out.println("你的新密码是");
%><table><td><%=newp%></td></table><%
out.println(",");
out.println("请保管好你的密码方便下次登录!");

}
else
{
out.println("你输入的新密码两次不相同,请返回重新操作");
%> <A href="chpwd.jsp">返回</A><%
}
}
else
{
out.println("你的输入有误,不能修改");
%>
<%       } 
    rs.close();
stmt.close();
conn.close();
 } 
 catch(Exception e)
 {
 out.println(e);
 }
%>
</font></body></html>

解决方案 »

  1.   

    你没有执行的语句啊.
    只有赋值的sql语句,没有执行吧……
      

  2.   

    sql="update user set upassword='"+newp+"' where uname='"+uname+"'"; 
    stmt=conn.prepareStatement(sql);
    stmt.execute();
      

  3.   

    你写了句SQL根本没运行嘛。sql="update user set upassword='"+newp+"' where uname='"+uname+"'";  
    Statement stmt2=conn.createStatement(); 
    stmt2.executeUpdate(sql);
    stmt2.close();也不能像楼上写的用prepareStatement,因为根本没有参数。