Dengan java.sql.ResultSet
apakah ada cara untuk mendapatkan nama kolom sebagai String
dengan menggunakan indeks kolom? Saya telah melihat melalui API API tetapi saya tidak dapat menemukan apa pun.
233
Anda bisa mendapatkan info ini dari ResultSet
metadata. Lihat ResultSetMetaData
misalnya
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2");
ResultSetMetaData rsmd = rs.getMetaData();
String name = rsmd.getColumnName(1);
dan Anda bisa mendapatkan nama kolom dari sana. Jika kamu melakukan
select x as y from table
kemudian rsmd.getColumnLabel()
akan memberi Anda nama label yang diambil juga.
rsmd.getColumnLabel
jika Anda mengambil kolom dengan label (misalnyaSELECT columnName AS ColumnLabel
for (int i = 1; i <= rsmd.getColumnCount(); i++) String name = rsmd.getColumnName(i);
getColumnName()
mengembalikan nama kolom asli jika tidak menggunakanAS
penamaan alias?AS
tidak ditentukan, nilai yang dikembalikan darigetColumnLabel
akan sama dengan nilai yang dikembalikan olehgetColumnName
metode." . Dalam hampir semua kasus, Anda harus menggunakangetColumnLabel
bukangetColumnName
.Selain jawaban di atas, jika Anda bekerja dengan kueri dinamis dan Anda menginginkan nama kolom tetapi tidak tahu berapa banyak kolom, Anda bisa menggunakan objek ResultSetMetaData untuk mendapatkan jumlah kolom terlebih dahulu dan kemudian menggilirnya .
Mengubah kode Brian:
sumber
i <= columnCount
.Anda dapat menggunakan objek ResultSetMetaData ( http://java.sun.com/javase/6/docs/api/java/sql/ResultSetMetaData.html ) untuk itu, seperti ini:
sumber
Pertanyaan ini sudah tua dan begitu juga jawaban yang benar sebelumnya. Tetapi apa yang saya cari ketika saya menemukan topik ini adalah sesuatu seperti solusi ini. Semoga ini membantu seseorang.
sumber
Menggunakan getMetaData ();
EDIT: Ini berfungsi dengan PostgreSQL juga
sumber
Nama Tabel: orang Field DataType id VARCHAR cname VARCHAR dob DATE
sumber
Saat Anda membutuhkan nama kolom, tetapi tidak ingin mengambil entri:
CATATAN: Hanya berfungsi dengan MySQL
sumber
sumber
Pernyataan SQL yang membaca data dari kueri basis data mengembalikan data dalam kumpulan hasil. Pernyataan SELECT adalah cara standar untuk memilih baris dari basis data dan melihatnya dalam kumpulan hasil. The
**java.sql.ResultSet**
antarmuka merupakan hasil set query database.Menggunakan
MetaData of a result set to fetch the exact column count
http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSetMetaData.html
dan lebih jauh lagi untuk mengikatnya ke tabel model data
tutorial yang sangat bagus di sini: http://www.tutorialspoint.com/jdbc/
sumber
@Cyntech benar.
Jika meja Anda kosong dan Anda masih perlu mendapatkan nama kolom tabel, Anda bisa mendapatkan kolom Anda sebagai tipe Vector, lihat yang berikut:
sumber
sumber
Jika Anda ingin menggunakan spring jdbctemplate dan tidak ingin berurusan dengan staf koneksi, Anda dapat menggunakan yang berikut:
sumber
U bisa mendapatkan nama kolom dan nilai dari resultSet.getMetaData (); Kode ini berfungsi untuk saya:
sumber
Saya tahu, pertanyaan ini sudah dijawab tetapi mungkin orang seperti saya perlu mengakses nama kolom dari
DatabaseMetaData
label bukan indeks:sumber