SQL - 如何使用一个SQL查询返回多行?

时间:2012-03-08 14:53:49

标签: java sql javabeans

我有一个托管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我想要行的内容。

3 个答案:

答案 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,因为你需要一个循环,代码将遍历你的记录并匹配并找到所有可能的结果,直到记录列表结束