UCanAccess读取表的最后一列作为第一列

时间:2015-10-14 16:14:37

标签: java jdbc ucanaccess

我的程序总是将Access数据库中的第一列作为第二列读取,第二列作为第三列读取,依此类推,但最后一列读取为第一列。

public void actionPerformed(ActionEvent e) {
  try{
    String query = "insert into Staff values ('2', 'w', 'w', 'w', 'e', 'w', 'd','d','end')";
    stmt.executeUpdate(query);
    status.setText("1 row of record have been inserted");
  }catch(Exception ex){
    ex.printStackTrace();
  }
}

但是当我指定列名时,它通常会读取

public void actionPerformed(ActionEvent e) {
  try{
    String query = "insert into Staff (id, lastName, firstName, mi, address, city, state, telephone, email) "
    + "values ('2', 'w', 'w', 'w', 'e', 'w', 'd','d','end')";
    stmt.executeUpdate(query);
    status.setText("1 row of record have been inserted");
  }catch(Exception ex){
    ex.printStackTrace();
  }
}

1 个答案:

答案 0 :(得分:3)

默认情况下,UCanAccess会处理" DATA"中的表的列。订购。这是在Access元数据内部定义列的顺序,可以与" DISPLAY"顺序。

如果您希望UCanAccess处理" DISPLAY"中的列。顺序,然后添加参数

;columnOrder=DISPLAY

到连接网址的末尾,例如

jdbc:ucanaccess://c:/db/cico.mdb;columnOrder=DISPLAY

但是,您现在还应该意识到,通过 not 在IN​​SERT语句中指定实际的列名,您的代码容易受到假设名称的破坏(和列)。

正如SELECT * FROM不满意,INSERT INTO tablename VALUES ( ...也是如此。您已经为每列指定了,因此您确实应该指定列的名称