คำถามและคำตอบสัมภาษณ์ JDBC 50 อันดับแรก (2025)
ต่อไปนี้เป็นคำถามและคำตอบในการสัมภาษณ์ Java Database Connectivity (JDBC) สำหรับนักศึกษาใหม่และผู้สมัครที่มีประสบการณ์เพื่อให้ได้งานในฝัน
ดาวน์โหลด PDF ฟรี: คำถามสัมภาษณ์ JDBC
1) JDBC คืออะไร?
JDBC ย่อมาจากการเชื่อมต่อฐานข้อมูล Java JDBC เป็น Java API ที่สื่อสารกับฐานข้อมูลและดำเนินการ SQLquery
2) ไดรเวอร์ JDBC คืออะไร และมีไดรเวอร์ JDBC จำนวนเท่าใด
ไดรเวอร์ JDBC ประกอบด้วยคลาสและอินเทอร์เฟซที่ช่วยแอปพลิเคชัน Java และฐานข้อมูล
ไดรเวอร์ JDBC มี 4 ประเภท
- ไดรเวอร์ Type 1 หรือไดรเวอร์บริดจ์ JDBC-ODBC
- ไดรเวอร์ประเภท 2 หรือ Native-APIไดรเวอร์ Java บางส่วน
- ไดรเวอร์ Type 3 หรือ Network Protocol ไดรเวอร์ Java ล้วนๆ
- ไดร์เวอร์ Type 4 หรือ Native-protocol, ไดร์เวอร์ Java ล้วนๆ
3) ฉันจะเชื่อมต่อได้อย่างไร MySQL หรือ Oracle กับ Java?
//for MySQL { try { Class.forName ("com.mysql.jdbc.Driver"); con=DriverManager.getConnection ("jdbc: mysql://localhost:3306/dbanme", "username", "password"); Statement st=con.createstatement (); Resultset rs=st.executeQuery ("select * from user"); rs.next (); catch (ClassNotFoundException e) { System.err.println ("ClassNotFoundException in get Connection," + e.getMessage()); } catch (SQLException e) { System.err.println ("SQLException in getConnection," + e.getMessage ()) ;} //for oracle { try { Class.forName ("oracle.jdbc.driver.OracleDriver"); con= DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:dbname", "username", "password"); Statement st=con.createstatement(); Resultset rs=st.executeQuery("select * from user"); Rs.next(); } catch (ClassNotFoundException e) { System.err.println("ClassNotFoundException in get Connection," +e.getMessage()); } catch (SQLException e) { System.err.println("SQLException in getConnection, " + e.getMessage()); } return con; }
คำอธิบายรหัส
Class.forName สร้างอินสแตนซ์ของไดรเวอร์ JDBC และลงทะเบียนกับ DriverManager
getConnection () วิธีการสร้างการเชื่อมต่อกับฐานข้อมูลเสมอ
เราจำเป็นต้องสร้างอ็อบเจ็กต์ Statement จากอ็อบเจ็กต์การเชื่อมต่อด้านบน คำสั่งนี้จะส่งคืนอ็อบเจ็กต์ resultset ResultSet.next() หมายถึง หากชุดผลลัพธ์ยังคงส่งคืนแถวอยู่
4) ไดรเวอร์ JDBC ตัวใดเป็นไดรเวอร์ที่เร็วที่สุด
ไดรเวอร์ Type 4 หรือไดรเวอร์ Native-protocol ซึ่งเป็นไดรเวอร์ Java ล้วนๆ เป็นไดรเวอร์ที่เร็วที่สุด
5) ส่วนประกอบ JDBC API คืออะไร
ส่วนประกอบมีสี่ประเภท
- เจดีบีซี API
- ผู้จัดการไดร์เวอร์ JDBC
- ชุดทดสอบ JDBC
- สะพาน JDBC-ODBC
6) คำชี้แจงของ JDBC คืออะไร?
คำสั่ง JDBC มี 3 ประเภทตามที่ระบุด้านล่าง:
- คำแถลง: มันจะดำเนินการ SQL แบบสอบถาม (แบบสอบถาม SQL แบบคงที่) กับฐานข้อมูล
- คำชี้แจงที่เตรียมไว้: ใช้เมื่อเราต้องการรันคำสั่ง SQL ซ้ำๆ ข้อมูลอินพุตเป็นแบบไดนามิกและจะถูกรับอินพุตขณะรันไทม์
- คำชี้แจงที่สามารถเรียกได้: ใช้เมื่อเราต้องการดำเนินการขั้นตอนการจัดเก็บ
7) เราจะดำเนินการขั้นตอนการจัดเก็บได้อย่างไร?
กระบวนงานที่เก็บไว้สามารถดำเนินการได้โดยใช้คำสั่ง JDBCcallable นี่คือรหัส
Connection conn = null; CallableStatement callStmt = conn.prepareCall("{call myStoreproc(?, ?)}"); callStmt.setString(1, "abcdefg");
8) ข้อดีของการใช้ PreparationStatement ใน Java คืออะไร?
คำสั่งที่เตรียมไว้ใช้ในการดำเนินการคำสั่ง SQL เดียวกันซ้ำ ๆ ข้อความที่เตรียมไว้จะถูกรวบรวมเพียงครั้งเดียวแม้ว่าจะใช้จำนวน “n” ก็ตาม
9) ResultSet คืออะไร?
อินเทอร์เฟซ java.sql.ResultSet หมายถึงชุดผลลัพธ์ของการสืบค้น SQL หมายความว่าเคอร์เซอร์กำลังชี้แถวของตาราง มันชี้ไปก่อนหน้าแถวแรก
10) ResultSet ประเภทใดบ้าง?
ResultSet มีสามประเภทให้เลือก หากเราไม่ประกาศ ResultSet ใด ๆ นั่นหมายความว่าเรากำลังเรียก TYPE_FORWARD_ONLY
- TYPE_FORWARD_ONLY: เคอร์เซอร์สามารถเลื่อนไปข้างหน้าเท่านั้น
- TYPE_SCROLL_INSENSITIVE: เคอร์เซอร์สามารถเลื่อนไปข้างหน้าและข้างหลังได้ แต่ไม่ละเอียดอ่อน
- TYPE_SCROLL_SENSITIVE: เคอร์เซอร์สามารถเลื่อนไปข้างหน้าและข้างหลังได้ แต่มีความละเอียดอ่อน
11) อธิบายความแตกต่างระหว่าง RowSet กับ ResultSet ใน JDBC หรือไม่
ในการเชื่อมต่อการจัดการ ResultSet กับฐานข้อมูล เราไม่สามารถทำให้ผลลัพธ์เป็นวัตถุอนุกรมได้
เนื่องจากปัญหาข้างต้น เราจึงไม่สามารถส่ง Resultset ข้ามเครือข่ายได้
RowSet ขยายอินเทอร์เฟซ ResultSet ดังนั้นจึงเก็บวิธีการทั้งหมดจาก ResultSet RowSet ถูกทำให้เป็นอนุกรม
ดังนั้นเราสามารถส่ง Rowset จากคลาสหนึ่งไปยังอีกคลาสหนึ่งได้เนื่องจากไม่มีการเชื่อมต่อกับฐานข้อมูล
12) เหตุใดคุณจึงใช้ setAutoCommit(false) ใน JDBC
หากคุณต้องการปิด Auto Commit ให้ตั้งค่าการเชื่อมต่อ setAutoCommit(false)
13) คำเตือนฐานข้อมูลใน JDBC คืออะไร และเราจะจัดการคำเตือนฐานข้อมูลใน JDBC ได้อย่างไร
คำเตือน SQL หรือคำเตือนฐานข้อมูลเป็นคลาสย่อยของคลาส SQLException เราสามารถจัดการมันได้โดยใช้เมธอด getWarnings() บน Connection, Statement และ ResultSet
14) ฉันสามารถรับ ResultSet ที่เป็นโมฆะได้หรือไม่?
ไม่ เราไม่สามารถรับ Resultset ที่เป็นโมฆะได้ ResultSet.next() สามารถคืนค่า null ได้หากระเบียนถัดไปไม่มีแถว
15) Metadata หมายความว่าอย่างไร และเหตุใดเราจึงใช้ข้อมูลดังกล่าว
ข้อมูลเมตา หมายถึง ข้อมูลหรือข้อมูลเกี่ยวกับข้อมูลอื่น เราใช้ข้อมูลเมตาเพื่อรับเวอร์ชันผลิตภัณฑ์ฐานข้อมูล ชื่อไดรเวอร์ จำนวนตารางและมุมมองทั้งหมด
16) อะไรคือความแตกต่างระหว่างการรัน,ExecuteQuery,ExecuteUpdate ใน JDBC?
ดำเนินการ (): สามารถใช้กับ SQL Query ทุกประเภท
ExecuteQuery() : สามารถใช้สำหรับการสืบค้นแบบเลือกข้อมูลได้
ExecuteUpdate(): สามารถใช้เพื่อเปลี่ยนแปลง/อัพเดตตาราง
17) การรวมการเชื่อมต่อฐานข้อมูลคืออะไร? ข้อดีของการใช้พูลการเชื่อมต่อ?
การรวมการเชื่อมต่อหมายความว่าการเชื่อมต่อจะถูกเก็บไว้ในแคชและเราสามารถนำมาใช้ใหม่ได้ในอนาคต
ความได้เปรียบ:
- มันเร็วกว่า
- การรวมการเชื่อมต่อจะง่ายขึ้นในการวินิจฉัยและวิเคราะห์การเชื่อมต่อฐานข้อมูล
18) คลาส DriverManager มีหน้าที่อะไร?
เป็นส่วนต่อประสานระหว่างผู้ใช้และไดรเวอร์ DriverManager ติดตามกิจกรรมทั้งหมดระหว่างฐานข้อมูลและไดรเวอร์ที่เหมาะสม
19) ความหมายของการอัพเดตเป็นชุดคืออะไร?
การอัปเดตเป็นกลุ่มหมายถึงการดำเนินการชุด/กลุ่มของการสืบค้น SQL ทั้งหมดในคราวเดียว
การอัปเดตเป็นกลุ่มสามารถใช้ได้เฉพาะสำหรับการแทรก อัปเดต และลบเท่านั้น แต่ไม่สามารถใช้สำหรับการสืบค้นแบบใช้เลือกข้อมูลได้
20) JDBC API มีแพ็คเกจกี่แพ็คเกจ?
แพ็คเกจสองประเภทมีอยู่ใน JDBC API
- java.sql
- javax.sql
21) ประเภทการส่งคืนของการดำเนินการ,ExecuteQuery และExecuteUpdateคืออะไร?
ประเภทการส่งคืนของการดำเนินการคือบูลีน
ประเภทการส่งคืนของExecuteQueryคือวัตถุ ResultSet
ประเภทการส่งคืนของExecuteUpdateคือ int
22) ดัชนีชุดผลลัพธ์เริ่มต้นด้วย 0 หรือ 1?
ดัชนีของชุดผลลัพธ์เริ่มต้นด้วย 1
23) บทบาทของ Class.forName ขณะโหลดไดรเวอร์คืออะไร?
Class.forName สร้างอินสแตนซ์ของไดรเวอร์ JDBC และลงทะเบียนกับ DriverManager
24) JDBC-ODBC Bridge เป็นแบบมัลติเธรดหรือไม่?
ไม่ JDBC-ODBC Bridge ใช้วิธีการซิงโครไนซ์เพื่อทำให้การโทรทั้งหมดเป็นอนุกรมไปยัง ODBC
25) อินเทอร์เฟซใดที่จัดการการจัดการธุรกรรมใน JDBC
อินเทอร์เฟซการเชื่อมต่อจัดการการจัดการธุรกรรมใน JDBC มันมีวิธีการในการคอมมิต (), การย้อนกลับ () ฯลฯ
26) เหตุใดจึงเกิดข้อผิดพลาด “ไม่มีไดรเวอร์ที่เหมาะสม”
ไม่มีไดรเวอร์ที่เหมาะสม” เกิดขึ้นเมื่อเราเรียกใช้วิธี DriverManager.getConnection
อาจเกิดขึ้นเนื่องจากสาเหตุดังต่อไปนี้:
- ไม่สามารถโหลดไดรเวอร์ JDBC ที่แน่นอนก่อนเรียกใช้เมธอด getConnection
- อาจไม่ถูกต้องหรือผิด JDBC URL
27) ข้อความที่เตรียมไว้จะเร็วขึ้น ทำไม
การดำเนินการตามคำสั่งที่เตรียมไว้จะเร็วกว่าการดำเนินการโดยตรง เนื่องจากคำสั่งจะถูกคอมไพล์เพียงครั้งเดียว คำสั่งที่เตรียมไว้และไดรเวอร์ JDBC เชื่อมต่อระหว่างกันระหว่างการดำเนินการ และไม่มีค่าใช้จ่ายในการเชื่อมต่อ
28) เป็นไปได้ไหมที่จะเชื่อมต่อกับหลายฐานข้อมูล? การใช้คำสั่งเดียวเราสามารถอัปเดตหรือดึงข้อมูลจากฐานข้อมูลสองหรือสามหรือหลายฐานข้อมูลได้หรือไม่
ใช่ คุณสามารถเชื่อมต่อกับหลายฐานข้อมูลพร้อมกันได้ แต่ขึ้นอยู่กับไดรเวอร์เฉพาะ
หากต้องการอัปเดตและแยกข้อมูลจากฐานข้อมูลต่างๆ เราสามารถใช้คำสั่งเดียวได้ แต่เราต้องการมิดเดิลแวร์เพื่อจัดการกับหลายฐานข้อมูลหรือฐานข้อมูลเดียว
29) บอกความแตกต่างระหว่าง setMaxRows(int) และ SetFetchSize(int) หน่อยได้ไหม
setMaxRows(int) | SetFetchSize(int)? |
---|---|
กำหนดจำนวนแถวที่ชุดผลลัพธ์สามารถมีได้ในแต่ละครั้ง | กำหนดจำนวนแถวที่จะอ่านจากฐานข้อมูล |
30) บอกฉันเกี่ยวกับตัวละครพิเศษหน่อยได้ไหม?
อักขระพิเศษนำหน้าด้วยอักขระหลีก ตัวอย่าง -
SELECT NAME FROM TABLE WHERE NAME LIKE '\_%' {escape '\'}
31) “dirty read” ในฐานข้อมูลมีความหมายว่าอย่างไร?
Dirty read หมายถึง “อ่านค่าที่อาจถูกต้องหรือไม่ถูกต้อง”
32) การคอมมิตแบบสองเฟสคุณหมายถึงอะไร?
การคอมมิตแบบสองเฟสใช้ในกระบวนการธุรกรรมแบบกระจาย หากมีการดำเนินการธุรกรรมใด ๆ และจะส่งผลกระทบต่อหลายฐานข้อมูล คอมมิตสองเฟสจะถูกใช้เพื่อทำให้ฐานข้อมูลทั้งหมดซิงโครไนซ์ระหว่างกัน
33) JDBC มีระบบล็อคกี่ระบบ?
การล็อคมีสองประเภทใน JDBC ซึ่งเราสามารถรองรับผู้ใช้มากกว่าหนึ่งราย
หากมีผู้ใช้สองคนกำลังดูข้อมูลเดียวกัน จะไม่มีการล็อกข้อมูล หากผู้ใช้คนหนึ่งกำลังอัปเดตข้อมูล และผู้ใช้คนที่สองกำลังอัปเดตข้อมูลเดียวกันด้วย ในกรณีนี้ เราจะใช้การล็อกข้อมูล
- การล็อคในแง่ดี: มันจะล็อคบันทึกเฉพาะเมื่อเราจะ "อัปเดต"
- การล็อคในแง่ร้าย: มันจะล็อคบันทึกจาก “เลือก” เพื่อดู อัปเดต และยืนยันเวลา
34) JDBC มีข้อยกเว้นอะไรบ้าง?
มีข้อยกเว้นสี่ประเภทใน JDBC
- ข้อยกเว้นการอัปเดตแบทช์
- การตัดทอนข้อมูล
- ข้อยกเว้น SQL
- คำเตือน SQL
35) ให้ขั้นตอนในการเชื่อมต่อกับฐานข้อมูลโดยใช้ JDBC?
มีสองวิธีในการเชื่อมต่อฐานข้อมูลโดยใช้ JDBC
- การใช้ DriverManager:
มันจะโหลดคลาสไดรเวอร์ด้วยความช่วยเหลือของ class.forName(คลาสไดรเวอร์) และ Class.forName()
การโหลดโพสต์จะส่งการควบคุมไปยัง DriverManager
DriverManager.getConnection() จะสร้างการเชื่อมต่อเพื่อเข้าถึงฐานข้อมูล
- การใช้แหล่งข้อมูล:
สำหรับ DataSource ไม่จำเป็นต้องใช้ DriverManager ร่วมกับ JNDI เพราะมันจะทำการค้นหา DataSource จากเซิร์ฟเวอร์บริการ Naming เมธอด DataSource.getConnection() จะส่งคืนอ็อบเจ็กต์ Connection ไปยังฐานข้อมูล
36) อธิบายสถาปัตยกรรม JDBC หรือไม่
JDBC API รองรับทั้งแบบจำลอง 2 ระดับและ 3 ระดับสำหรับฐานข้อมูล
ในแอปพลิเคชัน Java โมเดล 2 ระดับโต้ตอบกับแหล่งข้อมูล
ในคำสั่งโมเดล 3 ระดับจะถูกเปลี่ยนเส้นทางไปยังบริการ "ระดับกลาง" หลังจากนั้นคำสั่งก็ส่งไปยังแหล่งข้อมูล
37) คุณสมบัติใหม่ที่มีอยู่ใน JDBC 4.0 มีอะไรบ้าง?
คุณสมบัติใหม่คือ
- โหลดอัตโนมัติโดยคลาสไดรเวอร์ JDBC
- การจัดการการเชื่อมต่อที่ได้รับการปรับปรุง
- เปิดใช้งาน RowId SQL แล้ว
- ชุดข้อมูลที่ดำเนินการโดย SQL โดยใช้คำอธิบายประกอบ
- การปรับปรุงการจัดการข้อยกเว้น SQL
- รองรับ SQL XML ไฟล์
38) JDBC ใช้แพ็คเกจอะไรบ้าง?
มีการใช้แพ็คเกจ 8 รายการใน JDBC –
- sql.ไดร์เวอร์
- การเชื่อมต่อ
- คำแถลง
- แถลงการณ์ที่เตรียมไว้
- CallableStatement
- ชุดผลลัพธ์
- ResultSetMetaData
- ฐานข้อมูลMetaData
39) JDBC มี RowSet จำนวนเท่าใด
มีชุดแถวให้เลือกสองประเภท:
- เรามีเครือข่าย – วัตถุ RowSet ที่เชื่อมต่อจะเชื่อมต่อกับฐานข้อมูลทันที หากแอปพลิเคชันยุติลง วัตถุ RowSet ที่เชื่อมต่อก็จะยุติเช่นกัน
- ตัดการเชื่อมต่อ – ออบเจ็กต์ RowSet ที่ไม่ได้เชื่อมต่อจะเชื่อมต่อกับฐานข้อมูลหลังจากดำเนินการแบบสอบถามที่จำเป็น
40) ความหมายของการเชื่อมต่อคืออะไร?
อินเทอร์เฟซการเชื่อมต่อประกอบด้วยวิธีการโต้ตอบกับฐานข้อมูล
41) อธิบาย JDBC Savepoint หรือไม่
จุดบันทึกแสดงถึงจุดที่ธุรกรรมปัจจุบันสามารถย้อนกลับไปได้ แทนที่จะย้อนกลับการเปลี่ยนแปลงทั้งหมด กลับสามารถเลือกย้อนกลับเพียงบางส่วนเท่านั้น
42) รายการข้อดีของการใช้ DataSource?
แหล่งข้อมูลกำลังแบ่งงานระหว่างผู้ดูแลระบบและโปรแกรมเมอร์/นักพัฒนา
ผู้ดูแลระบบสร้างอ็อบเจ็กต์ DataSource และเชื่อมโยงกับรีจิสทรี JNDI โปรแกรมเมอร์/นักพัฒนาจะดึงอ็อบเจ็กต์ DataSource จากรีจิสทรี จากนั้นจึงสร้างการเชื่อมต่อกับฐานข้อมูล
43) อะไรคือเหตุผลว่าทำไมเราถึงต้องการ JdbcRowSet เช่น wrapper รอบ ResultSet
เราสามารถใช้วัตถุ ResultSet เป็นส่วนประกอบ JavaBeans
- JdbcRowSet ยังสามารถใช้เป็นส่วนประกอบ JavaBeans ได้ นั่นเป็นเหตุผลว่าทำไมจึงสามารถสร้างและกำหนดค่าในเวลาออกแบบหรือคอมไพล์และดำเนินการในขณะรันไทม์
- ออบเจ็กต์ jdbcRowSet ทั้งหมดสามารถเลื่อนและอัปเดตได้
44) เราสามารถดูชุดผลลัพธ์ได้กี่วิธี?
การดู ResultSet มี 2 วิธี
- คอลัมน์
- ดัชนีคอลัมน์
ตัวอย่าง: getInt(String columnName), getInt(int columnIndex)
45) คุณสามารถอัปเดตชุดผลลัพธ์ได้กี่วิธี?
วิธีการต่อไปนี้ช่วยให้คุณอัปเดตชุดผลลัพธ์ได้
- อัพเดตแถว()
- ลบแถว()
- รีเฟรชแถว()
- ยกเลิกการอัปเดตแถว()
- แทรกแถว()
46) เหตุใดเราจึงควรปิดการเชื่อมต่อฐานข้อมูลใน Java?
ตามแนวทางปฏิบัติที่ดีที่สุด เราต้องปิดชุดผลลัพธ์ คำสั่ง และการเชื่อมต่อ ถ้าการเชื่อมต่อมาจากพูล เมื่อปิด การเชื่อมต่อจะถูกส่งกลับไปยังพูลเพื่อนำมาใช้ใหม่ เรากำลังดำเนินการนี้ในบล็อกสุดท้าย {} เพราะหากมีข้อยกเว้นใดๆ เกิดขึ้น เรายังคงมีโอกาสที่จะปิดสิ่งนี้ได้
47) เหตุใดเราจึงใช้ประเภทข้อมูล blob ใน JDBC
ใช้เพื่อเก็บข้อมูลจำนวนมากลงในฐานข้อมูล เช่น รูปภาพ ภาพยนตร์ ฯลฯ
48) จะตั้งค่าคุณสมบัติ Concurrency ใน ResultSet ได้อย่างไร?
มีสองระดับการทำงานพร้อมกัน
- CONCUR_READ_ONLY - มีไว้สำหรับการอ่านเท่านั้น
- CONCUR_UPDATABLE - สำหรับทั้งการอ่านและการอัปเดต
49) อะไรคือความแตกต่างระหว่างเคอร์เซอร์ฐานข้อมูลไคลเอนต์และเซิร์ฟเวอร์?
เคอร์เซอร์ฝั่งเซิร์ฟเวอร์หมายถึงข้อมูลและผลลัพธ์จะถูกบันทึกไว้บนเซิร์ฟเวอร์ เมื่อข้อมูลที่ร้องขอถูกส่งไปยังไคลเอนต์เท่านั้น
เคอร์เซอร์ฝั่งไคลเอ็นต์หมายถึงข้อมูลทั้งหมดที่ส่งไปยังที่ตั้งไคลเอ็นต์
50) คุณจะแทรกรูปภาพลงในฐานข้อมูลโดยใช้ JDBC ได้อย่างไร
รูปภาพในฐานข้อมูลโดยใช้ประเภทข้อมูล BLOB โดยที่รูปภาพจัดเก็บเป็นสตรีมไบต์ โค้ดด้านล่างแสดงวิธีการแทรกรูปภาพลงในฐานข้อมูล
Connection con = null; PreparedStatement prs = null; InputStream inputstrm = null; Class.forName("oracle.jdbc.driver.OracleDriver"); con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:mydb","username","yourpassword"); //localhost is your machine or hostname //1521 is your oracle database port number //mydb is your oracle database name. prs = con.prepareCall("insert into emp_profile values (?,?)"); prs.setInt(1, 1223); inputstrm = new FileInputStream(new File("emp_img.jpg")); prs.setBinaryStream(2, inputstrm); int count = prs.executeUpdate();
คำถามสัมภาษณ์เหล่านี้จะช่วยในวีว่าของคุณ (วาจา)
มีประโยชน์มากสำหรับนักเรียน………..
ดีที่สุด