为什么我的代码如下:
PrintWriter pw = response.getWriter();
pw.println(getValueOf(SQL, "lastName");
在将其传递给我的方法后不打印任何内容:
public static String getValueOf(String sql, String colName)
{
String result = "";
try
{
Connection conn = (Connection) accessDB.connecttoDB(); // pre-defined funct in my other class that works
PreparedStatement pst = (PreparedStatement) conn.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
while (rs.next())
result = rs.getString(colName);
conn.close();
return result;
}
catch (Exception e)
{
e.printStackTrace();
}
return result;
}
换句话说,为什么它似乎正在跳过"尝试"完全的条款,只是跳跃返回空的""结果到底?
我的SQL语句:
String SQL = "SELECT lastName FROM customers WHERE firstName=\"Bob\";";
我确实为这个人提供了一个条目" Bob" (他的姓氏是"迈克")在我的客户表中。
我的客户表:
lastName / firstName / address / email
修改
如果我将返回类型更改为" void" ,它可以正常工作但实际上我需要一个字符串值。
替代代码:
public static void getValueOf(String sql, String colName, PrintWriter pw)
{
try
{
Connection conn = (Connection) accessDB.connecttoDB(); // pre-defined funct in my other class that works
PreparedStatement pst = (PreparedStatement) conn.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
while (rs.next())
pw.println(rs.getString(colName)); // This does print out to the webpage as "Mike"
conn.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
答案 0 :(得分:2)
根据您的上次修改,我猜您有更多而不是一个记录。
所以将代码更改为
if (rs.next()) {
result = rs.getString(colName);
}
此外,您的代码不会跳过try
阻止