Java UCanAccess/ResultSetMetaData/getColumnName()随机返回列的名称

Java UCanAccess/ResultSetMetaData/getColumnName()随机返回列的名称,java,database,ms-access,jdbc,ucanaccess,Java,Database,Ms Access,Jdbc,Ucanaccess,我有一个关于getColumnName()方法的问题。我在UCanAccess库中使用它。我试图获取列名,并将其完全按照MS Access DB中的方式放在表中。但我有随机顺序。也许有人知道我错了什么 对于测试,我将delete添加到表中,并实现了打印 代码是: public class Connections { private final String dbUrl="jdbc:ucanaccess://C:/Users/Admin/Desktop/DB.accdb"; private fi

我有一个关于getColumnName()方法的问题。我在UCanAccess库中使用它。我试图获取列名,并将其完全按照MS Access DB中的方式放在表中。但我有随机顺序。也许有人知道我错了什么

对于测试,我将delete添加到表中,并实现了打印

代码是:

public class Connections {

private final String dbUrl="jdbc:ucanaccess://C:/Users/Admin/Desktop/DB.accdb";
private final String user="";
private final String password="";

public Statement conecting(){
    Statement stat=null;
    try{
        Connection connection=DriverManager.getConnection(dbUrl,user,password);             
        stat=connection.createStatement();          
    }
    catch(SQLException exc){
        exc.printStackTrace();
    }
    return stat;
}
public String[] prepearedNamesOfColumns(String nameOfTable, Statement stat) throws SQLException{
    String[] result=null;
    ResultSet res=stat.executeQuery("select*from "+nameOfTable);
    ResultSetMetaData rsmd=res.getMetaData();
    int columnCount=rsmd.getColumnCount();
    for(int i=1; i<=columnCount;i++){
        System.out.println(rsmd.getColumnName(i));
    }
    return result;
}
}

在访问时,我有如下命令: 1) 伊德鲁兹尼克 2) 纳兹维斯科 3) 伊米 4) miejsce_urodzenia 5) 普莱克 6) 威克

但在控制台中(运行后),我得到: 1) 纳兹维斯科 2) 伊米 3) miejsce_urodzenia 4) 威克 5) 普莱克 6) 伊德鲁兹尼克


为什么我会得到列名称的其他顺序?

我猜这是db表创建时列的顺序。不要从tablename中选择*,而是尝试按所需顺序列出列。。如FilipczakTry的select id_dluznik、nazwisko、Imie、miejsce_urodzenia、plec、wiek添加
;columnOrder=DISPLAY
到连接URL的末尾。Balaji Krishnan-我将对不同的表使用此方法,因此我无法直接写入列的名称。Gord Thompson-您的建议解决了问题。谢谢你可能的副本
public class Demonstration {

public static void main(String[] args) throws SQLException {    
    Connections operacje= new Connections();
    String[] tab=new String[6];
    tab[0]="dluznicy";
    tab[1]="Filipczak";
    tab[2]="Karol";
    tab[3]="Poznań";
    tab[4]="M";
    tab[5]="34";
    String[] wynik=operacje.prepearedNamesOfColumns(tab[0], operacje.conecting());      
}