Basis Data - Skema kolom yang dipilih dalam kueri Menggunakan Java

Pernyataan Masalah:

Apa cara optimal untuk mendapatkan skema kolom dalam klausa pemilihan (nama kolom, tipe) kueri menggunakan Java?

Opsi

  1. Salah satu opsinya adalah menjalankan kueri dan kemudian menggunakan ResultSetMetadata untuk mendapatkan nama kolom dan jenisnya, tetapi saya tidak yakin apakah ini akan optimal karena akan menjalankan seluruh kueri. Bahkan dengan klausa batas, ia masih dapat menjalankan seluruh kueri sebelum hasilnya dibatasi. Apakah akan ada perbedaan kinerja antara kueri dengan dan tanpa klausa batas?

  2. Opsi lainnya adalah berdasarkan tautan yaitu memberikan yang salah kondisi ke kueri dan gunakan ResultSetMetaData.

Misalnya, pilih * dari A di mana 1=0;

Adakah cara lain yang lebih baik atau opsi 2 yang paling optimal dalam semua kasus? yaitu Saya mungkin memiliki kueri yang menggabungkan beberapa tabel, apakah opsi 2 akan masuk akal dalam kasus ini juga ketika saya menambahkan kondisi yang salah di akhir?

Catatan: Butuh solusi untuk DB2 dan SqlServer.

EDIT: Selain itu, apakah urutan pengambilan skema akan cocok dengan urutan kolom dalam data? yaitu Jika saya memilih * dari A, katakanlah saya mendapatkan 5 kolom. Apakah pesanan ini cocok dengan saat saya mendapatkan skema menggunakan ResultSetMetadata menggunakan kueri yang sama?


person Manikandan Kannan    schedule 25.05.2016    source sumber
comment
Bukan ide yang baik untuk membuat kode select * di Java. Anda harus selalu menyiapkan pernyataan Anda dan secara jelas menentukan kolom pengembalian Anda. Dengan cara ini Anda bahkan tidak perlu memeriksa metadata. (sumber: blog.jooq.org/2013/08/12/)   -  person Stavr00    schedule 25.05.2016
comment
Tapi saya butuh semua kolom   -  person Manikandan Kannan    schedule 25.05.2016
comment
dari java Anda menggunakan hasil JDBC. Jadi opsi kedua Anda tampaknya berfungsi pada database mana pun.   -  person danny117    schedule 25.05.2016
comment
Oke dan bagaimana dengan urutan saya mendapatkan skemanya, apakah akan cocok dengan urutan saya mendapatkan datanya?   -  person Manikandan Kannan    schedule 06.06.2016