求教根据用户id查询 pstmt.setString(1, userId); 换成int型的试试 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 user.setUserId(rs.getString("user_id"));user.setUserName(rs.getString("user_name"));user.setPassword(rs.getString("password"));user.setContactTel(rs.getString("contact_tel"));user.setEmail(rs.getString("email"));user.setCreateDate(rs.getTimestamp("create_date")); oracle是有点怪怪的哈,把你这里的双引号的字段名,全部改成大写。(oracle内部大小写不分,但外面调用的时候,都得用大写)或者按表结构,用1,2,3,4来代替。 报什么错吗?先把create_date那个字段的不取,看看有没有值? catch(SQLException e) {e.printStackTrace();}下面再加个,说不定不是数据库的错,是你setTimestamp出现格式错误。catch(Exception e1) {e1.printStackTrace();} user.setCreateDate(rs.getTimestamp("create_date")); 改成user.setCreateDate(rs.getDate("create_date"));试试。 还有就是你数据库ID为什么要写成varchar呢 没查询到吧 你在里面new了一个user 赋值空 user也不是空啊? 我看了,if (rs.next()) { }很不好,因为不知道能否查到结果,如果未查到结果,很容易抛出空指针异常,最好改成 if(rs.hasNext()){rs.next();}这样会好一点,而且便于测试,比如,我要测试有没有在数据库中查到值,就可以通过if(rs.hasNext()){System.out.println("a");rs.next();}来测试,如果输出a则说明查到值了,如果没有任何输出,则说明没有查到值,那就是id的问题了 谢谢 大家好心帮忙哈 这么一个小小的错误 用了两天时间 哎~ 还是我学艺不精啊 还有那个 小妹的提示 启发了我 优化代码 应该是 if 改写成while循环有值 System.out.println("a"); 打印a 没有接受到值的话就是id的问题确实是id的问题 哈哈 错误的根源在这里 create table t_user(user_id char(10) primary key, 建表语句听了韩顺平老师的视频给我误导了 user_id 用char类型 可以正常创建表 提高查询速度但你这样 用字符串传值 查不到结果 所以给user_id类型 改成varchar2 就一切正常了 user_id char(10) primary key,一般还是用 varchar的,不然如果 user_id的个数少于10的话,很多数据库会自动在其后面添加空格 ID最好用VARCHER2(33),因为haibernate它会自动生成一个32位的ID,还有一位用来存结束字符,所以你现在最好有这个习惯 这个问题很简单啊.if (rs.next());if 就不能用在这里的,假设我第一次查询没有查询到的话,那他就不是跳过去了,返回就是一个空的值.所以这里用while(rs.next()),就会循环从ResultSet中读取, 所以以后做程序就一定要仔细啦 ;以前我也是常犯小错误的.呵呵 我感觉如果数据库中只有一个我们所需要的数据的话,就可以用if(rs.next()),比如在核对用户名和密码是否正确的时候! if怎么不能用在这里啦? 你查询时带where条件怎么都只有一条记录那你还用while干什么了 求代码 Tomcat启动不起来 java ee 画图工具 在Servlet中不能通过Request.getParameter()获取<INPUT>标签所包含的数据,怎么解决这一问题呢? struts2+spring classnotfound问题 关于加载xml文件的问题 请问一下出现这种异常,会是什么问题呢? 为何我安装的tomcat不会运行 jsp+javamail中文名附件文件名长度有限制?? 新人求助,关于socket套接字 请教:看看如下代码,为什么不行?(在线等) spring+hibernate+struts2的问题
user.setUserName(rs.getString("user_name"));
user.setPassword(rs.getString("password"));
user.setContactTel(rs.getString("contact_tel"));
user.setEmail(rs.getString("email"));
user.setCreateDate(rs.getTimestamp("create_date")); oracle是有点怪怪的哈,把你这里的双引号的字段名,全部改成大写。(oracle内部大小写不分,但外面调用的时候,都得用大写)
或者按表结构,用1,2,3,4来代替。
e.printStackTrace();
}
下面再加个,说不定不是数据库的错,是你setTimestamp出现格式错误。
catch(Exception e1) {
e1.printStackTrace();
}
user.setCreateDate(rs.getDate("create_date"));试试。
还有那个 小妹的提示 启发了我 优化代码 应该是 if 改写成while循环
有值 System.out.println("a"); 打印a 没有接受到值的话就是id的问题
确实是id的问题 哈哈
错误的根源在这里 create table t_user(user_id char(10) primary key, 建表语句
听了韩顺平老师的视频给我误导了 user_id 用char类型 可以正常创建表 提高查询速度
但你这样 用字符串传值 查不到结果 所以给user_id类型 改成varchar2 就一切正常了
一般还是用 varchar的,不然如果 user_id的个数少于10的话,很多数据库会自动在其后面添加空格
这个问题很简单啊.if (rs.next());if 就不能用在这里的,假设我第一次查询没有查询到的话,那他就不是跳过去了,返回就是一个空的值.所以这里用while(rs.next()),就会循环从ResultSet中读取, 所以以后做程序就一定要仔细啦 ;以前我也是常犯小错误的.呵呵
if怎么不能用在这里啦?
你查询时带where条件怎么都只有一条记录
那你还用while干什么了