日期:2014-05-20  浏览次数:20715 次

一个简单查询函数问题
public static List<String> getData(String sql, int n) {

List<String> result = new ArrayList<String>();
String tmp = "";

// 连接数据库
Connection conn = getConnection();

// 读取数据
try {
Statement stmt = conn.createStatement();

// 查询表信息
ResultSet rs = stmt.executeQuery(sql);

while (rs.next()) {
for (int i = 0; i < n; i++) {
tmp += rs.getString(i + 1) + "_";
}

System.out.println(tmp);

}

stmt.close();

} catch (SQLException e) {
e.printStackTrace();
}

// 关闭连接
closeConnection(conn);
System.out.println(result);//测试
return result;

}
注:查询结果可以通过System.out.println(tmp);输出来,但是调用该函数以后无结果,是不是return result不对?要返回结果应该return什么?


------解决方案--------------------
你在while (rs.next())这个循环中,并没有把rs中的数据,封装为VO,然后add到result中去啊,当然是啥都没有了。
------解决方案--------------------
result 都没有定义,也没有把temp、赋值给result
------解决方案--------------------
不知道LZ想要什么
Java code
while (rs.next()) {
for (int i = 0; i < n; i++) {
tmp += rs.getString(i + 1) + "_";
result.add(tmp); //是要每条记录的字符串结果
}

System.out.println(tmp);
//result.add(tmp); //还是所有记录统合为一个字符串的结果
//不管LZ想要什么结果,如果不把需要的结果保存到result中,返回值就什么都没有

------解决方案--------------------
你直接用字段序号来取值,这比较诡异;给个示范性效果,不过比较不雅观:

Java code
while (rs.next()) {
  String[] row = new String[n];
  for (int i = 0; i < n; i++) {
    row[i] = rs.getString(i+1);
  }
  result.add(row);
}

------解决方案--------------------
你值都没往result里丢、肯定木有数据的嘛