Java 데이터베이스에서 MySQL 데이터베이스의 열 순서를 확인하려고합니다. 나는 테이블의 create 문 (this.create)과 컬럼의 이름 (column.getName())을 가지고있다. 그런 다음 create 문에서 열 이름의 색인을 찾습니다. 이 값을 List에 할당 한 다음 Collectio.sort()를 사용하여 정렬합니다. 이것은 열의 순서를 결정하는 데 사용됩니다. 유일한 문제는 예상 결과가 나지 않는다는 것입니다.Collection.sort가 반환하지 않습니다. 예상 결과
public void orderColumns() {
List<Integer> cols = new ArrayList();
for (column column : columns) {
cols.add(this.create.indexOf("`" + column.getName() + "`"));
}
Collections.sort(cols);
for (column column : columns) {
for (int i = 0; i < cols.size(); i++) {
if (this.create.indexOf("`" + column.getName() + "`") == cols.get(i)) {
this.order_of_columns.add(column);
}
}
}
System.out.println(this.create);
for(column column : order_of_columns) {
System.out.println(this.name + " : " + this.create.indexOf("`" + column.getName() + "`") + " " + column.getName());
}
}
여기에 하나 개의 테이블의 출력입니다 : 여기 내 코드는 내가 잘못 뭐하는 거지의
CREATE TABLE `versions` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL DEFAULT '',
`version` varchar(10) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;
versions : 77 name
versions : 119 version
versions : 28 id
어떤 아이디어? 도와 줘서 정말 고마워!
나는 그것이 당신의 for 루프에 문제가 될 수있다 생각합니다. 'for (column column : columns)'대신'for (column c : columns)'를 시도해 주시겠습니까? 자바 컴파일러가 왜 컴파일 될지 이해할 수 없다. – cdaiga
당신은 무엇을 기대합니까? –
@cdaiga 이것은 합법적 인 Java이므로. 다른 종류의 식별자에 대해 별도의 네임 스페이스를 유지합니다. 그러나, 규약은 클래스에 대문자로 시작하는 이름을 사용하기 때문에 클래스 이름으로서'column'은 규약을 따르지 않습니다. – ajb