【发布时间】: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)