我需要创建一个带有自动增量主键列的表>我尝试使用以下代码,但它抛出错误。
我的代码:
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 org.DataEntryApplication.view.CreateTableAccess CreateAccessTable SEVERE:null net.ucanaccess.jdbc.UcanaccessSQLException:找不到类型或用户缺少权限:net.ucanaccess.jdbc.UcanaccessStatement.executeUpdate(UcanaccessStatement)的 AUTOINCREMENT .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) at org.DataEntryApplication.view.DataEntryScreen.createAndShowGUI(DataEntryScreen.java:1092) at org.DataEntryApplication.view.Login$7.actionPerformed(Login.java:277) at javax.swing.AbstractButton.fireActionPerformed( AbstractButton.java:2018) 在 javax.swing。AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at 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.LightweightDispatcher.retargetMouseEvent(Container.java:4832) 在 java.awt.Component.dispatchEvent(Component.java:4687) 在 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(Native Method) 在 java. security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:708) 在 java.awt.EventQueue$4.run(EventQueue.java:706) 在 java.security.AccessController.doPrivileged(Native Method) 在 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 at net.ucanaccess.jdbc.AbstractExecute.addDDLCommand(AbstractExecute.java:105) at net.ucanaccess.jdbc.AbstractExecute.executeBase(AbstractExecute.java:127) at net.ucanaccess.jdbc.ExecuteUpdate.execute(ExecuteUpdate.java: 56) 在 net.ucanaccess.jdbc.UcanaccessStatement.executeUpdate(UcanaccessStatement.java:162) ... 41 更多
创建表时出错 --> net.ucanaccess.jdbc.UcanaccessSQLException: type not found or user lacks privilege: AUTOINCREMENT