javabean里面rs.next()的问题,明明是有纪录的但是rs.next()总是返回false!
很奇怪的说!
javabean里对应方法代码如下:
//------------------------------方法checkUser()---------------------------
//checkUser()方法用来检查用户名username是否已经存在
//如果重复返回一个true
public boolean checkUser() {
ResultSet rs = null;
boolean flag = false;
if (this.eusername != null) {
try {
conn = DBConnection.getDBConnectionFromPool();
stmt = conn.createStatement();
String sql =
"select username from euser where username='"
+ this.eusername
+ "'";
System.out.println(sql);
rs = stmt.executeQuery(sql);
if (rs != null) {
if (rs.next()) {
flag = true;
} else {
flag = false;
}
}
} catch (Exception e) {
//出错处理
System.err.println("EcardUser.checkUser(): " + e.getMessage());
} finally {
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
}
}
}
return flag;
}
其中获取connection的方法为,配的是数据源,连接oracle数据库:
public static Connection getDBConnectionFromPool()
throws Exception {
Context ctx = new InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup("jdbc/OracleDB");
return (ds.getConnection());
}
结果在servlet里面调用checkUser()方法时候发现rs.next()总是返回false!尽管对应的sql在oracle里面执行返回是有结果集的!诡异!还请高人指点!!!
问题点数:100、回复次数:11Top
1 楼javacomte(基督山伯爵)回复于 2004-04-01 22:59:33 得分 0
有没有跟踪一下程序在执行rs.next()时rs里面有没有数据Top
2 楼lhbf(牧野)回复于 2004-04-01 23:02:31 得分 0
你可以到诸如jbuilderX之类的工具中调试一下你的这段代码,看rs = stmt.executeQuery(sql);
这个语句究竟执行没有。Top
3 楼douliang(豆豆)回复于 2004-04-01 23:06:01 得分 0
(rs != null)返回的是true亚,相信里面是有数据的Top
4 楼douliang(豆豆)回复于 2004-04-01 23:06:38 得分 0
rs = stmt.executeQuery(sql);这句肯定是执行了得。
我用的WSAD5.0调试的Top
5 楼acumenwu(触不到的恋人)回复于 2004-04-02 00:34:58 得分 0
if (rs.next()) {
flag = true; //这里应该错的吧,查询出来的记录集不为空,flag=false才对
} else {
flag = false;
}
下面这个代码请你参考一下吧
public boolean checkUser(String Username)
{
boolean boadduser=false;
try{
String sSql="select * from register where username='"+Username+"'";
if((super.executeQuery(sSql)).next())
{
boadduser=false;
}
else
{
boadduser=true;
}
}
catch(Exception e)
{
System.out.println("checkUser:" +e.getMessage());
}
finally
{
return boadduser;
}
}Top
6 楼wandou999(弯豆)回复于 2004-04-02 07:45:56 得分 0
if (rs != null)这句话多余!!Top
7 楼ty_work(ty_work)回复于 2004-04-02 08:16:35 得分 0
看看是不是数据库连成别人的了,如果返回FALSE说明有表但是确定表里没数据Top
8 楼rainshow(要学习的是那样多,时间却是那么的少)回复于 2004-04-02 08:23:47 得分 100
1 恩,要注意连接数据库的正确性,不要连到别的数据库上了
2 oracle数据库里能查询到数据,不一定就能显示出来,如果你是向oracle数据库里手动插入了数据而没有commit,那么是可以从数据库里查看到却不能用程序查看到。请确保插入数据后有commit。Top
9 楼amortal(7086)回复于 2004-04-02 08:29:26 得分 0
String sql ="select username from euser where RTRIM(username)='"+ this.eusername
+ "'";Top
10 楼douliang(豆豆)回复于 2004-04-02 10:43:23 得分 0
很感谢大家的回答,今天早上来重新运行了一遍程序,就全好了!真神奇!
我估计是rainshow说的,当时往数据库里插入了数据却没有commit(我用的TOAD,还不熟悉,退出的时候才commit)
原来oracle是这样的:)
学习ing...
另外再请教一个小问题:oracle里面的Date字段,日期表示应该如何写?我试了象"9-9-2004"等等各种格式,都插不进去!请大虾指点!Top
11 楼rainshow(要学习的是那样多,时间却是那么的少)回复于 2004-04-08 08:21:26 得分 0
to_date('2004-4-8','YYYY-MM-DD')
to_date('2004-4-8 13:14:15','YYYY-MM-DD HH24:MI:SS')Top




