我有一个托管bean,可以对Oracle数据库进行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我想要行的内容。
答案 0 :(得分:3)
我希望我明白你的要求,但我担心我不会因为它看起来太简单,但无论如何...
我认为你想要3列的内容,而不是行。是的,您只需指定要在SQL语句中返回的列:
SELECT SessionTTL, MAXACTIVEUSERS, ACTIVEUSERS FROM GLOBALSETTINGS WHERE (condition)...
您也可以使用*作为您不想明确指定的所有列的快捷方式:
SELECT * FROM GLOBALSETTINGS WHERE (condition)...
SQL syntax上的一些背景阅读可能有用
答案 1 :(得分:1)
如果我读得正确(抱歉,如果有误),您只想更改SQL命令以选择数据库表中的ALL COLUMNS。
这样做:
string SqlAll = @"SELECT Database.SessionTTL, Database.MAXACTIVEUSERS, Database.ACTIVEUSERS FROM Database";
这将检索数据库中的所有列。当您想要根据逻辑原因进行过滤时,您也可以在查询中使用条件语句,例如TOP 20,以从结果集中获取前20个结果。
答案 2 :(得分:1)
如果你想通过一个sql查询返回多行,你可能需要查看ArrayList,因为你需要一个循环,代码将遍历你的记录并匹配并找到所有可能的结果,直到记录列表结束