Как получить доступ к базе данных odbc с помощью Java? - PullRequest
0 голосов
/ 05 января 2012

На самом деле я работаю над приложением Java, которое требует ODBC.
Я создал базу данных ms Access, и соединение классов работает, но при попытке добавить таблицу в базу данных появляется исключение:

java.sql.SQLException: [Microsoft][Pilote ODBC Microsoft Access] Impossible de modifier la structure de la table ??personne??. La base de donn?es est en lecture seule.
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)
    at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)
    at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3109)
    at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:337)
    at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:252)
    at inventaire.NewClass1.main(NewClass1.java:28)

База данных находится в режиме только для чтения.

Как настроить чтение и запись в базу данных?

Ответы [ 5 ]

2 голосов
/ 05 января 2012

По возможности следует избегать моста ODBC-JDBC.

Помните, что при настройке dsn установите readonly на 0.

Вот пример того, как работать с JDBC-ODBC с MS Access (он не завершен)

http://www.mundayweb.com/progs/jdbc-odbc-tut.php

Список драйверов:

http://devapp.sun.com/product/jdbc/drivers/search_results.jsp?jdbc_version=0&vendor_name=&cert_mode=and&jdbc_driver_type_mode=and&dbms=6&dbms_mode=and&features_mode=and&results_per_page=20&submit=Search

Как указано выше, некоторые драйверы должны быть явно определены, и в этом случае может быть ReadOnly = False, некоторым драйверам необходим пароль для редактирования базы данных.

привет

1 голос
/ 05 января 2012

Попробуйте поискать «Дополнительные» параметры конфигурации вашего источника данных ODBC Access.

Там вы должны найти опцию «ReadOnly» ...

Эксперимент с этой опцией с использованием Microsoft odbctest дает -

With: ReadOnly = 1

SQLExecDirect:
    In: hstmt = 0x00613250, 
        szSqlStr = "create table test1 (c1 integer)", cbSqlStr = -3
    Return: SQL_ERROR=-1
    stmt:   szSqlState = "42000", *pfNativeError = -1809, *pcbErrorMsg = 116, *ColumnNumber = -2, *RowNumber = -2
    MessageText = "[Microsoft][ODBC Microsoft Access Driver] Cannot modify the design of table 'test1'.  It is in a read-only database."

что является той же ошибкой, которую вы получаете ...

With: ReadOnly = 0

SQLExecDirect:
    In: hstmt = 0x00613288, 
        szSqlStr = "create table test1 (c1 integer)", cbSqlStr = -3
    Return: SQL_SUCCESS=0

SQL_SUCCESS указывает, что инструкция DDL была успешной ...

1 голос
/ 05 января 2012

Чтобы подключиться из вашего Java-приложения к базе данных доступа, вы должны использовать собственный мост odbc. Перейдите в панель управления -> Администрирование -> Источники данных ODBC и затем добавьте туда свой файл доступа

1 голос
/ 05 января 2012

Было бы проще выяснить, что вы сделали неправильно, если вы поделитесь кодом, который вы использовали для подключения к базе данных.Используйте эту ссылку для устранения проблем

1 голос
/ 05 января 2012

попробуйте добавить "ReadOnly=False;" в строку подключения.Вы уверены, что у вас есть права на запись в файл базы данных?также проверьте дополнительные параметры в odbc dsn, если для ReadOnly установлено значение 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...