Saya menggunakan CsvJdbc (ini adalah driver JDBC untuk file csv) untuk mengakses file csv. Saya tidak tahu berapa banyak kolom yang dikandung file csv. Bagaimana saya bisa mendapatkan jumlah kolom? Apakah ada fungsi JDBC untuk ini? Saya tidak dapat menemukan metode apa pun untuk ini di java.sql.ResultSet.
Untuk mengakses file tersebut, saya menggunakan kode yang mirip dengan contoh di website CsvJdbc.
ResultSetMetaData
implementasinya menangani catatan CSV dengan panjang variabel. mis. Jika Anda menentukanSELECT * FROM sample
dan setiap baris berisi jumlah bidang yang berbeda, apakah jumlah kolom akan dievaluasi ulang untuk setiap baris yang diiterasi?PreparedStatement ps=con.prepareStatement("select * from stud"); ResultSet rs=ps.executeQuery(); ResultSetMetaData rsmd=rs.getMetaData(); System.out.println("columns: "+rsmd.getColumnCount()); System.out.println("Column Name of 1st column: "+rsmd.getColumnName(1)); System.out.println("Column Type Name of 1st column: "+rsmd.getColumnTypeName(1));
sumber
rs.getMetaData()
metodenya mahal? Apakah itu query database setiap kali dipanggil atau tidak?rs.getMetaData()
panggilan dapat intensif; tetapi setelah Anda memiliki objek,rsmd
biasanya tidak ada panggilan tambahan ke database yang dilakukan saat menjalankan metode pada objek metadata; semua metadata diisi dengan panggilan getMetaData.Jumlah kolom dalam kumpulan hasil yang bisa Anda dapatkan dengan kode (karena DB digunakan PostgreSQL):
Tetapi Anda bisa mendapatkan lebih banyak informasi meta tentang kolom:
for(int i = 1; i <= numOfCols; i++) { System.out.println(rsmd.getColumnName(i)); }
Dan setidaknya tidak sedikit, Anda bisa mendapatkan beberapa info tidak hanya tentang tabel tetapi tentang DB juga, bagaimana melakukannya dapat Anda temukan di sini dan di sini .
sumber
Setelah membangun koneksi dan menjalankan kueri, coba ini:
ResultSet resultSet; int columnCount = resultSet.getMetaData().getColumnCount(); System.out.println("column count : "+columnCount);
sumber
Ini akan mencetak data dalam kolom dan muncul ke baris baru setelah kolom terakhir tercapai.
ResultSetMetaData resultSetMetaData = res.getMetaData(); int columnCount = resultSetMetaData.getColumnCount(); for(int i =1; i<=columnCount; i++){ if(!(i==columnCount)){ System.out.print(res.getString(i)+"\t"); } else{ System.out.println(res.getString(i)); } }
sumber