我试图只从我的数据库中获取旅行,其中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查询结果。
答案 0 :(得分:0)
我不确定,但如果您通过此验证结果,System.out.println(list);
可能不会给您任何有意义的信息。
您可以遍历列表并打印它们。
for(BusSelectionBeans d_ins : list){/*print stuff of d_ins*/}
同样为了SQL注入,请在注释掉时返回(返回)准备好的语句。
奇怪的可能性
如果您没有对stdout
(System.out
)进行任何打印操作,则可以将其转发到另一个输出流,或者在某些情况下需要刷新。也要确保它。
例如,将结果写入文件,而不是stdout
(因为它实际上不能是stdout
)
答案 1 :(得分:0)
我过去也经历过这种情况。 以下是可能有用的内容: