专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Web开发

初学jsp遇到数据库连接处理有关问题

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
初学jsp遇到数据库连接处理问题
首先是我的处理数据库连接的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,敲了一下简单的代码就出错了,很是头疼,希望大家可以帮帮我
------解决思路----------------------
引用:
Quote: 引用:

selectcount(*)fromtb_vipwhereuserid=?
你这里需要一个空格,你知道吗,count(*)和from之间
查询语句写错了


我用的数据库是SQLServer,我试过了,这样写没问题的,因为有小括号作为标志

没错也要改过来。你这样很不规范,而且其他的数据库不一定支持
------解决思路----------------------
http://wenku.baidu.com/link?url=DclIlmV-zAV6IMWWcUe4Jgo6WPRAJfRxKbk3Qcrl_qe5TiijhJ6MqtCuQH8HrNVW6zRpFLgnwvp2l_fBHHx9L1-3KbTSYds-3LfHs_7TWfu
------解决思路----------------------
连接数据库没问题,就多print打一下输出。你老错是因为你的写法就不规范。哪有都用Object呀,这样的prepareStatement的功能何处体现。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • vs2010旗舰版新建网站有关问题

    vs2010旗舰版新建网站问题 vs2010旗舰版新建网站时会默认产生一些网页和母版,自己还得删除,有点麻烦。怎么样设置不让他自己产生一...

  • 作为一个才学html的小白,该如何处理

    作为一个才学html的小白 学了一个星期的html了,能用table设计一下版面了。准备这个星期学div了。 困惑是:现在在逼着自己尽量用纯...

  • 求推荐个收费空间解决方案

    求推荐个收费空间 需求 1.》=100m的空间,不需要其他插件 2.不需要数据库 3.较高的浏览速度 4.稳定和持久 5.希望是最高的性价比 ...

  • 请教有好看的登陆界面吗

    请问有好看的登陆界面吗 找了一上午了。。实在找不到。 请问有好看的登陆界面吗(没有明显主题), 要新颖 好看,融入新元素 ------解决...

  • 日日自学JS,一个月后有成绩吗

    天天自学JS,一个月后有成绩吗? 我是做前端开发的,目前就只会一些DIV+CSS,现在想学习JS,于是买了本JS书,书名叫《精通Javascript+JQuery...

  • 为何这张图下载到电脑就静止了?解决方案

    为何这张图下载到电脑就静止了? 为何这张图下载到电脑就静止了? http://ukgg.35free.net/uindex.htm 新买的WIN7操作系统。 ------...

  • 关于网页的ActiveX以及cab包自动有关

    关于网页的ActiveX以及cab包自动相关 我的网页上引用了一个: <object id="YstWatch" align="center" style="margin-left:-1px;ma...

  • 请教一下论坛有WEB开发 html的QQ群吗

    请问一下论坛有WEB开发 html的QQ群吗? 内容如上啊,有的友友分享下好吗?真心求教 求分享 感激!! ------解决方案--------------------...

  • IE6、IE7、IE8的优缺点和区别解决办法

    IE6、IE7、IE8的优缺点和区别 有一次面试的时候一个大神问我的问题,现在想起来了,贴出来,大家讨论下,来个大虾指点一二 ------解决方...

  • php 在网页下播放视频

    php 在网页上播放视频 php 在网页上播放视频支持多格式的,今天弄了一个只支持flv格式的,其它的只能听到声音看不到画图,请各位路过的...

热门推荐: