Artikel ini menjelaskan implementasi transaksi, transfer bank, dan barang -barang di dalam dan di luar gudang berdasarkan JDBC. Bagikan untuk referensi Anda, sebagai berikut:
1. Transfer bisnis
Ketika transfer harus menjalankan 2 pernyataan SQL (pembaruan pembaruan) dan keduanya berhasil, transaksi diserahkan. Jika seseorang gagal, keduanya akan mengembalikan transaksi.
2. Transaksi harus memiliki 4 atribut : atomisitas, konsistensi, isolasi, dan kegigihan. Keempat atribut ini biasanya disebut atribut asam.
① Atomisitas. Transaksi adalah unit pekerjaan yang tidak terpisahkan, dan semua operasi yang termasuk dalam transaksi dilakukan atau tidak.
② Konsistensi. Transaksi harus mengubah database dari satu keadaan konsisten ke negara lain. Konsistensi terkait erat dengan atomisitas.
③ isolasi. Eksekusi transaksi tidak dapat diganggu oleh transaksi lain. Artinya, operasi dalam transaksi dan data yang digunakan diisolasi dari transaksi bersamaan lainnya, dan transaksi yang dieksekusi secara bersamaan tidak dapat saling mengganggu.
④ Daya tahan. Permanen juga disebut permanen, yang berarti bahwa begitu transaksi dilakukan, perubahannya pada data dalam database harus permanen. Operasi atau kegagalan lainnya tidak boleh berdampak pada mereka.
3. Berikut adalah deskripsi demo menggunakan operasi transfer sebagai kasus, dan titik -titik perhatiannya adalah sebagai berikut:
(1) Operasi Pernyataan SQL tidak memerlukan Pengajuan Transaksi Manual
(2) Operasi kueri tidak memerlukan pengajuan transaksi manual.
(3) Namun, perbarui, masukkan, dan hapus memerlukan pengiriman transaksi manual
(4) Jika keseimbangannya negatif, Anda dapat meminta hasilnya terlebih dahulu dan kemudian membuat penilaian, dan kemudian beroperasi
(5) con.setAutoCommit(false); secara manual memulai transaksi; con.commit(); secara manual melakukan transaksi; con.rollback(); Operasi rollback transaksi
4. Pertama buat tabel data atau dua tabel data. Di sini, buat dua tabel data untuk kejelasan demonstrasi.
5. Buat Tabel Database dan Data, dan kemudian tulis kelas alat berdasarkan CLASSAO.JAVA
Paket com.bie.utils; impor java.sql.connection; impor java.sql.driverManager; impor java.sql.preparedstatement; impor java.sql.Resultset; Impor Java.sql. untuk menghubungkan ke database*/kelas publik berbasisao {private static string driver = "com.mysql.jdbc.driver"; private static string url = "jdbc: mysql: /// test"; private static string user = "root"; kata sandi string statis pribadi = "123456"; /*** * Metode untuk terhubung ke database * @return * @throws ClassNotFoundException * @throws SQlexception */Public Static Connection GetCon () melempar ClassNotFoundException, SQLException {Class.Forname (driver); // Muat database driver System.out.println ("uji loading (driver); Koneksi con = driverManager.getConnection (url, pengguna, kata sandi); System.out.println ("Tautan Database Tes berhasil"); return con; }/ *** * Metode untuk menutup database * @param con * @param ps * @param rs */ public static void tutup (koneksi con, disiapkan ps, hasil rs) {if (rs! = Null) {// tutup sumber daya untuk menghindari pengecualian coba {rs.close (); } catch (sqlexception e) {// TODO Auto-Eynerated Catch Block E.PrintStackTrace (); }} if (ps! = null) {coba {ps.close (); } catch (sqlexception e) {// TODO Auto-Eynerated Catch Block E.PrintStackTrace (); }} if (con! = null) {coba {con.close (); } catch (sqlexception e) {// TODO Auto-Eynerated Catch Block E.PrintStackTrace (); }}} / *** * Setuju dengan metode penambahan, menghapus dan memodifikasi * @param sql * @param arr * @return * / public static boolean addupDatedElete (string sql, objek [] arr) {koneksi con = null; Disiapkan ps = null; coba {con = bedandedAo.getCon (); // Langkah 1: Operasi untuk terhubung ke database ps = con.preparestateMent (sql); // Langkah 2: precompile // Langkah 3: atur nilai jika (arr! = null && arr.length! = 0) {for (int i = 0; i <arr.length; i+a arr.length! = }} int count = ps.executeUpdate (); // Langkah 4: Jalankan pernyataan SQL if (count> 0) {return true; } else {return false; }} catch (ClassNotFoundException e) {// TODO AUTO-ENCOMEERATED Catch Block E.PrintStackTrace (); } catch (sqlexception e) {// TODO Auto-Eynerated Catch Block E.PrintStackTrace (); } return false; } /*public static void main (string [] args) {try {bedandedao.getCon (); } catch (ClassNotFoundException e) {// TODO AUTO-ENCOMEERATED Catch Block E.PrintStackTrace (); } catch (sqlexception e) {// TODO Auto-Eynerated Catch Block E.PrintStackTrace (); }}*/}6. Tes ini langsung dilakukan dalam metode utama, jadi saya menulis Userdao untuk pengujian dan hanya melihat efeknya.
package com.bie.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import com.bie.utils.BaseDao;/*** @author BieHongLi* @version Creation time: February 27, 2017 at 3:19:49 pm**/public class UserDao { /*** * CATATAN: * (1) Operasi Pernyataan SQL tidak memerlukan pengajuan transaksi manual * (2) Operasi kueri tidak memerlukan pengiriman transaksi manual, * (3) Namun, perbarui, masukkan, dan hapus memerlukan pengajuan transaksi manual * (4) jika neraca; Persiapan PS1 = NULL; Persiapan PS2 = NULL; Coba {// Langkah 1: Pengoperasian penghubung ke database con = bedandedAo.getCon (); // Transaksi secara otomatis dikirimkan secara default, sehingga defaultnya benar. Sekarang ubah benar menjadi false, dan transaksi otomatis default dilarang //con.setautocommit(true); // Transaksi 1: Jika diatur ke false, transaksi perlu diserahkan secara manual con.setautocommit (false); // Langkah 2: String Pernyataan SQL yang Diperbarui SQL = "Perbarui Bank_a Set Usera_RMB = usera_rmb-500 di mana usera_id = 1"; String sql2 = "perbarui bank_b set userb_rmb = userb_rmb+500 di mana userb_id = 1"; // Langkah 3: Precompile SQL PS1 = Con.Preparestatement (SQL); // Langkah 4: Jalankan pernyataan SQL. Meskipun SQL telah dieksekusi, itu belum bertahan dan diperbarui ke database PS1.ExecuteUpdate (); // Langkah 3: Precompile SQL2 PS2 = Con.PrepareStatement (SQL2); // Langkah 4: Jalankan SQL2. Meskipun SQL2 dieksekusi, itu belum bertahan dan diperbarui ke database PS2.ExecuteUpdate (); System.out.println ("Transfer Sukses ..."); // Transaksi 2: Ikut transaksi secara manual. Jika kedua eksekusi berhasil, maka lakukan transaksi con.Commit (); } catch (ClassNotFoundException e) {E.PrintStackTrace (); Coba {// Transaksi 3: Jika pengecualian dilemparkan, lalu putar kembali transaksi con.rollback (); } catch (sqlexception e1) {e1.printstacktrace (); }} catch (sqlexception e) {e.printstacktrace (); } akhirnya {// tutup sumber daya untuk menghindari pengecualian bedandeAo.close (con, ps1, null); Berbasisnya.close (null, ps2, null); }}}Efek demo adalah sebagai berikut:
Untuk informasi lebih lanjut tentang konten terkait Java, silakan periksa topik -topik situs ini: "Ringkasan Keterampilan Java untuk Mengoperasikan Basis Data Menggunakan JDBC", "Ringkasan Pemrograman Database Java+MySQL" Java Lampin "," Ringkasan Java, "Ringkasan KEKERJAAN JAVA" RINGKASAN "RINGKASAN" RINGKASAN "Ringkasan" Ringkasan "Ringkasan" Ringkasan Java " Keterampilan "
Saya harap artikel ini akan membantu pemrograman Java semua orang.