首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

JDBC 的有关问题?

2012-02-11 
JDBC 的问题????????%@ page contentTypetext/htmlcharsetgb2312 %%@ page importjava.sql.* %

JDBC 的问题????????
<%@ 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 用户不合法

[解决办法]
最简单的办法是打印出sql,看看到底执行的是什么?有没有被执行?
或者打开sqlserver 2000 的“事件探查器”,看看提交的select到底是什么?
[解决办法]
out.print(rs.getRow()); 这句话输出的几??
然后你确定没有出异常吗?我感觉可能没查到记录。。
[解决办法]
请问下如何打印SQL语句??? 
-----------------------

System.out.pringln(sql);
[解决办法]
差不出来啊?
sql写错了吧。

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

呼呼。
[解决办法]
检查一下
String name=request.getParameter("uname"); 
String password=request.getParameter("password");
这两个有没有值。
[解决办法]
楼上的可能性最高

Java code
// 你打印出来看看吧!// 如果有,对照数据库看一下是否完全相同System.out.println("username="+name);System.out.println("password="+password);ps.setString(1,name); ps.setString(2,password);
[解决办法]
,为什么我写成DataBase依然可以连上数据库??
因为 系统把 DataBase 认为是一个其它的自定义参数处理了

这个连接会使用该用户的默认数据库

热点排行