Я использую Java (JDBC) для создания утилиты командной строки для выполнения SQL-запроса. Сценарий определяется как текстовый файл, имеющий много запросов. Каждый запрос разделяется разделителем запросов (";"). Выходной сигнал направляется в стандартный вывод.Выполнение нескольких операторов SQL (CRUD) с помощью JDBC
SELECT * FROM table1;
UPDATE table1 SET field1='' WHERE field2='';
SELECT * FROM table1;
INSERT INTO table1 VALUES(...)
SELECT * FROM table1;
Поскольку JDBC может выполнять операторы дискретно, только если они не возвращают ResultSet, мне нужен другой подход.
На данный момент я прочитал файл сценария с запросами, разделил их на разделитель и проанализировал каждый запрос, будь то запрос «SELECT», или «INSERT», «UPDATE», «DELETE», запрос. После этого я буду выполнять каждый запрос в его собственном заявлении. Те, которые возвращают что-то, записываются в stdout, выполняются запросы, управляющие базой данных. И, конечно, я бы сохранил порядок запросов из файла.
Моя проблема: если один из запросов в файле неверен, я не могу откат, потому что каждый запрос выполняется отдельно. Как я могу справиться с этой проблемой?
, если вы поделитесь своим кодом, чем мы сможем легко понять –
Ищем подход к реализации этого. Я думаю, что этот код является тем, что я ищу: http://stackoverflow.com/a/1497614/1188357 – Kiril
в конце инструкции выполняется строкой, делает отдельный метод для выполнения запроса и устанавливает флаг для действительного line –