我在我的数据库中手动检查但我的列表返回空?

时间:2017-07-03 06:05:53

标签: java mysql jdbc

我试图只从我的数据库中获取旅行,其中source_name,destination是特别的。我想使用预备声明从我的数据库中获取旅行列表。但我无法得到相同的结果。

package com.indiabus1.Dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.indiabus1.beans.*;
import com.indiabus1.Dao.*;
import com.indiabus1.*;
import com.indiabus1.Dao.ConnectionFactory;
import com.indiabus1.beans.BusSelectionBeans;

public class BusSelectionDAO {


Connection connection;

public BusSelectionDAO(){}

private static Connection getConnection() 
        throws SQLException, 
            ClassNotFoundException 
{
    Connection con = ConnectionFactory.
            getInstance().getConnection();
    return con;
}




public static List<BusSelectionBeans> getRecords( String s, String s2){  

    List<BusSelectionBeans> list=new ArrayList<BusSelectionBeans>();  

    try{  

         Connection con=getConnection();  

         System.out.println(s+" to "+s2);

         String SQL="select travels from new_trips.dt_trips where                       
        source_name='"+s+"' and destination_name='"+s2+"' limit 5"; 
         PreparedStatement ps=con.prepareStatement(SQL);  

        //ps.setString(1, s);
       // ps.setString(2, s2);

        ResultSet rs=ps.executeQuery();  

        while(rs.next()){  

        BusSelectionBeans d=new BusSelectionBeans(); 

        String x1=rs.getString(1);


        // String x2=rs.getString(1);
        // String x3=rs.getString(2);


        d.setBusOperator(x1);   

        // d.setS_name(x2);  
        //  d.setD_name(x3);



        list.add(d);  

        }  

        con.close();  

    }catch(Exception e){System.out.println(e);}  


      System.out.println(list);

     return list;  
   }  


   }

为什么我的列表返回为空,但手动提供SQL查询结果。

2 个答案:

答案 0 :(得分:0)

我不确定,但如果您通过此验证结果,System.out.println(list);可能不会给您任何有意义的信息。

您可以遍历列表并打印它们。 for(BusSelectionBeans d_ins : list){/*print stuff of d_ins*/}

同样为了SQL注入,请在注释掉时返回(返回)准备好的语句。

奇怪的可能性
如果您没有对stdoutSystem.out)进行任何打印操作,则可以将其转发到另一个输出流,或者在某些情况下需要刷新。也要确保它。
例如,将结果写入文件,而不是stdout(因为它实际上不能是stdout

答案 1 :(得分:0)

我过去也经历过这种情况。 以下是可能有用的内容:

  1. 您可能想要做的第一件事是仔细检查您的数据库连接。您确定要连接到正确的数据库吗?在某些情况下,您使用的是2个数据库而您忘记更改正在使用的数据库。例如official_db,official_db_test或db1和db2。
  2. 检查参数s和s2?它们的值可能存在问题,因为它们是字符串,在解析过程中可能会出现问题。
  3. 要确定rs内是否有值,请尝试将System.out.println(&#34; rs具有row / s。&#34;)放入(rs.next()){....} ;