Драйвер Java-Paradox — можно выбирать, но нельзя изменять

Мне нужно выполнить некоторые операции с БД в базе данных paradox из java-кода.

(даже не знал о существовании парадокса)

Итак, я скачал этот драйвер, как показано здесь: https://github.com/leonhad/paradoxdriver, и создал код для запроса базы данных paradox. Это работает нормально.

Но когда я пытаюсь удалить какую-либо запись в той же таблице, где я могу успешно выполнить выборку, я получаю эту ошибку:

java.sql.SQLFeatureNotSupportedException: неподдерживаемая операция.

SQL выполняется с помощью команды «myStatement.execute (удалить)», и это следующее:

delete from mytable where field1 = 3 or field1= 4

Я совсем запутался, потому что при подключении к БД с помощью драйвера я не даю никакого имени пользователя/пароля, просто

Class.forName("com.googlecode.paradox.Driver");
java.sql.Connection conn = DriverManager.getConnection("jdbc:paradox:./db");

Этот драйвер не разрешает операции удаления?


person Maik    schedule 27.09.2019    source источник
comment
У вашего пользователя есть разрешение на удаление? Какой SQL вы использовали?   -  person mwarren    schedule 27.09.2019
comment
Я отредактировал исходный вопрос   -  person Maik    schedule 30.09.2019


Ответы (2)


Если вы посмотрите на код драйвера, метод executeUpdate() не реализован. Вместо этого используйте execute().

Также проверьте объект подключения с помощью isReadOnly(), если он доступен только для чтения, попробуйте использовать setReadOnly(false).

ИЗМЕНИТЬ

После дальнейшего изучения исходного кода оказалось, что этот драйвер еще не реализовал удаление. Лучше найти другого водителя.

person mwarren    schedule 27.09.2019
comment
Спасибо за подсказку, но все еще не работает (я отредактировал исходный вопрос) - person Maik; 30.09.2019
comment
Соединение было только для чтения. Я изменил его с помощью предложенной вами команды, но все равно получаю ту же ошибку (java.sql.SQLFeatureNotSupportedException: неподдерживаемая операция). - person Maik; 30.09.2019
comment
@Maik Вы все еще пытаетесь использовать executeUpdate(), потому что это все равно не сработает. Используйте выполнить(). - person mwarren; 30.09.2019
comment
Нет, я использую execute, как вы предложили: String delete = delete from mytable, где field1 = 3 или field1 = 4; логическое значение esito = statTC.execute(удалить); - person Maik; 30.09.2019
comment
@Maik Копаясь глубже в исходный код, похоже, что ничего, кроме выбора, не реализовано. Я предлагаю вам найти другого водителя. - person mwarren; 30.09.2019
comment
Это действительно прискорбно. Я искал в Интернете, но ничего не нашел =( - person Maik; 01.10.2019

Драйвер, который вы пытаетесь использовать, неполный, я тоже пробовал. Разработчик сказал два или три месяца назад, что перепишет драйвер (мне нужен оператор выбора соединения, который не работает). Лучший драйвер парадокса, который я нашел, это http://www.hxtt.com/paradox.html. , но это не бесплатно. Однако его можно использовать не более чем для 50 запросов одновременно. Теперь я использую драйвер jdbc-odbc, и это нормально. Он был удален в Java 8, но его все еще можно использовать: https://stackoverflow.com/a/36875001/12298400.

person itudor    schedule 30.10.2019