实际上我正在开发一个需要ODBC的Java应用程序 我创建了数据库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)
数据库处于只读模式。
如何设置数据库读写?
答案 0 :(得分:2)
应尽可能避免使用ODBC-JDBC桥。
请记住,在设置dsn时,将readonly设置为0。
以下是有关如何使用带有MS Access的JDBC-ODBC(未完成)的示例
http://www.mundayweb.com/progs/jdbc-odbc-tut.php
驱动程序列表:
正如杰尔所说,一些司机需要明确定义&在这种情况下可能是ReadOnly = False,有些驱动程序需要密码来编辑数据库。
问候
答案 1 :(得分:1)
尝试将"ReadOnly=False;"
添加到您的连接字符串中。你确定你有对数据库文件的写入权限吗?如果ReadOnly设置为0,还要检查odbc dsn中的高级选项。
答案 2 :(得分:1)
为了从您的Java应用程序连接到访问数据库,您应该使用本机odbc桥。转到您的控制台 - >管理工具 - > ODBC数据源,然后在那里添加您的访问文件
答案 3 :(得分:1)
如果您共享用于连接数据库的代码,那么弄清楚您做错了什么会更容易。 使用this链接进行问题排查
答案 4 :(得分:1)
尝试查看Access ODBC数据源的“高级”配置选项。
你应该找到一个“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语句成功...