เจดีบีซี. การเชื่อมต่อฐานข้อมูลและสร้างแอปพลิเคชันคอนโซล Java ใน IntelliJ IDEA
การแนะนำ
บทความนี้จะเปิดซีรีส์สั้นเกี่ยวกับพื้นฐานการโต้ตอบกับ
ฐานข้อมูลใน Javaและ
บทนำเกี่ยวกับ SQL หลายโปรแกรมกำลังยุ่งอยู่กับการประมวลผลและแก้ไขข้อมูลและคอยอัปเดตอยู่เสมอ เนื่องจากข้อมูลเป็นส่วนสำคัญของตรรกะของโปรแกรม จึงมักมีการจัดสรรพื้นที่เก็บข้อมูลแยกต่างหาก ข้อมูลในนั้นมีโครงสร้างและอยู่ภายใต้กฎพิเศษเพื่อให้แน่ใจว่าการประมวลผลและการจัดเก็บถูกต้อง ข้อมูลถูกเข้าถึงและแก้ไขโดยใช้ภาษาคิวรีพิเศษ - SQL (Structured Query Language)
ระบบการจัดการฐานข้อมูลคือซอฟต์แวร์ที่รับรองการโต้ตอบของโปรแกรมภายนอกต่างๆ กับข้อมูลและบริการเพิ่มเติม (การบันทึก การกู้คืน การสำรองข้อมูล ฯลฯ) รวมถึงผ่านทาง SQL นั่นคือชั้นซอฟต์แวร์ระหว่างข้อมูลและโปรแกรมภายนอกที่ใช้งานได้ ในส่วนนี้เราจะตอบคำถามว่า SQL คืออะไร SQL Server คืออะไร และสร้างโปรแกรมแรกเพื่อโต้ตอบกับ DBMS
ประเภทของ DBMS
มี DBMS หลายประเภทตามวิธีจัดระเบียบพื้นที่จัดเก็บข้อมูล:
- ลำดับชั้น ข้อมูลถูกจัดอยู่ในโครงสร้างแบบต้นไม้ ตัวอย่างคือระบบไฟล์ที่เริ่มต้นจากรากของดิสก์ จากนั้นขยายสาขาของไฟล์ประเภทต่างๆ และโฟลเดอร์ที่มีระดับการซ้อนต่างกัน
- เครือข่าย. การปรับเปลี่ยนลำดับชั้น แต่ละโหนดสามารถมีพาเรนต์ได้มากกว่าหนึ่งรายการ
- เชิงวัตถุ ข้อมูลถูกจัดระเบียบในรูปแบบของคลาส/ออบเจ็กต์พร้อมคุณลักษณะและหลักการโต้ตอบตาม OOP
- เชิงสัมพันธ์ ข้อมูลของ DBMS ประเภทนี้จัดอยู่ในตาราง ตารางสามารถเชื่อมโยงถึงกันได้ ข้อมูลในตารางมีโครงสร้าง
ในบทความชุดนี้ เราจะดู DBMS เชิงสัมพันธ์ (ซึ่งเป็นบทความที่พบบ่อยที่สุด) โดยใช้ H2 เป็นตัวอย่าง และสร้างแอปพลิเคชันตั้งแต่เริ่มต้นที่จำลองบางสิ่งที่คล้ายกับวิธีการทำงานของการแลกเปลี่ยน
คำถาม:ทำไมไม่ใช้ PostgreSQL, MySQL, MSSQL หรือ Oracle
คำตอบ:เพื่อไม่ให้เสียสมาธิกับปัญหาการติดตั้งชุดโปรแกรมแยกต่างหาก การกำหนดค่าเพิ่มเติม การสร้างฐานข้อมูล ความซับซ้อนของการทำงานใน OS เวอร์ชันต่างๆ หากต้องการทำงานกับ H2 คุณต้องดำเนินการขั้นต่ำ แต่ไม่มีสิ่งใดป้องกันคุณจากการเปลี่ยน H2 JDBC ปัจจุบันเป็น DBMS เชิงสัมพันธ์จากผู้ผลิตรายอื่น (เฉพาะบรรทัดที่อยู่เซิร์ฟเวอร์และชื่อคลาสไดรเวอร์เท่านั้นที่เปลี่ยน)
SQL
โปรแกรมภายนอกจะสร้างการสืบค้นไปยัง DBMS ในภาษาการจัดการข้อมูล Structured Query Language SQL คืออะไร และแตกต่างจากภาษาโปรแกรมทั่วไปอย่างไร หนึ่งในคุณสมบัติของ SQL คือการประกาศ นั่นคือSQL
เป็นภาษาประกาศ ซึ่งหมายความว่าเมื่อป้อนคำสั่งนั่นคือการสร้างแบบสอบถามไปยังเซิร์ฟเวอร์ SQL เราจะอธิบายว่าเราต้องการรับอะไรอย่างแน่นอนไม่ใช่ในลักษณะใด โดยการส่งคำขอไปยังเซิร์ฟเวอร์
SELECT * FROM CUSTOMER
(การแปลโดยประมาณจาก SQL เป็นภาษารัสเซีย:
"ทำการเลือกจากตาราง COSTUMER การเลือกประกอบด้วยแถวทั้งหมดในตาราง" ) เราจะได้รับข้อมูลสำหรับผู้ใช้ทั้งหมด ไม่สำคัญเลยว่าจะดาวน์โหลดและสร้างข้อมูลที่เราสนใจอย่างไรและจากที่ไหน สิ่งสำคัญคือการกำหนดคำขอให้ถูกต้อง
- SQL Server คืออะไร และทำงานอย่างไร? การโต้ตอบกับ DBMS เกิดขึ้นบนหลักการไคลเอนต์-เซิร์ฟเวอร์ โปรแกรมภายนอกบางโปรแกรมส่งคำขอในรูปแบบของตัวดำเนินการและคำสั่งในภาษา SQL จากนั้น DBMS จะประมวลผลและส่งการตอบกลับ เพื่อความง่าย สมมติว่า SQL Server = DBMS
หากคุณสามารถขับรถยี่ห้อหนึ่งได้ คุณก็น่าจะสามารถขับรถยี่ห้ออื่นได้โดยไม่มีปัญหาใดๆ พื้นฐานของการขับขี่จะเหมือนกันทุกที่ ยกเว้นรายละเอียดเล็กๆ น้อยๆ เช่นเดียวกับเซิร์ฟเวอร์ SQL จากผู้ผลิตหลายราย แต่ละเซิร์ฟเวอร์มีเวอร์ชันของ SQL ของตัวเอง แต่เป็นไปตามมาตรฐานที่ระบุ (SQL92, SQL2003...) เราจะใช้ตัวดำเนินการและคำสั่งภายในกรอบงาน SQL92
คำสั่ง SQL พื้นฐานแบ่งออกเป็นกลุ่มต่างๆ ดังต่อไปนี้:
- ภาษาคำจำกัดความข้อมูล ( DDL ) – คำจำกัดความของข้อมูล การสร้างโครงสร้างฐานข้อมูลและวัตถุ
- ภาษาการจัดการข้อมูล ( DML ) – การโต้ตอบจริงกับข้อมูล: การแทรก การลบ การแก้ไข และการอ่าน
- ภาษาควบคุมธุรกรรม ( TCL ) – การจัดการธุรกรรม
- ภาษาควบคุมข้อมูล ( DCL ) – การจัดการสิทธิ์การเข้าถึงข้อมูลและโครงสร้างฐานข้อมูล
ในบทความชุดนี้ เราจะดูสามกลุ่มแรก โดยให้ความสนใจเป็นพิเศษกับ DML
เจดีบีซี
ในช่วงทศวรรษที่ 80 ของศตวรรษที่ผ่านมา คอมพิวเตอร์ส่วนบุคคลประเภท PC XT/AT ได้ครองตลาด สาเหตุหลักมาจากการออกแบบโมดูลาร์ ซึ่งหมายความว่าผู้ใช้สามารถเปลี่ยนส่วนประกอบใดส่วนประกอบหนึ่งของคอมพิวเตอร์ได้อย่างง่ายดาย (โปรเซสเซอร์ การ์ดแสดงผล ดิสก์ ฯลฯ ) คุณสมบัติที่ยอดเยี่ยมนี้ยังคงอยู่มาจนถึงทุกวันนี้: เราเปลี่ยนการ์ดแสดงผลและอัปเดตไดรเวอร์ (บางครั้งอาจอัปเดตตัวเองโดยอัตโนมัติด้วยซ้ำ) บ่อยครั้งที่ไม่มีอะไรเลวร้ายเกิดขึ้นกับการปรับเปลี่ยนดังกล่าวและโปรแกรมที่มีอยู่จะยังคงทำงานกับระบบที่อัปเดตต่อไปโดยไม่ต้องติดตั้งใหม่ เช่นเดียวกับการทำงานใน Java ด้วย DBMS เพื่อสร้างมาตรฐานการทำงานกับเซิร์ฟเวอร์ SQL การโต้ตอบกับเซิร์ฟเวอร์สามารถทำได้ผ่านจุดเดียว -
JDBC (การเชื่อมต่อ Java DataBase) เป็นการปรับใช้ แพ็คเกจ
java.sqlสำหรับการทำงานกับ DBMS ผู้ผลิตเซิร์ฟเวอร์ SQL ยอดนิยมทั้งหมดปล่อยไดรเวอร์ JDBC สำหรับพวกเขา พิจารณาแผนภาพด้านล่าง แอปพลิเคชันใช้อินสแตนซ์ของคลาสจาก
java.sql จากนั้นเราจะส่งคำสั่งที่จำเป็นเพื่อดึงข้อมูล/แก้ไขข้อมูล ถัดไป
java.sql โต้ตอบกับ DBMS ผ่าน
ไดรเวอร์ jdbcและส่งคืนผลลัพธ์ที่เสร็จสมบูรณ์มาให้เรา
หากต้องการสลับไปใช้ DBMS จากผู้ผลิตรายอื่น การเปลี่ยน JDBC และดำเนินการตั้งค่าพื้นฐานก็เพียงพอแล้ว ส่วนที่เหลือของโปรแกรมไม่เปลี่ยนแปลง
โปรแกรมแรก
เรามาดูส่วนที่ใช้งานได้จริงกันดีกว่า มาสร้างโปรเจ็กต์ Java โดยใช้
JetBrains IntelliJ IDEA IDE กันดี กว่า โปรดทราบว่า Ultimate Edition มีเครื่องมือที่ยอดเยี่ยมสำหรับการทำงานกับ SQL และฐานข้อมูล - Data
Grip อย่างไรก็ตาม ผู้ใช้ส่วนใหญ่จะได้รับค่าตอบแทน
ดังนั้นเพื่อวัตถุประสงค์ทางการศึกษา เราสามารถใช้ได้เฉพาะ IntelliJ IDEA Community Editionที่เผยแพร่ต่อสาธารณะเท่านั้น ดังนั้น:
- เปิดตัว IDE และสร้างโครงการใหม่:
- เลือกโปรเจ็กต์ Java ระบุ เวอร์ชัน SDK (ในตัวอย่าง JDK8 แต่ไม่สำคัญ):
- ในขั้นตอนถัดไป ให้เลือก แอปพลิเคชันคอนโซลเป็นประเภท:
- เราระบุชื่อ โครงการ แพ็คเกจและตำแหน่ง ของมัน บนดิสก์ (ฉันสร้างไดเร็กทอรีแยกต่างหากสำหรับสิ่งนี้โดยเฉพาะ) :
- วาง IDE ไว้สักครู่แล้วดาวน์โหลดไฟล์ JDBCที่จำเป็นสำหรับการทำงานกับH2 DBMS จาก www.h2database.com (ดาวน์โหลดไฟล์ ZIP อิสระของแพลตฟอร์ม):
- เราเข้าไปในไฟล์ที่ดาวน์โหลดมา (เราสนใจไฟล์ jarตามเส้นทางh2\binซึ่งเราต้องการในภายหลัง คัดลอกมัน):
- เรากลับไปที่ IDE และสร้างไดเร็กทอรีในรูทของโปรเจ็กต์: dbโดยที่ไฟล์ที่มีข้อมูล DBMS จะตั้งอยู่ lib – นี่คือไลบรารี JDBC JAR:
- ย้ายไฟล์ jar จากขั้นตอนที่6 ไปยังไดเร็กทอรี libและเพิ่มลงในโปรเจ็กต์เป็นไลบรารี:
- มาเปลี่ยนชื่อไฟล์ java เป็นsrc/sql/demoเป็นStockExchange.java (ในกรณีที่คุณลืม เราจะจำลอง “การแลกเปลี่ยน”) เปลี่ยนเนื้อหาและเรียกใช้:
ตอนนี้เราสามารถเชื่อมต่อและยกเลิกการเชื่อมต่อจาก DBMS ได้ แต่ละขั้นตอนจะสะท้อนให้เห็นในคอนโซล เมื่อคุณเชื่อมต่อกับ DBMS เป็นครั้งแรก ไฟล์ฐานข้อมูลstockExchange.mv.db
จะ ถูกสร้างขึ้น
การแยกวิเคราะห์โค้ด
รหัสจริง:
package sql.demo;
import java.sql.*;
public class StockExchangeDB {
public static final String DB_URL = "jdbc:h2:/c:/JavaPrj/SQLDemo/db/stockExchange";
public static final String DB_Driver = "org.h2.Driver";
public static void main(String[] args) {
try {
Class.forName(DB_Driver);
Connection connection = DriverManager.getConnection(DB_URL);
System.out.println("Соединение с СУБД выполнено.");
connection.close();
System.out.println("Отключение от СУБД выполнено.");
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("JDBC драйвер для СУБД не найден!");
} catch (SQLException e) {
e.printStackTrace();
System.out.println("Ошибка SQL !");
}
}
}
บล็อกคงที่:
- DB_Driver : ที่นี่เรากำหนดชื่อของไดรเวอร์ ซึ่งสามารถพบได้โดยการคลิกที่ไลบรารีที่เชื่อมต่อและขยายโครงสร้างในไดเร็กทอรี lib ของโปรเจ็กต์ปัจจุบัน
- DB_URL : ที่อยู่ฐานข้อมูลของเรา ประกอบด้วยข้อมูลที่คั่นด้วยเครื่องหมายทวิภาค:
- โปรโตคอล=jdbc
- ผู้จัดจำหน่าย (ผู้ผลิต/ชื่อ) DBMS=h2
- ตำแหน่งของ DBMS ในกรณีของเราคือเส้นทางไปยังไฟล์ (c:/JavaPrj/SQLDemo/db/stockExchange) สำหรับ DBMS เครือข่าย ชื่อหรือที่อยู่ IP ของเซิร์ฟเวอร์ระยะไกล หมายเลขพอร์ต TCP/UDP และอื่นๆ จะถูกระบุเพิ่มเติมที่นี่
การประมวลผลผิดพลาด:
วิธีการเรียกในโค้ดของเราอาจส่งคืนข้อผิดพลาดที่คุณควรใส่ใจ ในขั้นตอนนี้ เราเพียงแค่รายงานพวกเขาในคอนโซล โปรดทราบว่าข้อ ผิด พลาดเมื่อทำงานกับ DBMS มักเป็น
SQLException
ตรรกะของการดำเนินการ:
- Class.forName (DB_Driver) – เราตรวจสอบให้แน่ใจว่ามีไดรเวอร์ JDBC ที่เกี่ยวข้องพร้อมใช้งาน (ซึ่งเราดาวน์โหลดและติดตั้งไว้ก่อนหน้านี้)
- DriverManager.getConnection (DB_URL) – สร้างการเชื่อมต่อ DBMS JDBC จะกำหนดประเภทและตำแหน่งของ DBMS ของเราและส่งคืนการเชื่อมต่อซึ่งเราสามารถใช้เพื่อสื่อสารกับฐานข้อมูลโดยใช้ที่อยู่ที่ส่งผ่าน
- Connection.close() – ปิดการเชื่อมต่อกับ DBMS และทำงานกับโปรแกรมให้เสร็จสิ้น
ในส่วนถัดไปของชุด เราจะทำความคุ้นเคยกับตัวดำเนินการ DDL และชนิดข้อมูล SQL และยังสร้างโครงสร้างเริ่มต้นของฐานข้อมูลของเราและเติมด้วยตาราง
ส่วนที่สอง ส่วนที่สาม
GO TO FULL VERSION