JDBC 的问题????????

migo2008 2008-03-09 05:57:49
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.sql.*" %>

<%!
String DBDRIVE ="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String DBURL ="jdbc:microsoft:sqlserver://migo:1400;DataBase=usermessage";
String PASSWORD ="sa";
String USERNAME ="sa";
Connection con =null;
PreparedStatement ps =null;
ResultSet rs =null;
%>
<%--接受参数--%>
<%
String name=request.getParameter("uname");
String password=request.getParameter("password");
boolean flag=false;
%>
<%--验证用户--%>
<%
String sql="select userid from userinfo where username=? and userpassword=?";
try
{
Class.forName(DBDRIVE);
//out.print("驱动已加载");
con=DriverManager.getConnection(DBURL,USERNAME,PASSWORD);
//out.print("数据库已连接");
ps=con.prepareStatement(sql);
ps.setString(1,name);
ps.setString(2,password);
rs=ps.executeQuery();
out.print("SQL已执行");
out.print(rs.getRow());
if(rs.next())
{
//将用户名保存在session中
out.print("用户合法");
flag=true;
//session.setAttribute("name",rs.getString(1));
}
else
{
//用户不合法,保存错误信息
out.print("用户不合法");
request.setAttribute("err","错误的用户名或密码");
}
rs.close();
ps.close();
con.close();
}
catch(Exception e){
}
%>

-----------------------------------------------------------------------------------------
以上是我用JDBC连接sqlserver 2000的代码,请问一下各位,为什么我的rs.next()返回的总是0???
ps:我的userinfo表中已存在一条记录,以上代码输出结果总是:
0 用户不合法
...全文
175 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
a1405 2008-03-13
  • 打赏
  • 举报
回复
并没有什么错,只是你没能理解rs.getRow()这个语句的意思而已,他是返回现在游标所在的行数,你刚开始还没有rs.next(),当然回返回0了!
老紫竹 2008-03-13
  • 打赏
  • 举报
回复
,为什么我写成DataBase依然可以连上数据库??
因为 系统把 DataBase 认为是一个其它的自定义参数处理了

这个连接会使用该用户的默认数据库
hero0317 2008-03-12
  • 打赏
  • 举报
回复
确定接收到了uname和password吗??
springrobot 2008-03-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 soyestrellafortuna 的回复:]
检查一下
String name=request.getParameter("uname");
String password=request.getParameter("password");
这两个有没有值。
[/Quote]


是的,如果没值就肯定查不到了
migo2008 2008-03-11
  • 打赏
  • 举报
回复
感谢各位~~
我想我的问题应该是url那里写错了
String DBURL ="jdbc:microsoft:sqlserver://migo:1400;DataBase=usermessage";
应该是DataBaseName
但是我想问下各位,为什么我写成DataBase依然可以连上数据库??
ShionWong 2008-03-10
  • 打赏
  • 举报
回复
检查一下SQL是不是写错了哦
老紫竹 2008-03-10
  • 打赏
  • 举报
回复
楼上的可能性最高

// 你打印出来看看吧!
// 如果有,对照数据库看一下是否完全相同
System.out.println("username="+name);
System.out.println("password="+password);
ps.setString(1,name);
ps.setString(2,password);
soyestrellafortuna 2008-03-10
  • 打赏
  • 举报
回复
检查一下
String name=request.getParameter("uname");
String password=request.getParameter("password");
这两个有没有值。
临远 2008-03-10
  • 打赏
  • 举报
回复
差不出来啊?
sql写错了吧。

想验证也简单,别整悬的,写个sql在数据库客户端一跑,看看有记录没,有了的话,再直接写进jsp里,看看效果,最后再去自己拼,

呼呼。
睿音 2008-03-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 migo2008 的回复:]
上面的代码运行正常,数据库也是正常。
总之我感觉是一切正常,但不知道为什么查不出记录.
[/Quote]

建立切片模型,一步一步去调试~~~
yiyi_wx 2008-03-09
  • 打赏
  • 举报
回复
请问下如何打印SQL语句???
-----------------------

System.out.pringln(sql);
migo2008 2008-03-09
  • 打赏
  • 举报
回复
to bootupnow :请问下如何打印SQL语句???
to ee4456: out.print(rs.getRow()); 输出0。另外,上面的代码运行正常,数据库也是正常。
总之我感觉是一切正常,但不知道为什么查不出记录.
谢谢二位!!
migo2008 2008-03-09
  • 打赏
  • 举报
回复
to bootupnow :请问下如何打印SQL语句???
to ee4456: out.print(rs.getRow()); 输出0。另外,上面的代码运行正常,数据库也是正常。
总之我感觉是一切正常,但不知道为什么查不出记录.
谢谢二位!!
ee4456 2008-03-09
  • 打赏
  • 举报
回复
out.print(rs.getRow()); 这句话输出的几??
然后你确定没有出异常吗?我感觉可能没查到记录。。
bootupnow 2008-03-09
  • 打赏
  • 举报
回复
最简单的办法是打印出sql,看看到底执行的是什么?有没有被执行?
或者打开sqlserver 2000 的“事件探查器”,看看提交的select到底是什么?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧