SQL - как вернуть несколько строк одним запросом SQL? - PullRequest
0 голосов
/ 08 марта 2012

У меня есть управляемый компонент, который делает запросы SQL к базе данных Oracle.Это просто очень простой пример того, как я делаю 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;       
   }                         

PS Я хочу содержимое строк.

Ответы [ 3 ]

3 голосов
/ 08 марта 2012

Надеюсь, я понимаю, о чем вы просите, но боюсь, что нет, потому что это кажется слишком простым, но в любом случае ...

Я думаю, вы хотите, чтобы содержимое 3 столбцов, а нестрок.И да, вы можете просто указать столбцы, которые вы хотите вернуть в своем выражении SQL:

SELECT SessionTTL, MAXACTIVEUSERS, ACTIVEUSERS FROM GLOBALSETTINGS WHERE (condition)...

вы также можете использовать * в качестве ярлыка для всех столбцов, если вы не хотите явно указывать их:

SELECT * FROM GLOBALSETTINGS WHERE (condition)...

Некоторое фоновое чтение для Синтаксис SQL может быть полезным

1 голос
/ 08 марта 2012

Если вы хотите вернуть несколько строк одним SQL-запросом, вы можете заглянуть в ArrayList, так как вам нужен цикл, где код будет проходить через ваши записи и сопоставлять их, находя все возможные результаты до конца списка записей. .

1 голос
/ 08 марта 2012

Если я прочитал это правильно (извините, если ошибаюсь), все, что вам нужно сделать, это изменить команду SQL, чтобы выбрать ВСЕ КОЛОННЫ в таблице базы данных.

Для этого:

string SqlAll = @"SELECT Database.SessionTTL, Database.MAXACTIVEUSERS, Database.ACTIVEUSERS FROM Database";

Это позволит получить ВСЕ столбцы в базе данных.Вы также можете иметь условные операторы в своих запросах, если вы хотите фильтровать по логическим причинам, например, TOP 20, чтобы получить первые 20 результатов из набора результатов.

...