Rumah  >  Artikel  >  pangkalan data  >  prosedur tersimpan mysql java

prosedur tersimpan mysql java

PHPz
PHPzasal
2023-05-18 15:12:38598semak imbas

MySQL ialah sistem pengurusan pangkalan data hubungan yang biasa digunakan, dan Java ialah bahasa pengaturcaraan yang digunakan secara meluas. Dalam aplikasi pangkalan data, prosedur tersimpan ialah cara teknikal biasa yang boleh merealisasikan gabungan berbilang pernyataan SQL dan menyediakan kaedah pelaksanaan yang lebih cekap dan keselamatan yang lebih baik. Artikel ini akan memperkenalkan cara menggunakan Java untuk melaksanakan prosedur tersimpan dalam MySQL.

1. Gambaran keseluruhan prosedur tersimpan MySQL

Prosedur tersimpan ialah program yang boleh melaksanakan penyataan SQL dan biasanya boleh melaksanakan prosedur tersimpan menerima parameter , nilai pulangan, dan boleh dilaksanakan beberapa kali. Ia adalah proses yang merangkum pernyataan SQL Pengguna boleh memanggilnya untuk melaksanakan satu siri pernyataan SQL tanpa menulis pernyataan SQL berulang kali. Prosedur tersimpan mempunyai kelebihan berikut:

(1) Mengurangkan trafik rangkaian: Menghantar pernyataan SQL daripada klien pangkalan data ke pelayan pangkalan data memerlukan interaksi rangkaian dilaksanakan pada pelayan, yang boleh mengurangkan trafik rangkaian dan menambah baik kecekapan sistem.

(2) Meningkatkan kecekapan pelaksanaan: Apabila melaksanakan prosedur tersimpan, pelayan pangkalan data akan mengoptimumkan pelan pelaksanaan prosedur tersimpan, dengan itu meningkatkan kecekapan pelaksanaan.

(3) Tingkatkan keselamatan: Prosedur tersimpan boleh menghalang serangan suntikan SQL.

2. Java melaksanakan prosedur tersimpan MySQL

Java boleh menyambung ke pangkalan data MySQL melalui JDBC, jadi anda boleh menggunakan program Java untuk melaksanakan prosedur tersimpan MySQL. Berikut adalah langkah-langkah untuk melaksanakan prosedur tersimpan MySQL melalui Java:

(1) Pertama, prosedur tersimpan perlu ditulis. Sintaks prosedur tersimpan MySQL sangat serupa dengan pernyataan SQL Untuk butiran, sila rujuk dokumentasi rasmi MySQL. Berikut ialah contoh mudah:

DELIMITER $$
BUAT PROSEDUR proc_name (DALAM p_id INT, KELUAR p_name VARCHAR(50))
MULAI
​​PILIH nama DARI table_name WHERE id = p_id INTO p_name;
END $$
DELIMITER ;

Di mana, p_id ialah parameter input dan p_name ialah parameter output. Prosedur tersimpan menerima nilai id sebagai parameter input, menanyakan nama yang sepadan dalam jadual table_name dan menyimpan hasilnya dalam parameter p_name.

(2) Cipta program Java dan gunakan JDBC untuk menyambung ke pangkalan data MySQL dan laksanakan prosedur tersimpan. Berikut ialah contoh kod Java:

import java.sql.Connection;
import java.sql.CallableStatement;
import java.sql.DriverManager;
import java.sql.SQLException ;
import java.sql.Types;

kelas awam CallStoredProcedure {
public static void main(String[] args) {

  Connection conn = null;
  CallableStatement stmt = null;
  String url = "jdbc:mysql://localhost:3306/test";
  String user = "root";
  String password = "123456";

  try {
     Class.forName("com.mysql.jdbc.Driver");
     conn = DriverManager.getConnection(url, user, password);
     stmt = conn.prepareCall("{call proc_name(?, ?)}");
     stmt.setInt(1, 1);
     stmt.registerOutParameter(2, Types.VARCHAR);
     stmt.execute();
     String name = stmt.getString(2);
     System.out.println("Name: " + name);

  } catch (SQLException e) {
     e.printStackTrace();
  } catch (ClassNotFoundException e) {
     e.printStackTrace();
  } finally {
     try {
        if (stmt != null) stmt.close();
        if (conn != null) conn.close();
     } catch (SQLException e) {
        e.printStackTrace();
     }
  }

}
}

Atur cara menggunakan JDBC untuk menyambung ke pangkalan data MySQL, memanggil proc_name prosedur tersimpan. Antaranya, parameter pertama 1 dihantar ke dalam prosedur tersimpan sebagai parameter input, dan parameter kedua 2 adalah parameter output yang digunakan untuk menyimpan hasil pertanyaan. Program ini mula-mula menggunakan kaedah registerOutParameter untuk mendaftarkan parameter output, kemudian melaksanakan prosedur tersimpan, dan mendapatkan keputusan pertanyaan melalui kaedah getString().

3. Pengoptimuman prosedur tersimpan

Selain penggunaan asas prosedur tersimpan yang diperkenalkan di atas, untuk menggunakan prosedur tersimpan dengan lebih baik, kami boleh melakukan beberapa pengoptimuman:

(1) Prosedur tersimpan luaran: Asingkan skrip prosedur tersimpan dan simpannya pada cakera untuk mengelakkan kehilangan definisi prosedur tersimpan semasa naik taraf/penghijrahan/sandaran pangkalan data. Pada masa yang sama, pernyataan SQL dan prosedur tersimpan diasingkan untuk meningkatkan kebolehbacaan kod.

(2) Gunakan gula sintaksis prosedur tersimpan: MySQL menyediakan gula sintaksis untuk prosedur tersimpan, iaitu Pembolehubah Ditakrifkan Pengguna (UDV, pembolehubah takrif pengguna). Dalam prosedur tersimpan, anda boleh menggunakan pernyataan SET untuk mencipta dan menggunakan UDV, memudahkan penulisan prosedur tersimpan. Contohnya:

CIPTA PROSEDUR test()
MULA

DECLARE str1 VARCHAR(50);
DECLARE str2 VARCHAR(50);
SET str1 = 'Hello, ';
SET str2 = 'World!';
SELECT CONCAT(str1, str2);

TAMAT;

(3) Gunakan pertanyaan berparameter: Seperti pernyataan SQL biasa, prosedur tersimpan juga boleh Gunakan pertanyaan berparameter untuk menghalang serangan suntikan SQL, meningkatkan keselamatan dan mengurangkan bilangan kompilasi pelan pelaksanaan SQL. Contohnya:

CIPTA PROSEDUR ujian(IN p1 INT)
MULA

SELECT * FROM t WHERE id = p1;

TAMAT;

4 prosedur dan kelebihannya, dan memperkenalkan kaedah memanggil prosedur tersimpan MySQL melalui program Java. Pada masa yang sama, artikel ini juga memperkenalkan secara ringkas kaedah pengoptimuman prosedur tersimpan, dengan harapan dapat membantu pembaca apabila menggunakan prosedur tersimpan.

Atas ialah kandungan terperinci prosedur tersimpan mysql java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:mac . mysql terlupa kata laluanArtikel seterusnya:mac . mysql terlupa kata laluan