Java dan MySQL ialah dua teknologi yang digunakan secara meluas apabila menggunakannya, kita selalunya perlu menggunakan prosedur tersimpan untuk memproses data. Prosedur tersimpan ialah blok kod boleh guna semula yang ditakrifkan dalam pangkalan data yang boleh dipanggil apabila diperlukan untuk melaksanakan tugas tertentu. Artikel ini akan memperkenalkan prosedur tersimpan dalam Java dan MySQL, termasuk cara mencipta dan memanggilnya.
1. Apakah prosedur disimpan MySQL?
Dalam MySQL, prosedur tersimpan ialah satu set pernyataan SQL yang telah ditetapkan yang digabungkan dalam susunan logik tertentu untuk membentuk proses yang boleh digunakan semula dan boleh dilaksanakan. Prosedur tersimpan sering digunakan untuk memproses logik perniagaan yang kompleks atau melaksanakan operasi kelompok pada data. Berbeza daripada penyata SQL biasa, prosedur tersimpan boleh menerima parameter dan mengembalikan data, yang menjadikan prosedur tersimpan lebih fleksibel dan cekap apabila memproses logik perniagaan yang kompleks.
2. Cara mencipta prosedur tersimpan MySQL
Dalam MySQL, kita boleh menggunakan kenyataan CREATE PROCEDURE untuk mencipta prosedur tersimpan. Sintaks asas pernyataan CREATE PROCEDURE adalah seperti berikut:
CREATE PROCEDURE procedure_name ([IN | OUT | INOUT] parameter_name data_type[, ...]) BEGIN -- 存储过程的SQL语句块 END
Antaranya, procedure_name ialah nama prosedur yang disimpan, parameter_name ialah nama parameter prosedur yang disimpan, dan data_type ialah jenis data parameter. . Blok pernyataan SQL dalam prosedur tersimpan diletakkan di antara BEGIN dan END.
Berikut ialah contoh mudah cara membuat prosedur tersimpan yang mengira lilitan dan luas bulatan:
CREATE PROCEDURE calc_circle(IN r INT, OUT circumference FLOAT, OUT area FLOAT) BEGIN SET circumference = 2 * PI() * r; SET area = PI() * r * r; END
Prosedur tersimpan ini menerima parameter integer bernama r dan mengembalikan bulatan perimeter dan luas. Dalam prosedur tersimpan, kami menggunakan fungsi PI() terbina dalam MySQL untuk mengira pi. Lilitan dan luas ialah parameter keluaran bagi perimeter dan luas Kami menggunakan pernyataan SET untuk menetapkan nilainya kepada hasil pengiraan yang sepadan.
3. Cara memanggil MySQL stored procedure
Setelah kami mencipta stored procedure dalam MySQL, kami boleh memanggilnya dalam Java. Kita boleh menggunakan teknologi JDBC (Java Database Connectivity) untuk menyambung ke pangkalan data MySQL dan menggunakan penyata yang telah dikompilasi untuk memanggil prosedur tersimpan. Berikut ialah contoh kod Java asas yang menunjukkan cara memanggil prosedur tersimpan calc_circle yang baru dibuat:
import java.sql.*; public class CallSPDemo { public static void main(String[] args) { Connection conn = null; CallableStatement cs = null; try { // 连接MySQL数据库 String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "123456"; conn = DriverManager.getConnection(url, user, password); // 创建CallableStatement对象 String sp = "{CALL calc_circle(?, ?, ?)}"; cs = conn.prepareCall(sp); // 设置输入参数 cs.setInt(1, 5); // 设置输出参数类型 cs.registerOutParameter(2, Types.FLOAT); cs.registerOutParameter(3, Types.FLOAT); // 执行存储过程 cs.execute(); // 获取输出参数值 float circum = cs.getFloat(2); float area = cs.getFloat(3); // 输出结果 System.out.println("Circumference: " + circum); System.out.println("Area: " + area); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (cs != null) cs.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
Dalam kod, kami menggunakan kelas Connection dan CallableStatement dalam pakej java.sql untuk menyambung ke pangkalan data MySQL dan panggil proses penyimpanan. Dalam kaedah main(), kita mula-mula mentakrifkan objek Sambungan dan objek CallableStatement. Kemudian, kami menyambung ke pangkalan data MySQL dan mencipta objek CallableStatement melalui kaedah prepareCall(). Apabila mencipta objek CallableStatement, kami menggunakan sintaks yang sama seperti semasa mencipta prosedur tersimpan untuk menentukan nama dan parameter prosedur tersimpan.
Seterusnya, kami menetapkan nilai parameter input r prosedur tersimpan kepada 5 melalui kaedah setInt(). Kemudian, kami menggunakan kaedah registerOutParameter() untuk mentakrifkan jenis parameter output set hasil, di sini ia adalah jenis FLOAT. Akhir sekali, kami melaksanakan prosedur tersimpan menggunakan kaedah execute() dan mendapatkan nilai parameter output menggunakan kaedah getFloat(). Ambil perhatian bahawa kita perlu melaksanakan prosedur tersimpan sebelum mendapatkan nilai parameter output.
Akhir sekali, kami mengeluarkan lilitan dan luas bulatan yang dikira.
4. Kelebihan prosedur tersimpan
Kelebihan menggunakan prosedur tersimpan MySQL ialah ia boleh memisahkan logik perniagaan daripada operasi pangkalan data dan mencapai penggunaan semula kod. Selain itu, prosedur tersimpan juga boleh meningkatkan prestasi dan keselamatan pangkalan data.
Pertama sekali, prosedur tersimpan boleh meningkatkan prestasi pangkalan data kerana apabila prosedur tersimpan dilaksanakan, prosedur tersimpan tersebut dikompilasi dan dicache dalam pelayan, sekali gus mempercepatkan pelaksanaan. Di samping itu, apabila menggunakan prosedur tersimpan, kami boleh menggabungkan berbilang operasi pangkalan data bersama-sama, dengan itu mengurangkan bilangan sambungan pangkalan data dan pemotongan sambungan dan meningkatkan prestasi pangkalan data dengan banyak.
Kedua, melalui prosedur tersimpan, kita boleh mengawal capaian data dalam pangkalan data, sekali gus meningkatkan keselamatan pangkalan data. Sebagai contoh, kami boleh menyekat akses kepada jadual data sensitif tertentu dan hanya membenarkan pengguna yang dibenarkan untuk melaksanakan prosedur tersimpan untuk mengaksesnya.
Ringkasnya, prosedur tersimpan MySQL ialah teknologi yang sangat berguna yang membolehkan kami memproses dan mengurus data dengan lebih baik. Dengan mempelajari dan menguasai penggunaan prosedur tersimpan, kami boleh meningkatkan pembangunan pangkalan data dan keupayaan penyelenggaraan kami untuk memenuhi keperluan perniagaan kami dengan lebih baik.
Atas ialah kandungan terperinci prosedur tersimpan java mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!