UCanAccess 读取表的最后一列作为第一列[重复]

Posted

技术标签:

【中文标题】UCanAccess 读取表的最后一列作为第一列[重复]【英文标题】:UCanAccess reads the last column of a table as the first column [duplicate] 【发布时间】:2015-10-14 16:14:37 【问题描述】:

我的程序总是将 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】:

默认情况下,UCanAccess 按“DATA”顺序处理表的列。这是在 Access 元数据内部定义列的顺序,可能与“DISPLAY”顺序不同。

如果您希望 UCanAccess 以“显示”顺序处理列,则添加参数

;columnOrder=DISPLAY

到您的连接 URL 的末尾,例如,

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

但是,您现在还应该意识到,如果 not 在 INSERT 语句中指定实际的列名,您的代码会因假设名称(和顺序)的列。

正如SELECT * FROM 不受欢迎一样,INSERT INTO tablename VALUES ( ... 也是如此。您已经为每一列指定了 values,因此您确实应该指定列的 names

【讨论】:

是否有标准的编程技术来处理 Java 中的数据库?我正在使用 Y.Daniel 的“Java 编程简介”一书。本书只使用sql查询来处理数据库,但是我在网上看到过很多方法,比如使用数据类、mvc、dao等。 天啊,你真的解决了我的问题!非常感谢!!!

以上是关于UCanAccess 读取表的最后一列作为第一列[重复]的主要内容,如果未能解决你的问题,请参考以下文章

怎样读取excel某一列的每一行内容

oracle查询怎么多个表的第一列

修复引导表的第一列

python的openpyxl库怎么读取一行或者一列

选择具有行跨度的表的第一列

使用 pandas 从 Excel 文件中读取最后一列