JDBC sẽ chỉ đặt tên cho các cột theo những gì được chỉ định trong truy vấn - nó không biết về tên bảng, v.v.
Bạn có hai lựa chọn:
Tùy chọn 1: Đặt tên các cột khác nhau trong truy vấn, tức là
SELECT
a.columnName as columnNameA,
b.columnName as columnNameB,
...
from table1 a, table2 b where (WHATEVER)
thì trong mã java của bạn, hãy tham khảo bí danh cột:
resultSet.getString("columnNameA");
resultSet.getString("columnNameB");
Tùy chọn 2: Tham khảo cột vị trí trong lệnh gọi của bạn tới API JDBC:
resultSet.getString(1);
resultSet.getString(2);
Lưu ý rằng API JDBC sử dụng một nền tảng chỉ mục - tức là chúng được tính từ 1
(không phải từ 0
như chỉ mục java), vì vậy hãy sử dụng 1
cho cột đầu tiên, 2
cho cột thứ hai, v.v.
Tôi khuyên bạn nên chọn tùy chọn 1, vì sẽ an toàn hơn khi tham chiếu đến các cột được đặt tên:Ai đó có thể thay đổi thứ tự của các cột trong truy vấn và nó sẽ âm thầm phá mã của bạn (bạn sẽ truy cập sai cột nhưng không biết) , nhưng nếu họ thay đổi tên cột, ít nhất bạn sẽ nhận được ngoại lệ "không có cột như vậy" trong thời gian chạy.