ฐานข้อมูล - สคีมาของคอลัมน์ที่เลือกในการสืบค้นโดยใช้ Java

คำชี้แจงปัญหา:

อะไรคือวิธีที่ดีที่สุดในการรับสคีมาของคอลัมน์ในส่วนคำสั่งที่เลือก (ชื่อคอลัมน์, ประเภท) ของแบบสอบถามโดยใช้ java?

ตัวเลือก

  1. ทางเลือกหนึ่งคือการเรียกใช้แบบสอบถามแล้วใช้ ResultSetMetadata เพื่อรับชื่อคอลัมน์และประเภท แต่ฉันไม่แน่ใจว่านี่จะเหมาะสมที่สุดหรือไม่เนื่องจากจะเรียกใช้แบบสอบถามทั้งหมด แม้ว่าจะมีข้อจำกัด clause ก็อาจยังคงเรียกใช้แบบสอบถามทั้งหมดก่อนที่ผลลัพธ์จะถูกจำกัด จะมีความแตกต่างด้านประสิทธิภาพระหว่างข้อความค้นหาที่มีและไม่มีข้อจำกัดหรือไม่

  2. อีกทางเลือกหนึ่งคือตามลิงก์ เช่นการให้เท็จ เงื่อนไขในการสืบค้นและใช้ ResultSetMetaData

ตัวอย่างเช่น เลือก * จาก A โดยที่ 1=0;

มีวิธีอื่นใดที่ดีกว่าหรือตัวเลือก 2 ที่เหมาะสมที่สุดในทุกกรณีหรือไม่ เช่น ฉันอาจมีแบบสอบถามที่รวมหลายตาราง ตัวเลือกที่ 2 จะสมเหตุสมผลในกรณีนี้เช่นกันเมื่อฉันเพิ่มเงื่อนไขเท็จในตอนท้าย

หมายเหตุ: ต้องการโซลูชันสำหรับ DB2 และ SqlServer

แก้ไข: นอกจากนี้ลำดับในการดึงสคีมาจะตรงกับลำดับคอลัมน์ในข้อมูลหรือไม่ เช่น ถ้าฉันเลือก * จาก A สมมติว่าฉันได้ 5 คอลัมน์ คำสั่งซื้อนี้จะตรงกันหรือไม่เมื่อฉันได้รับสคีมาโดยใช้ ResultSetMetadata โดยใช้แบบสอบถามเดียวกัน


person Manikandan Kannan    schedule 25.05.2016    source แหล่งที่มา
comment
ไม่ใช่ความคิดที่ดีที่จะเขียนโค้ด select * ใน Java คุณควรเตรียมคำสั่งของคุณเสมอและระบุคอลัมน์ส่งคืนอย่างชัดเจน ด้วยวิธีนี้คุณไม่จำเป็นต้องตรวจสอบข้อมูลเมตาด้วยซ้ำ (ที่มา: blog.jooq.org/2013/08/12/)   -  person Stavr00    schedule 25.05.2016
comment
แต่ฉันต้องการคอลัมน์ทั้งหมด   -  person Manikandan Kannan    schedule 25.05.2016
comment
จาก java ของคุณโดยใช้ชุดผลลัพธ์ JDBC ดังนั้นตัวเลือกที่สองของคุณดูเหมือนจะใช้ได้กับฐานข้อมูลใดก็ได้   -  person danny117    schedule 25.05.2016
comment
ตกลง แล้วลำดับที่ฉันได้รับสคีมา มันจะตรงกับลำดับที่ฉันได้รับข้อมูลหรือไม่   -  person Manikandan Kannan    schedule 06.06.2016