(java问题)代码如下:在编写dao类是就是不进while循环。(我连接的是Oracle数据库) 15
DBUtil类的查询提取方法如下:/***查询的提取方法*@paramsql*@paramparam*@return*/publicstaticResultSetexec...
DBUtil类的查询提取方法如下:
/**
* 查询的提取方法
* @param sql
* @param param
* @return
*/
public static ResultSet executeQuery(String sql,Object[] param){
ResultSet rs=null;
Connection con=getConnection();
PreparedStatement pstmt=null;
try {
pstmt=con.prepareStatement(sql);
if(param!=null){
for (int i = 0; i < param.length; i++) {
pstmt.setObject(i+1, param[i]);
}
}
rs=pstmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
DAO类如下:
public class UserInfoDao {
private ResultSet rs=null;
/**
* 根据登陆名和密码查询
* @param vo
* @return
*/
public UserInfoVo getUserInfo(String logName,String pwd){
UserInfoVo bean=null;
String sql="select * from userInfo where LoginName=? and PassWord=?";
Object[] param={logName,pwd};
rs=DBUtil.executeQuery(sql, param);
try {
while(rs.next()){
System.out.println("******");
bean=new UserInfoVo();
bean.setLoginName(rs.getString(1));
bean.setUserName(rs.getString(2));
bean.setPassWord(rs.getString(3));
bean.setAge(rs.getInt(4));
bean.setAddress(rs.getString(5));
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBUtil.closeAll(null, null, rs);
}
return bean;
}
public static void main(String[] args) {
UserInfoVo vo=new UserInfoDao().getUserInfo("gao", "12345");
System.out.println(vo);
}
}
运行后结果为:null
过了一段时间我什么也没改动,一下又成功进入while循环。
我昨天也遇到一个同样奇怪的问题。在进行查询操作时:原数据库里面添加的数据查询不到,当在外部添加一条时:再次查询就只看到外部添加的。原数据库里的数据查不出来。
当我第二天再次打开工程运行时:查询的数据全部成功的出来了。
我一个同学连的是sqlserver2005就没有出现这样的问题。
(难道跟数据库有关吗???)望大虾指点。
补充:这个问题不是代码问题,我之前于之后什么代码也没改。就是过了一段时间,又运行成功。在测试的时候:一个是调用方法没有进入while循环里。另一个问题是进行查询操作时,查询的只是新添加的数据。原本数据库不止这些数据。 展开
/**
* 查询的提取方法
* @param sql
* @param param
* @return
*/
public static ResultSet executeQuery(String sql,Object[] param){
ResultSet rs=null;
Connection con=getConnection();
PreparedStatement pstmt=null;
try {
pstmt=con.prepareStatement(sql);
if(param!=null){
for (int i = 0; i < param.length; i++) {
pstmt.setObject(i+1, param[i]);
}
}
rs=pstmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
DAO类如下:
public class UserInfoDao {
private ResultSet rs=null;
/**
* 根据登陆名和密码查询
* @param vo
* @return
*/
public UserInfoVo getUserInfo(String logName,String pwd){
UserInfoVo bean=null;
String sql="select * from userInfo where LoginName=? and PassWord=?";
Object[] param={logName,pwd};
rs=DBUtil.executeQuery(sql, param);
try {
while(rs.next()){
System.out.println("******");
bean=new UserInfoVo();
bean.setLoginName(rs.getString(1));
bean.setUserName(rs.getString(2));
bean.setPassWord(rs.getString(3));
bean.setAge(rs.getInt(4));
bean.setAddress(rs.getString(5));
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBUtil.closeAll(null, null, rs);
}
return bean;
}
public static void main(String[] args) {
UserInfoVo vo=new UserInfoDao().getUserInfo("gao", "12345");
System.out.println(vo);
}
}
运行后结果为:null
过了一段时间我什么也没改动,一下又成功进入while循环。
我昨天也遇到一个同样奇怪的问题。在进行查询操作时:原数据库里面添加的数据查询不到,当在外部添加一条时:再次查询就只看到外部添加的。原数据库里的数据查不出来。
当我第二天再次打开工程运行时:查询的数据全部成功的出来了。
我一个同学连的是sqlserver2005就没有出现这样的问题。
(难道跟数据库有关吗???)望大虾指点。
补充:这个问题不是代码问题,我之前于之后什么代码也没改。就是过了一段时间,又运行成功。在测试的时候:一个是调用方法没有进入while循环里。另一个问题是进行查询操作时,查询的只是新添加的数据。原本数据库不止这些数据。 展开
5个回答
展开全部
你在Oracle内添加的数据没有进行提交
提交命令commit
提交命令commit
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这种情况,只有下断点跟,就这样贴部份带码,也不知道具体的情况。另外Oracle添加数据后需要commit。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样,你可以在你的控制语句的地方,频繁的输出数据,依此来判断自己写的程序的漏洞。比如在对每一个“?”赋完值后,将sql语句输出,看看赋值和语句是否正确。可以试一下……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-09-18
展开全部
这个问题,你可以在关键点打个断点,进行调试,看看效果。是不是每走一步都能得到你想要的结果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询