Я хочу выполнить запрос sql следующим образом:
blockquote>
statement.execute("select fullName from user where user_id=1; select fullName from user where user_id=2");
Это возможно только тогда, когда вы установили одно свойство подключения к базе данных, чтобы разрешить одновременное выполнение нескольких запросов. И имя свойства
allowMultiQueries=true
. Это свойство должно быть установлено и отправлено вместе с запросом на соединение с базой данных на сервере. Общий синтаксис выглядит следующим образом:String dbUrl = "jdbc:mysql:///test?allowMultiQueries=true";
Это дополнительное свойство соединения для тех, которые уже существуют, например,
autoReConnect=true
и т. Д.Допустимые значения для свойства
allowMultiQueries
true
,false
,yes
иno
. Любое другое значение отклоняется во время выполнения с помощьюSQLException
.Вы должны использовать
execute( String sql )
или другие его варианты для получения результатов выполнения запроса.multiQuerySqlString = "select fullName from user where user_id=1; "; multiQuerySqlString += "select fullName from user where user_id=2; "; // you can multiple types of result sets multiQuerySqlString += "select last_login from user_logs where user_id=1; "; boolean hasMoreResultSets = stmt.execute( multiQuerySqlString );
Для повторения и обработки результатов вам требуются следующие шаги:
int rsNumber = 0; while ( hasMoreResultSets ) { rsNumber += 1; Resultset rs = stmt.getResultSet(); // based on the structure of the result set, // you can handle column values. if ( rsNumber == 1 ) { while( rs.next() ) { // handle your rs here } // while rs } // if rs is 1 else if ( rsNumber == 2 ) { // call a method using this rs. processMyResultSet( rs ); // example } // if rs is 2 // ... etc // check whether there exist more result sets hasMoreResultSets = stmt.getMoreResults(); } // while results
Обратитесь к:
- Выполнено несколько запросов в java в одном заявлении Одна из подобных сообщений на SO, для которой я дал ответ.