在执行数据库修改时,修改那一条语句为什么不执行,已用红字标出.还有一点,我建数据库时用的编码方式是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>
<%@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>
只有赋值的sql语句,没有执行吧……
stmt=conn.prepareStatement(sql);
stmt.execute();
Statement stmt2=conn.createStatement();
stmt2.executeUpdate(sql);
stmt2.close();也不能像楼上写的用prepareStatement,因为根本没有参数。