Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ขั้นตอนการจัดเก็บคืออะไร? จะเรียกโพรซีเดอร์ที่เก็บไว้โดยใช้โปรแกรม JDBC ได้อย่างไร?


กระบวนงานที่เก็บไว้เป็นรูทีนย่อย ส่วนของคำสั่ง SQL ซึ่งจัดเก็บไว้ในแค็ตตาล็อก SQL แอปพลิเคชันทั้งหมดที่สามารถเข้าถึงฐานข้อมูลเชิงสัมพันธ์ (Java, Python, PHP เป็นต้น) สามารถเข้าถึงขั้นตอนเหล่านี้ได้

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

ตัวอย่าง

สมมติว่าเรามีตารางชื่อ Dispatches ในฐานข้อมูล MySQL ด้วยข้อมูลต่อไปนี้:

<ก่อนหน้า>+--------------+--------------------------+----------- ---------------------------------------+| Product_Name | Date_Of_Dispatch | Time_Of_Dispatch | ที่ตั้ง |+-------------+-----------+------------- -----+-----------------+| คีย์บอร์ด | 1970-01-19 | 08:51:36 | ไฮเดอราบัด || หูฟัง | 1970-01-19 | 05:54:28 | วิศาขาปัตตนัม || เมาส์ | 1970-01-19 | 04:26:38 | วิชัยวาทะ |+--------------+-----------------+------------- -------------------------------------+

และหากเราสร้างโพรซีเดอร์ชื่อ myProcedure เพื่อดึงค่าจากตารางนี้ดังที่แสดงด้านล่าง:

สร้างโพรซีเดอร์ myProcedure ()-> BEGIN-> SELECT * จาก Dispatches;-> END //

ตัวอย่าง

ต่อไปนี้เป็นตัวอย่าง JDBC ที่เรียกใช้ขั้นตอนการจัดเก็บที่กล่าวถึงข้างต้นโดยใช้โปรแกรม JDBC

<ก่อนหน้า> นำเข้า java.sql.CallableStatement นำเข้า java.sql.Connection นำเข้า java.sql.DriverManager นำเข้า java.sql.ResultSet นำเข้า java.sql.SQLException คลาสสาธารณะ CallingProcedure { โมฆะคงสาธารณะหลัก (สตริง args ]) พ่น SQLException { //การลงทะเบียนไดรเวอร์ DriverManager.registerDriver (ใหม่ com.mysql.jdbc.Driver ()); //รับการเชื่อมต่อสตริง mysqlUrl ="jdbc:mysql://localhost/sampleDB"; การเชื่อมต่อ con =DriverManager.getConnection (mysqlUrl, "root", "password"); System.out.println("การเชื่อมต่อสำเร็จ......"); //เตรียม CallableStateement CallableStatement cstmt =con.prepareCall("{call myProcedure()}"); //ดึงผลลัพธ์ ResultSet rs =cstmt.executeQuery(); ในขณะที่ (rs.next ()) { System.out.println ("ชื่อผลิตภัณฑ์:"+ rs.getString ("Product_Name")); System.out.println("วันที่จัดส่ง:"+rs.getDate("Date_Of_Dispatch")); System.out.println("วันที่จัดส่ง:"+rs.getTime("Time_Of_Dispatch")); System.out.println("ตำแหน่ง:"+rs.getString("ตำแหน่ง")); System.out.println(); } }}

ผลลัพธ์

เชื่อมต่อแล้ว......ชื่อผลิตภัณฑ์:KeyBoardDate of Dispatch:1970-01-19Time of Dispatch:08:51:36 Location:HyderabadProduct Name:HeadphonesDate of Dispatch:1970-01-19Time of Dispatch:05:54 :28ที่ตั้ง:VishakhapatnamProduct Name:MouseDate of Dispatch:1970-01-19Time of Dispatch:04:26:38Location:Vijayawada