NutzCN Logo
问答 dao.execute问题
发布于 2978天前 作者 Nutzjay 2902 次浏览 复制 上一个帖子 下一个帖子
标签:

User user = new User();
Sql sql = Sqls.create(sqlStr);
sql.params().set("account", account);
sql.params().set("pwd", thePassword);
sql.setCallback(Sqls.callback.entities());
sql.setEntity(dao.getEntity(User.class));
System.out.print(13);
dao.execute(sql);
List userList = sql.getList(User.class);
System.out.print("user大小:"+userList.size());
//////////&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
String sqlStruu = "select l.WF_LOGINNAME account,u.WF_USERID userId,u.WF_USERNAME userName, " +
" u.WF_DEPTID deptId,d.WF_DEPTNAME deptName," +
" decode(wf_positionid, '00015','1','00007','2','0') isManager " +
"from wf_users u,WF_LOGIN l,WF_DEPARTMENT d " +
"where l.WF_USERID = @userId ";
String userId="00020593";
Sql sql2=Sqls.create(sqlStruu);
sql2.params().set("userId",userId);
System.out.print("*1L");
sql2.setCallback(Sqls.callback.entities());
System.out.print("*2L");
sql2.setEntity(dao.getEntity(User.class));
System.out.print("*3L");
dao.execute(sql2);
System.out.print("*4L");
List userList2 = sql2.getList(User.class);
很简单的执行两个select查询在一个方法里,执行了第一个,然后&&&&&&&&&下的发现根本就没执行,为什么

24 回复

根本没执行是什么意思

@wendal 在打印出user大小:1 后 他应该往下执行还打印出 *1L,但是没打印出。

@nutzjay try catch它,如果catch住了了就是抛异常了,要是没有,那就是卡住不跑了

如果是后者,一般情况下是数据库连接池一直没返回新连接

@wendal try catch过,没出来东西,感觉是后者,请教一下,怎么返回新连接,

在打印出user大小:1 后 他应该往下执行还打印出 *1L

之间的代码是

 System.out.print("user大小:"+userList.size());
 //////////&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
 String sqlStruu = "select l.WF_LOGINNAME account,u.WF_USERID userId,u.WF_USERNAME userName, " +
 " u.WF_DEPTID deptId,d.WF_DEPTNAME deptName," +
 " decode(wf_positionid, '00015','1','00007','2','0') isManager " +
 "from wf_users u,WF_LOGIN l,WF_DEPARTMENT d " +
 "where l.WF_USERID = @userId ";
 String userId="00020593";
 Sql sql2=Sqls.create(sqlStruu);
 sql2.params().set("userId",userId);
 System.out.print("*1L");

除去打印调试的语句及肯定不会出错的字符串拼接和字符串赋值语句

 Sql sql2=Sqls.create(sqlStruu);
 sql2.params().set("userId",userId);

set方法几乎不可能会抛异常, 而剩下的

Sql sql2=Sqls.create(sqlStruu);

前后都加System.out.println() 语句, 不要用print!!!!!!

@wendal 好的,我打印出来看一下

@wendal 打印出来
-1L
*0L
*1L
*2L
*3L
下面没了

@nutzjay 贴现在的代码,我看看你写成什么了

sql.setCallback(Sqls.callback.entities());
    sql.setEntity(dao.getEntity(User.class));
    System.out.print(13);
    dao.execute(sql); 
    List<User> userList = sql.getList(User.class);    
    System.out.print("user大小:"+userList.size());
    //////////&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    String sqlStruu = "select l.WF_LOGINNAME account,u.WF_USERID userId,u.WF_USERNAME userName, " +
         "       u.WF_DEPTID deptId,d.WF_DEPTNAME deptName," +
         "       decode(wf_positionid, '00015','1','00007','2','0') isManager  " +
         "from wf_users u,WF_LOGIN l,WF_DEPARTMENT d  " +
         "where l.WF_USERID = @userId "; 
    String userId="00020593";
    System.out.println("*-1L");
    Sql sql2=Sqls.create(sqlStruu);
    System.out.println("*0L");
    sql2.params().set("userId",userId);
    System.out.println("*1L");
    sql2.setCallback(Sqls.callback.entities());
    System.out.println("*2L");
    sql2.setEntity(dao.getEntity(User.class));
    System.out.println("*3L");
    dao.execute(sql2); 
    System.out.println("*4L");
    List<User> userList2 = sql2.getList(User.class);

sql1和sql2的执行顺序调换一下看看

@wendal 我把执行的顺寻换了一下,到 *3L不执行了,一开始的那个被调到下面后,也没执行

看来是sql有问题

@wendal 我的sql1.是登入验证,放下面会有问题吧

那条sql语句的问题

@wendal sql,我放在plsql里查过,没问题
String sqlStruu = "select l.WF_LOGINNAME account,u.WF_USERID userId,u.WF_USERNAME userName, " +
" u.WF_DEPTID deptId,d.WF_DEPTNAME deptName," +
" decode(wf_positionid, '00015','1','00007','2','0') isManager " +
"from wf_users u,WF_LOGIN l,WF_DEPARTMENT d " +
"where l.WF_USERID = 00020593 "; 。我都改成这样了

@wendal sql.params().set("account", account);
sql.params().set("pwd", thePassword);
sql.setCallback(Sqls.callback.entities());
sql.setEntity(dao.getEntity(User.class));
System.out.println("GGGG13GGG");
dao.execute(sql);
List userList = sql.getList(User.class);
System.out.println("user大小:"+userList.size());
//////////&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
String sqlStruu = "select l.WF_LOGINNAME account,u.WF_USERID userId,u.WF_USERNAME userName, " +
" u.WF_DEPTID deptId,d.WF_DEPTNAME deptName," +
" decode(wf_positionid, '00015','1','00007','2','0') isManager " +
"from wf_users u,WF_LOGIN l,WF_DEPARTMENT d " +
"where l.WF_USERID = 00020593 ";
System.out.println("*-1L");
Sql sql2=Sqls.create(sqlStruu);
System.out.println("*0L");
System.out.println("*1L");
sql2.setCallback(Sqls.callback.entities());
System.out.println("*2L");
sql2.setEntity(dao.getEntity(User.class));
System.out.println("*3L");
dao.execute(sql2);
System.out.println("*4L");
List userList2 = sql2.getList(User.class);
System.out.print("大小"+userList2.size());
sqlstruu我都在plsql里运行过,有数据的

啥? 就是没测试过相反顺序?

你的代码不就是执行2条SQL吗? 有啥验证不验证的

sql1和sql2,除了SQL语句不同之外,就只有顺序不一样了

@wendal 第一句是登入的sql。。。。,后来我换了最最简单的sql ,第二句是有问题,我也不知道有什么问题

顺序调换,这一点测试过?

@wendal 测过的,因为第2个有问题,所以换到下面的也没执行

... 好吧, 看来这个SQL的问题, 懂点JDBC吗??

添加回复
请先登陆
回到顶部