我正在尝试使用Microsoft Access 2014.我在2014年创建了.mdb
文件的旧版本。因为在创建.accdb
时我没有System DSN
选项。提交Access数据库时遇到一些问题。
问题:
1)我已经完成了一点SQL,但我们在这里使用的SQL是完全不同的。我在哪里可以阅读更多这种SQL语法?即int与数字等
2) CREATE TABLE用户抛出SQL语法错误
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntax error in
CREATE TABLE statement.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)
at Test.main(t.java:28)
我不明白语法错误是什么
3)我想写这样的黑白功能:
CREATE TABLE user(
ID int PRIMARY KEY AUTO_INCREMENTED NOT NULL,
name varchar(30) );
在多行中,而不是在一条长行中。我尝试在每次分割后使用\
但是给了我编译时错误。
4)如果是 CREATE TABLE批次,这个程序运行完美。在MS Access数据库中创建 BATCH 表,但不会将数据插入相应的表中。 (我已在代码中评论了与批量表相关的所有内容。因此,我只能看到用户表中的错误)
注意:db是我在C:\ Windows \ SysWOW64 \ odbcad32.exe中创建的DSN名称
CODE
import java.sql.*;
import java.util.*;
class Test{
public static void main(String args[]){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("Driver Loaded");
Connection myConnection = DriverManager.getConnection("jdbc:odbc:db");
System.out.println("connection established");
Statement myStatement = myConnection.createStatement();
myStatement.executeUpdate("CREATE TABLE user(ID number NOT NULL AUTO_INCREMENTED,LastName char NOT NULL,FirstName char NOT NULL, Tweet char,PRIMARY KEY (ID))");
//myStatement.executeUpdate("CREATE TABLE batch(name char, age number)");
System.out.println("Created Table");
myStatement.executeUpdate("INSERT INTO user VALUES
//myStatement.executeUpdate("INSERT INTO batch values('rakesh', 23)");
System.out.println("Commited in table");
myStatement.close();
myStatement.close();
}catch(SQLException e){ e.printStackTrace();}
catch(ClassNotFoundException e){ e.printStackTrace();}
}
}
答案 0 :(得分:1)
不幸的是,Access SQL中的CREATE TABLE和相关DDL语句的文档非常稀疏和分散,但是可以通过足够的挖掘找到它(在各个地方)。
在你的情况下
int
列类型,导致“语法错误”,AUTO_INCREMENTED
不是自动编号字段的正确类型说明符,String sql =
"CREATE TABLE user ( " +
"id AUTOINCREMENT PRIMARY KEY, " +
"name VARCHAR(30) " +
");";