我有一个托管bean,它使SQL查询到Oracle数据库。这只是我如何进行SQL查询的一个非常简单的例子。这是表结构:SQL - 如何使用一个SQL查询返回多行?
GLOBALSETTINGS
---------------------------------
SessionTTL VARCHAR2(40 BYTE)
MAXACTIVEUSERS NUMBER
ACTIVEUSERS VARCHAR2(20 BYTE)
我用这个表只是为了存储应用程序设置。在下面列出的例子中,我可以用一条SQL语句获取一个字符串。我想用SQL查询来获取三行的内容 - SessionTTL,MAXACTIVEUSERS,ACTIVEUSERS。可能吗?
public String CheckUserDB(String userToCheck) throws SQLException {
String storedPassword = null;
String SQL_Statement = null;
if (ds == null) throw new SQLException();
Connection conn = ds.getConnection();
if (conn == null) throw new SQLException();
try {
conn.setAutoCommit(false);
boolean committed = false;
try {
SQL_Statement = "SELECT Passwd from USERS WHERE Username = ?";
PreparedStatement passwordQuery = conn.prepareStatement(SQL_Statement);
passwordQuery.setString(1, userToCheck);
ResultSet result = passwordQuery.executeQuery();
if(result.next()){
storedPassword = result.getString("Passwd");
}
conn.commit();
committed = true;
} finally {
if (!committed) conn.rollback();
}
}
finally {
conn.close();
}
return storedPassword;
}
P.S我想要行的内容。
为什么你提交和查询回滚? – Viruzzo 2012-03-08 14:57:14
也许从一个例子中切割和粘贴?在INSERT,UPDATE等上有意义,但在SELECT上充其量可能是多余的(可能会出现此会话的未提交的SQL语句!)。 – 2012-03-08 15:07:29
@Viruzzo:SELECT语句不启动事务,因此是很有意义以结束交易,以及(DBMS的一些实际要求你也explictely结束“只读”交易)。虽然我同意这个例子(和Oracle),但它并不是真的需要,但它也不会造成任何损害。 – 2012-03-08 15:17:37