我要从数据库中按下面的查询条件,查到我想要的数据
String sql="select * from dbo.user_view where OIWarehCusID=? and MaterNum=? and MaterName=? and MaterDing=? and OIWarehWareT=?";然后放到List数组里面,返回值是List型的
List<Chuku> user=null;

Chuku ck=null;
try {
PreparedStatement ps=con.prepareStatement(sql);

ps.setString(1,OIWarehCusID);

              ps.setString(2,MaterNum);

ps.setString(3,MaterName);

ps.setString(4,MaterDing);

ps.setString(5,OIWarehWareT);
上面这几个ps是查询条件

ResultSet rs=ps.executeQuery();
if(rs.next()){
                                     ck.setMaterNum(Integer.parseInt(MaterNum));
                                     .......当执行到if的时候,就直接跳到List<user>了,返回的user里面是空值,取不到数据,可数据库里面有,也不报错,请教高手!!!

解决方案 »

  1.   

    把where后边的条件删除试试,看看是不是where条件中的值没有找到完全匹配的
      

  2.   

    ps.setString(1,OIWarehCusID);
    从0开始吧!
      

  3.   

    楼主看一下用ps.setString(2,MaterNum)设值的时候,其数据类型是否和数据库中的保持一致。
    [当执行到if的时候,就直接跳到List<user>了]明显是没有查询到数据。
      

  4.   

    1、ps.setString(1,OIWarehCusID);是从1开始的LZ没写错。
    2、if(rs.next()){  这里不应该用If吧,好像是while才对。
    3、LZ把代码全部贴出来啊,这样看不全的。就算没有查到数据也不应该跳到List<user>啊。LZ感兴趣可以加入59673719(IT精英)群,大家相互学习,相互交流。
      

  5.   

    强烈建议楼主做以下几件事儿
    1.跟踪检索条件的值
    2.把值带入sql中直接在数据库端执行确认结果
    3.if (rs.next()) 不是循环语句,如果想循环用while,如果只想取一条数据,不用修改。
    4.如果上面都执行了没发现问题,试着查看数据库连接有没有问题。
      

  6.   

    把跟踪到的SQL语句,直接在数据库查询器里执行一下,就知道什么错了
      

  7.   

    6L 说的有道理debug  到这  ps.setString(1,OIWarehCusID);ps.setString(2,MaterNum);ps.setString(3,MaterName);ps.setString(4,MaterDing);ps.setString(5,OIWarehWareT);
    看看几个变量的 值是什么  然后  直接用这几个值 作为条件  查询 看看  
      

  8.   

    建议:
    首先,debug一个下你的程序,是否能查询出数据;
    如果没有数据,则说明你的sql语句有问题,把你的sql语句带条件拿到数据库下执行下,看是否有数据
    如果能查询,则是你条件类型匹配不对了,仔细检查一下吧!
      

  9.   

    个人觉得问题可能是:
    楼主代码中定义了Chuku ck=null;
    但是ck并没有实例化,所以执行
    if(rs.next()){
      ck.setMaterNum(Integer.parseInt(MaterNum));
    可能就会出错吧!还有if(rs.next()){ 这里不应该用If吧,好像是while。
      

  10.   

    建议楼主把这条sql后面where条件填补上去, 在数据库里执行  看能不能拿到值。例  : String sql="select * from dbo.user_view where OIWarehCusID=? and MaterNum=? and MaterName=? and MaterDing=? and OIWarehWareT=?";
      把sql的问号替换掉。  如果查到了,那就是程序的问题。
      

  11.   

    上面是我怀疑数据问题。 如果是程序的话:  我建议这样写
      try {
    PreparedStatement ps=con.prepareStatement(sql);ps.setString(1,OIWarehCusID);ps.setString(2,MaterNum);ps.setString(3,MaterName);ps.setString(4,MaterDing);ps.setString(5,OIWarehWareT);
    上面这几个ps是查询条件ResultSet rs=ps.executeQuery(); 
    if(rs.hasNext())
    {
      while(rs.next()){

      ck.setMaterNum(Integer.parseInt(MaterNum));
      .......}