gpt4 book ai didi

java - 无法使用Java在ms-access中创建自动增量主键字段

转载 作者:行者123 更新时间:2023-11-29 05:15:24 24 4
gpt4 key购买 nike

我需要使用自动增量主键column>创建一个表,我尝试使用以下代码,但会引发error。

我的代码:

     CreateTableAccess.CreateAccessTable("CREATE TABLE D_Centre\n"
+ "(\n"
+ " SlNo AUTOINCREMENT,\n"
+ " CentreID VARCHAR,\n"
+ " CentreName VARCHAR,\n"
+ " [Createddate] DateTime, \n"
+ " CreatedBy VARCHAR, \n"
+ " [Updateddate] DateTime\n"
+ ")", "D_Centre");


public static void CreateAccessTable(String sqlscript, String tablename )
{
String dbFileSpec = DataEntryScreen.homedirectory+"/"+"Dataentry.accdb";
Connection conn = null ;
try {
conn = DriverManager.getConnection("jdbc:ucanaccess://" + dbFileSpec);
} catch (SQLException ex) {
Logger.getLogger(CreateTableAccess.class.getName()).log(Level.SEVERE, null, ex);
}
DatabaseMetaData dmd = null;
try {
dmd = conn.getMetaData();
} catch (SQLException ex) {
Logger.getLogger(CreateTableAccess.class.getName()).log(Level.SEVERE, null, ex);
}
ResultSet rs = null;
try {
rs = dmd.getTables(null, null, tablename , new String[]{"TABLE"});
} catch (SQLException ex) {
Logger.getLogger(CreateTableAccess.class.getName()).log(Level.SEVERE, null, ex);
}
// }
{
try {
if (rs.next()) {
System.out.println("Table ["+tablename+"] already exists.");
} else {
System.out.println("Table ["+tablename+"] does not exist.");
Statement s = conn.createStatement();
s.executeUpdate(sqlscript);
System.out.println("Table ["+tablename+"] created.");
}
} catch (SQLException ex) {
Logger.getLogger(CreateTableAccess.class.getName()).log(Level.SEVERE, null, ex);
System.err.println("Error in table creation --> "+ex.toString());
}
try {
conn.commit();
} catch (SQLException ex) {
Logger.getLogger(CreateTableAccess.class.getName()).log(Level.SEVERE, null, ex);
}
try {
conn.close();
} catch (SQLException ex) {
Logger.getLogger(CreateTableAccess.class.getName()).log(Level.SEVERE, null, ex);
}

}
}


错误:
2014年11月4日3:39:28 PM org.DataEntryApplication.view.CreateTableAccess CreateAccessTable
严重:null
net.ucanaccess.jdbc.UcanaccessSQLException:找不到类型或用户缺少特权:AUTOINCREMENT
    在net.ucanaccess.jdbc.UcanaccessStatement.executeUpdate(UcanaccessStatement.java:164)
    在org.DataEntryApplication.view.CreateTableAccess.CreateAccessTable(CreateTableAccess.java:53)
    在org.DataEntryApplication.view.AccessProcess.accessProcess(AccessProcess.java:40)
    在org.DataEntryApplication.view.DataEntryScreen.addComponentsToPane(DataEntryScreen.java:188)
    在org.DataEntryApplication.view.DataEntryScreen.createAndShowGUI(DataEntryScreen.java:1092)
    在org.DataEntryApplication.view.Login $ 7.actionPerformed(Login.java:277)
    在javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    在javax.swing.AbstractButton $ Handler.actionPerformed(AbstractButton.java:2341)
    在javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    在javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    在javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    在java.awt.Component.processMouseEvent(Component.java:6505)
    在javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
    在java.awt.Component.processEvent(Component.java:6270)
    在java.awt.Container.processEvent(Container.java:2229)
    在java.awt.Component.dispatchEventImpl(Component.java:4861)
    在java.awt.Container.dispatchEventImpl(Container.java:2287)
    在java.awt.Component.dispatchEvent(Component.java:4687)
    在java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    在java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    在java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    在java.awt.Container.dispatchEventImpl(Container.java:2273)
    在java.awt.Window.dispatchEventImpl(Window.java:2719)
    在java.awt.Component.dispatchEvent(Component.java:4687)
    在java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    在java.awt.EventQueue.access $ 200(EventQueue.java:103)
    在java.awt.EventQueue $ 3.run(EventQueue.java:694)
    在java.awt.EventQueue $ 3.run(EventQueue.java:692)
    在java.security.AccessController.doPrivileged(本机方法)
    在java.security.ProtectionDomain $ 1.doIntersectionPrivilege(ProtectionDomain.java:76)
    在java.security.ProtectionDomain $ 1.doIntersectionPrivilege(ProtectionDomain.java:87)
    在java.awt.EventQueue $ 4.run(EventQueue.java:708)
    在java.awt.EventQueue $ 4.run(EventQueue.java:706)
    在java.security.AccessController.doPrivileged(本机方法)
    在java.security.ProtectionDomain $ 1.doIntersectionPrivilege(ProtectionDomain.java:76)
    在java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    在java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    在java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    在java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    在java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    在java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    在java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
由以下原因引起:java.sql.SQLException:找不到类型或用户缺少特权:AUTOINCREMENT
    在net.ucanaccess.jdbc.AbstractExecute.addDDLCommand(AbstractExecute.java:105)
    在net.ucanaccess.jdbc.AbstractExecute.executeBase(AbstractExecute.java:127)
    在net.ucanaccess.jdbc.ExecuteUpdate.execute(ExecuteUpdate.java:56)
    在net.ucanaccess.jdbc.UcanaccessStatement.executeUpdate(UcanaccessStatement.java:162)
    ...另外41个

创建表时出错-> net.ucanaccess.jdbc.UcanaccessSQLException:找不到类型或用户缺少特权:AUTOINCREMENT

最佳答案

确保您使用的是here可用的最新版本的UCanAccess。

我只是用UCanAccess 2.0.9.1尝试了以下方法,它对我来说很好用。

s.executeUpdate(
"CREATE TABLE D_Centre (" +
"slNo AUTOINCREMENT PRIMARY KEY, " +
"CentreID VARCHAR(100) " +
")");


重新编辑:评论

UCanAccess 2.0.9.1(及更高版本)也支持列的DEFAULT值。我刚刚测试了一下,它起作用了:

s.executeUpdate(
"CREATE TABLE D_Centre (" +
"slNo AUTOINCREMENT PRIMARY KEY, " +
"Centre VARCHAR(100) DEFAULT 'foo' " +
")");

关于java - 无法使用Java在ms-access中创建自动增量主键字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26732707/

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