JDBC Java ALTER TABLE 语法错误
Posted
技术标签:
【中文标题】JDBC Java ALTER TABLE 语法错误【英文标题】:JDBC Java ALTER TABLE Syntax error 【发布时间】:2012-06-05 07:14:15 【问题描述】:我正在用 Java 编写一个带有 MS Access 数据库的程序。 我的程序的改编片段
Statement s;
String[] tabinfo = "Albara", "TBala";
s.execute("ALTER TABLE " + tabinfo[0] + " ALTER COLUMN " +
tabinfo[1] + " SET DEFAULT 0 ");
我得到的是SqlException: ALTER TABLE syntax error
。我做错了什么?我拥有该文件的全部权利。表名和列名是正确的,因为名称是从数据库元数据中提取的,我没有修改系统表。
这是一个修改我自己的数据库的程序,该程序被我几年前制作的程序使用,因此更改数据库是不可能的。也不可能使用 Java,我的客户端计算机不会安装 .Net framework 3.5,我也不会去那里进行信息学维护。
【问题讨论】:
首先确保它与 Java/JDBC 或 Access 有关。获取您的 alter table 语句的完整字符串并直接在 access 中运行它。然后在这里报告。 这个程序最初是用 Visual Basic 2008 编写的。由于我的客户端无法安装 .NET,所以程序用 Java 重写。那时我可以更改表格,但现在不行。我正在使用与测试 vb.net 应用程序相同的数据库的未修改备份版本。 那么,如果你在s.execute
开头的行上放一个断点,并复制Strings的内容,直接在Acces中执行,你会得到什么?
您使用什么 JDBC 驱动程序连接到 MS Access?
我使用 JDBC:ODBC 驱动程序。 ALTER TABLE proveidors ALTER COLUMN Fax INTEGER DEFAULT 0
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntax error in ALTER TABLE statement. at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source) at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source) at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source) at sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source) at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(Unknown Source) at ReparaTexfiMain.main(ReparaTexfiMain.java:74)
【参考方案1】:
该查询不符合 MSDN 上指定的 MS Access 的 ALTER TABLE
语法
ALTER TABLE Statement (Microsoft Access SQL)
其他sources似乎表示设置默认时需要包含数据类型,例如
ALTER TABLE <tableName> ALTER COLUMN <columnName> <columnType> DEFAULT <defaultValue>
(还要注意它不包括SET
)
这个 SO 问题似乎表明您需要启用 SQL Server 语法兼容性才能使用它: SQL to add column with default value - Access 2003
【讨论】:
以上是关于JDBC Java ALTER TABLE 语法错误的主要内容,如果未能解决你的问题,请参考以下文章
Oracle 与LightDB alter table 语法对比(部分)