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 0java.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 语法对比(部分)

Oracle 与LightDB alter table 语法对比(部分)

PostgreSQL ALTER TABLE 命令

SQL ALTER TABLE 语句

PostgreSQL ALTER TABLE 命令

PostgreSQL ALTER TABLE 命令