我试图从Java程序创建一个新的MS Access表。 SQL查询如下。我收到一个错误说:
net.UcanacessSQLException:UCAExc ::: 4.0.1意外令牌:REQ-MTI
PreparedStatement prepStmt;
String createStmt = "CREATE TABLE [" + tableName + "] ([Test_Case_ID] CHAR (20) PRIMARY KEY, [Test_Name] CHAR (120),"
+ " [Test_Description] CHAR (100), [Req-MTI] CHAR (15), [Req-Card_ID] CHAR (50), [Req-H19] CHAR (20));";
prepStmt = conn.prepareStatement(createStmt);
prepStmt.executeUpdate();
我不能使用下划线而不是连字符。我已经尝试将所有表名放在方括号,引号等中,但似乎没有任何效果。我已经将生成的字符串粘贴到MS Access查询中,并在那里创建表格。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
如果列名包含除字母,数字和下划线之外的任何字符,则必须通过将其括在后引号(`)
中来对名称进行分隔。因此请尝试将列名更改为:
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener(){
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy){
if (dy<0 && !fab.isShown())
fab.show();
else if(dy>0 && fab.isShown())
fab.hide();
}
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
});
答案 1 :(得分:1)
我能够在UCanAccess 4.0.2下重现您的问题。它似乎被CHAR
关键字后面的空格弄糊涂了。如果我将字段指定为CHAR(20)
而不是CHAR (20)
,我可以运行代码。
编辑重新:问题更新
我能够在UCanAccess 4.0.1下重现该问题。解决方法是使用Statement
而不是PreparedStatement
来执行DDL。 (如上所述,甚至不需要移除空格,至少在4.0.1之下。)