任何人都可以想到为什么这段代码循环(正好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限制来打开和关闭连接。
答案 0 :(得分:0)
将我的查询更改为:
SELECT DISTINCT PriceList.ExRateAbbr FROM PriceList WHERE PLName=?;
解决了它。但是为什么使用LIKE
的查询不起作用?奇怪的是它在SQL Server SMS中执行时有效,那么这里的交易是什么?