gpt4 book ai didi

java - Type1 中的 SQL 语法 : java jdbc odbc bridge

转载 作者:行者123 更新时间:2023-12-01 11:18:46 26 4
gpt4 key购买 nike

我正在尝试提交到 Microsoft Access 2014。我使用 2014 创建了旧版本的 .mdb 文件。因为我在使用时没有获得 .accdb 选项创建系统 DSN。我在提交 Access 数据库时遇到一些问题。

问题:

1) 我已经做了一点 SQL,但是我们这里使用的 SQL 非常不同。在哪里可以阅读更多此 SQL 语法?即 int 与 number 等

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 表,但不将数据插入到相应的表中。 (我已经在代码中注释了与 batch 表相关的所有内容。因此,我只能看到 user 表的错误)

NOTE: db is the DSN name that I created in C:\Windows\SysWOW64\odbcad32.exe

代码

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();}
}
}

最佳答案

不幸的是,Access SQL 中的 CREATE TABLE 和相关 DDL 语句的文档非常稀疏和分散,但是通过足够的挖掘就可以找到它(在不同的地方)。

就你的情况

  • int 列类型不是自动编号字段所必需的,并且会导致“语法错误”,
  • AUTO_INCRMENTED 不是自动编号字段的正确类型说明符,
  • 并且(正如 Mark 在他的评论中暗示的那样)列属性必须以正确的顺序编写:
String sql = 
"CREATE TABLE user ( " +
"id AUTOINCREMENT PRIMARY KEY, " +
"name VARCHAR(30) " +
");";

关于java - Type1 中的 SQL 语法 : java jdbc odbc bridge,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31497774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com