首先是我的处理数据库连接的java代码部分
packagejspex;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjavax.servlet.jsp.jstl.sql.Result;
importjavax.servlet.jsp.jstl.sql.ResultSupport;
publicclassDBHelper{
privatestaticfinalStringclassName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
privatestaticfinalStringurl="jdbc:sqlserver://localhost:1433;databasename=studentm";
privatestaticfinalStringuname="sa";
privatestaticfinalStringupass="c111111";
publicstaticConnectiongetConn(){
Connectionconn=null;
try{
Class.forName(className);
conn=DriverManager.getConnection(url,uname,upass);
}catch(Exceptione){
e.printStackTrace();
}
returnconn;
}
publicstaticvoidcloseConn(Connectionconn){
try{
if(conn!=null){
conn.close();
}
}catch(Exceptione){
e.printStackTrace();
}
}
publicstaticvoidclosePstmt(PreparedStatementpstmt){
try{
if(pstmt!=null){
pstmt.close();
}
}catch(Exceptione){
e.printStackTrace();
}
}
publicstaticvoidcloseRs(ResultSetrs){
try{
if(rs!=null){
rs.close();
}
}catch(Exceptione){
e.printStackTrace();
}
}
publicstaticbooleanrunupdatesql(Stringsql,Object[]params){
Connectioncon=null;
PreparedStatementps=null;
try{
con=getConn();
ps=con.prepareStatement(sql);
for(inti=0;i<params.length;i++){
ps.setObject(i+1,params[i]);
}
ps.executeUpdate();
returntrue;
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
finally{
try{
ps.close();
con.close();
}
catch(Exceptione){
e.printStackTrace();
}
}
}
publicstaticResultrunselectsql(Stringsql,Object[]params){
Connectioncon=null;
PreparedStatementps=null;
ResultSetres=null;
Resultresult=null;
try{
con=getConn();
ps=con.prepareStatement(sql);
for(inti=0;i<params.length;i++){
ps.setObject(i+1,params[i]);
}
res=ps.executeQuery();
result=ResultSupport.toResult(res);
}
catch(Exceptione){
e.printStackTrace();
}
finally{
try{
res.close();
ps.close();
con.close();
}catch(Exceptione){
e.printStackTrace();
}
}
returnresult;
}
}
我的网页代码,为了方便发现问题,我把js相关的功能注释掉了
<html>
<head>
<title>reg</title>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<styletype="text/css">
#loginform{
width:300px;
height:auto;
}
label{
width:60px;
height:30px;
text-align:left;
font-size:14px;
font-weight:hold;
vertical-align:bottom;
}
.inpute{
width:160px;
height:20px;
}
.row{
width:300px;
height:30px;
}
</style>
<scripttype="text/javascript">
functioncheckform(){
varname=document.getElementById("uid");
varpass=document.getElementById("pwd");
/*varrpass=document.getElementById("rpwd");*/
if(name.value.length<=0){
alert("用户名不能为空");
name.focus();
returnfalse;
}
if(pass.value.length>=8){
alert("密码长度不对");
pass.focus();
returnfalse;
}
/**if(pass!=rpass){
alert("密码不一致");
returnfalse;
}**/
returntrue;
}
</script>
</head>
<body>
<divid="loginform">
<formonsubmit="returncheckform();"action="doreg.jsp"method="post">
<divclass="row">
<labelfor="uid">用户名:</label>
<inputname="uid"type="text"class="inpute"id="uid">
</div>
<divclass="row">
<labelfor="pwd">密码:</label>
<inputname="pwd"type="password"class="inpute"id="pwd">
</div>
</div>
<!--<divclass="row">
<labelfor="rpwd">确认密码:</label>
<inputname="rpwd"type="password"class="inpute"id="rpwd">
</div>-->
<divclass="row">
<inputtype="submit"value="注册"/><inputtype="reset"value="重新填写"/>
</div>
</form>
</div>
</body>
</html>
然后是连接数据库判断用户名是否存在,不存在则可以注册的代码部分,运行后不管输入什么,都是只打印出“注册失败,用户名已存在”
<%
Stringuid=request.getParameter("uid");
Stringpwd=request.getParameter("pwd");
Object[]params={uid};
Stringsql="selectcount(*)fromtb_vipwhereuserid=?";
Resultresult=DBHelper.runselectsql(sql,params);
if(result.getRowCount()==0){
Object[]paramss={uid,pwd};
Stringsqll="insertintotb_vipvalues(?,?)";
if(DBHelper.runupdatesql(sqll,paramss)){
out.print("已经成功注册");
}else{out.print("服务器问题请与客服联系");}}
else{
out.print("注册失败,用户名已存在");
}
%>
发现问题后,我运行了最简单的注册部分代码,发现功能正常
<%
Stringuid=request.getParameter("uid");
Stringpwd=request.getParameter("pwd");
Object[]paramss={uid,pwd};
Stringsqll="insertintotb_vipvalues(?,?)";
if(DBHelper.runupdatesql(sqll,paramss))
{
out.print("已经成功注册");
}
else
out.print("服务器问题请与客服联系");
%>
初学jsp,敲了一下简单的代码就出错了,很是头疼,希望大家可以帮帮我
------解决思路----------------------
没错也要改过来。你这样很不规范,而且其他的数据库不一定支持
------解决思路----------------------
http://wenku.baidu.com/link?url=DclIlmV-zAV6IMWWcUe4Jgo6WPRAJfRxKbk3Qcrl_qe5TiijhJ6MqtCuQH8HrNVW6zRpFLgnwvp2l_fBHHx9L1-3KbTSYds-3LfHs_7TWfu
------解决思路----------------------
连接数据库没问题,就多print打一下输出。你老错是因为你的写法就不规范。哪有都用Object呀,这样的prepareStatement的功能何处体现。