LINUX.ORG.RU

JDBC MySQL


0

0

Как такое осуществить:

Есть запрос:

SET @n = 0;
SELECT @n:=@n+1 AS rownum, somefield FROM sometable;

Т.е. состоит из двух запросов. Как Java заставить разбить их на несколько и вывести результат последнего.

Если это запрос в m_query, то код примерно такой

Connection conn = ...
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(m_query);

Это код работать отказывается.

Заранее разбить не получиться, так как запросов таких может быть несколько. split по ; то же не прокатит, так как может быть нечто вроде WHERE a=';';

Как решить проблему? Может есть какая либа для разбора SQL запросов?

★★

con.setAutoCommit( false );
...
bError = false;
stmt.clearBatch();

// add SQL statements
stmt.addBatch( sUpdate1 );
stmt.addBatch( sUpdate2 );
stmt.addBatch( sUpdate3 );

// execute the statements
aiupdateCounts = stmt.executeBatch();

anonymous
()
Ответ на: комментарий от anonymous

>обходить символы экранировки и кавычки в чем проблема дело техники...

Всегда так кажется, но в этой текхнике много подводных камней. Вот я и спросил.

olegk ★★
() автор топика
Ответ на: комментарий от anonymous

Эх маладёшшшш:

SELECT
 CAST(IF(@rowNum > 0,@rowNum:=@rowNum+1,@rowNum:=1)
  AS UNSIGNED INTEGER)
 AS N
FROM some_table, (SELECT @rowNum:=0) t


и не надо тебе 2 запроса.

anonymous
()
Ответ на: комментарий от anonymous

Это если ты сам составляеш запросы а если твоя прога должна исполнять данные кемто в текстовой форме. так что дедушка вы не так поняли суть вопроса.

anonymous
()
Ответ на: комментарий от anonymous

>Это если ты сам составляеш запросы а если твоя прога должна исполнять данные кемто в текстовой форме. так что дедушка вы не так поняли суть вопроса.

Да правильно, запросы не я придумывать буду. Хотя за подсказку спасибо.

olegk ★★
() автор топика
Ответ на: комментарий от olegk

Ах вон оно как...
А что нить типо popen('/usr/local/bin/mysql') не подойдет ? :)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.