异常意外令牌:SMALLINT;而自动增量主键

Posted

技术标签:

【中文标题】异常意外令牌:SMALLINT;而自动增量主键【英文标题】:Exception unexpected token: SMALLINT; while AUTOINCREMENTing PRIMARY KEY 【发布时间】:2016-02-21 05:16:12 【问题描述】:

以下是我的一段代码。但是当我执行时会生成以下异常。 net.ucanaccess.jdbc.UcanaccessSQLException:意外令牌:SMALLINT

   String sql= "CREATE TABLE "+emailId.getText()+"Inbox (id integer PRIMARY KEY AUTOINCREMENT,fromId varchar(50), InMsgs varchar(200))";
   Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
   con=DriverManager.getConnection("jdbc:ucanaccess://path/Email.accdb");
            st=con.createStatement();
            con.setAutoCommit(false);

            check2=st.executeUpdate(sql);

我在带有 UCanAccess 2.0.9.4 的 netbeans 中使用 MSAccess 数据库、Java SE 8。 有什么问题

【问题讨论】:

如果你这样做id AUTOINCREMENT会怎样? 没有整数? @shmosel 如果我使用id Primary Key AUTOINCREMENT 那么我得到unexpected token :Primary 作为例外@shmosel 但我不是这么说的。 没有整数是什么意思? @shmosel 【参考方案1】:

你的查询应该是这样的

CREATE TABLE "+emailId.getText()+"Inbox 
(id AUTOINCREMENT PRIMARY KEY ,
fromId varchar(50), 
InMsgs varchar(200))

AUTOINCREMENT 已指定,因此不需要“整数”。 Primary Key 关键字也应该在数据类型之后。

【讨论】:

它创建表。但是当我尝试打开它时,我得到了错误:“ Reserved error(-5001);there is no message for this error” @Ticktick 您是否尝试过来自 msaccess 的相同查询?只需尝试检查结果..还可以发布您尝试过的完整查询。 @Ticktick 表名创建中的任何空格? 使用的是哪个版本的 msaccess? @Ticktick 尝试下载最新的UcanAccess link

以上是关于异常意外令牌:SMALLINT;而自动增量主键的主要内容,如果未能解决你的问题,请参考以下文章

使用实体框架自动编号

重新排序/重置自动增量主键

重新排序/重置自动增量主键

如何在领域android中设置主键自动增量

复合主键?还是具有唯一复合索引的自动增量主键? [关闭]

重新排序/重置自动增量主键