Java SQL-如何使用一个SQL查询返回多行?
我有一个托管bean,它可以对Oracle数据库进行SQL查询。这只是我如何进行SQL查询的一个非常简单的示例。这是表结构:Java SQL-如何使用一个SQL查询返回多行?,java,sql,javabeans,Java,Sql,Javabeans,我有一个托管bean,它可以对Oracle数据库进行SQL查询。这只是我如何进行SQL查询的一个非常简单的示例。这是表结构: GLOBALSETTINGS --------------------------------- SessionTTL VARCHAR2(40 BYTE) MAXACTIVEUSERS NUMBER ACTIVEUSERS VARCHAR2(20 BYTE) 我使用此表只是为了存储应用程序设置。在下面列出的示例中,我可以用一条SQL语
GLOBALSETTINGS
---------------------------------
SessionTTL VARCHAR2(40 BYTE)
MAXACTIVEUSERS NUMBER
ACTIVEUSERS VARCHAR2(20 BYTE)
我使用此表只是为了存储应用程序设置。在下面列出的示例中,我可以用一条SQL语句获取一个字符串。我希望使用SQL查询获取三行的内容—SessionTL、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;
}
另外,我需要行的内容 我希望我能理解你的要求,但我恐怕我不能理解,因为这似乎太简单了,但无论如何 我认为您需要3列的内容,而不是行。是的,您可以指定希望在SQL语句中返回的列:
SELECT SessionTTL, MAXACTIVEUSERS, ACTIVEUSERS FROM GLOBALSETTINGS WHERE (condition)...
如果不想显式指定所有列,还可以使用*作为所有列iof的快捷方式:
SELECT * FROM GLOBALSETTINGS WHERE (condition)...
一些背景知识可能会有用我希望我能理解你的要求,但我担心我不会,因为这看起来太简单了,但无论如何 我认为您需要3列的内容,而不是行。是的,您可以指定希望在SQL语句中返回的列:
SELECT SessionTTL, MAXACTIVEUSERS, ACTIVEUSERS FROM GLOBALSETTINGS WHERE (condition)...
如果不想显式指定所有列,还可以使用*作为所有列iof的快捷方式:
SELECT * FROM GLOBALSETTINGS WHERE (condition)...
一些背景阅读可能有用如果我读对了(如果弄错了,很抱歉),您只需更改SQL命令以选择数据库表中的所有列
为此:
string SqlAll = @"SELECT Database.SessionTTL, Database.MAXACTIVEUSERS, Database.ACTIVEUSERS FROM Database";
这将检索数据库中的所有列。当出于逻辑原因进行筛选时,您也可以在查询中使用条件语句,例如从结果集中获取前20个结果的前20个结果。如果我读对了(如果出错,请原谅),您只需更改SQL命令以选择数据库表中的所有列
为此:
string SqlAll = @"SELECT Database.SessionTTL, Database.MAXACTIVEUSERS, Database.ACTIVEUSERS FROM Database";
这将检索数据库中的所有列。当出于逻辑原因进行筛选时,您也可以在查询中使用条件语句,例如从结果集中获取前20个结果的前20个结果。如果您希望使用一个sql查询返回多行,您可能需要查看ArrayList,因为您需要一个循环,代码将遍历您的记录并匹配并查找所有可能的结果,直到记录列表的末尾。如果您希望通过一个sql查询返回多行,您可能需要查看ArrayList,因为您需要一个循环,代码将遍历您的记录并匹配并找到所有可能的结果,直到记录列表的末尾。为什么要提交并回滚查询?可能是从示例中剪切和粘贴?INSERT、UPDATE等操作有意义,但SELECT操作充其量是多余的(可能存在此会话的未提交SQL语句!)。@Viruzzo:SELECT语句确实会启动事务,因此结束该事务也是有意义的(某些DBMS实际上还要求您明确地结束“只读”事务). 虽然我同意本例(以及Oracle)中的说法,但这并不是真的需要,但也没有坏处。@user1103606:您希望获取多行而不是多行。@davidaber但是提交/回滚会更糟。为什么要提交并回滚查询?可能是从一个示例中剪切和粘贴?INSERT、UPDATE等操作有意义,但SELECT操作充其量是多余的(可能存在此会话的未提交SQL语句!)。@Viruzzo:SELECT语句确实会启动事务,因此结束该事务也是有意义的(某些DBMS实际上还要求您明确地结束“只读”事务). 虽然我同意本例(以及Oracle)中的说法,但这并不是真的需要,但也没有坏处。@user1103606:您希望获取多行而不是多行。@davidaber但提交/回滚会更糟。