SQL Server - 查询返回数据,但使用相同查询的ResultSet返回空

时间:2014-05-15 08:13:30

标签: java sql-server jdbc

任何人都可以想到为什么这段代码循环(正好12次)永远不会返回任何数据的原因,而在SQL Server SMS中输入的相同语句,正是我正在寻找的东西? 调试时,rset.next()返回false并且永远不会进入循环。

Connection connection = null;
PreparedStatement statement = null;
ResultSet rset = null;
ArrayList<PriceList> priceLists = new ArrayList<PriceList>();
String sqlStatement = "";
int i = 1;
try {
    connection = pool.getConnection();
    sqlStatement = "SELECT DISTINCT PriceList.ExRateAbbr FROM PriceList WHERE PLName Like ?;";
    statement = connection.prepareStatement(sqlStatement);
    statement.setString(i++, pricelistName);
    rset = statement.executeQuery();
    while (rset.next()) {
            PriceList pList = new PriceList();
            pList.setCurrency(rset.getString("ExRateAbbr"));
            priceLists.add(pList);
    }
    statement.close();
} catch (SQLException sqle) {
    sqle.printStackTrace();
} finally {
if (pool != null) {
    try {
        pool.releaseConnection(connection);
    } catch (SQLException sqle) {
        sqle.printStackTrace();
    }
}

当我使用Access作为数据库时,这很有效,但是在将整个数据库移动到SQL Server后,什么都没有。没有例外。 我很茫然,我能想到的是,很快就会有一些SQL Server限制来打开和关闭连接。

1 个答案:

答案 0 :(得分:0)

将我的查询更改为:

SELECT DISTINCT PriceList.ExRateAbbr FROM PriceList WHERE PLName=?;

解决了它。但是为什么使用LIKE的查询不起作用?奇怪的是它在SQL Server SMS中执行时有效,那么这里的交易是什么?