Pendahuluan: Apa itu JDBC
Java Database Connectivity (JDBC) adalah antarmuka program aplikasi yang digunakan dalam bahasa Java untuk mengatur bagaimana program klien mengakses database, menyediakan metode seperti menanyakan dan memperbarui data dalam database. JDBC juga merupakan merek dagang dari Sun Microsystems. Ini adalah JDBC untuk database relasional.
Sederhananya, ini adalah API Java yang digunakan untuk menjalankan pernyataan SQL. Melalui JDBC, kami dapat secara langsung menggunakan pemrograman Java untuk beroperasi pada database relasional. Melalui enkapsulasi, pengembang dapat menggunakan Java API murni untuk menyelesaikan eksekusi SQL.
1. Pekerjaan Persiapan (I): Konfigurasi Instalasi MySQL dan Pembelajaran Dasar
Sebelum menggunakan JDBC untuk mengoperasikan database, pertama -tama Anda perlu memiliki database. Berikut adalah 3 tautan untuk dipelajari oleh pembaca sendiri. Jika Anda memiliki pengalaman menggunakan bahasa SQL (termasuk pembelajaran kelas di sekolah), dua tautan pertama lebih dari cukup.
MySQL Unduh, Instalasi, Penyebaran, dan Tutorial Operasi Rinci Grafis: //www.vevb.com/article/87690.htm
Dianjurkan untuk membaca tutorial dan praktik pengantar sambil mempraktikkan operasi dasar seperti menyisipkan, memperbarui, memilih, menghapus, dll., Sambil membangun tabel yang ingin Anda gunakan nanti.
Gambar berikut adalah tabel database yang akan saya gunakan untuk demonstrasi berikutnya.
2. Pekerjaan Persiapan (2): Unduh paket JAR yang sesuai dari database dan impor
Menggunakan JDBC mengharuskan mengimpor paket JAR yang sesuai dalam proyek. Korespondensi antara database dan paket JDBC dapat merujuk ke paket JAR, nama kelas driver dan format URL yang sesuai dengan berbagai database. Metode Impor Di Bawah Eclipse:
Klik kanan pada ikon proyek, pilih "Properties", pilih "Tambahkan stoples eksternal ..." di "Java Bulid Path", dan pilih Paket JAR yang Anda peroleh setelah mengunduh dan mendekompresi.
Jika Anda beroperasi di MySQL, impor berikut tidak akan melaporkan kesalahan:
impor com.mysql.jdbc.connection; impor com.mysql.jdbc.preparedstatement;
Selain itu, Anda juga memerlukan paket JDBC, cukup impor secara langsung.
impor java.sql.driverManager; impor java.sql.resultset; impor java.sql.sqlexception;
3. Operasi Dasar JDBC
Untuk kesederhanaan, operasi, perintah, dan parameter yang terkait dengan basis data hardcoded. Pembaca yang tertarik dapat mengeksplorasi ini untuk mengurangi kopling antara data dan operasi.
Pertama -tama mari kita lihat kode dan praktik tertentu. Bagian kelima dari artikel ini telah melakukan penelitian singkat tentang API yang digunakan.
Semua metode dan anggota data di bawah ini berada di dalam operasi kelas publik JDBC.
(1) Tentukan kelas rekaman (opsional)
Ini terutama dilakukan untuk memfasilitasi definisi operasi dan antarmuka, dan tidak perlu.
siswa kelas statis {private string id; nama string pribadi; seks string pribadi; usia string pribadi; Siswa (nama string, string sex, string usia) {this.id = null; // default this.name = name; this.sex = seks; this.age = usia; } public String getId () {return id; } public void setId (string id) {this.id = id; } public string getName () {return name; } public void setName (name string) {this.name = name; } public string getsex () {return sex; } public void setSex (string sex) {this.sex = sex; } getage string publik () {return usia; } public void setage (String Age) {this.age = usia; }}(2) pengambilan koneksi
Koneksi ke database harus diperoleh sebelum operasi.
koneksi statis pribadi getConn () {string driver = "com.mysql.jdbc.driver"; String url = "jdbc: mysql: // localhost: 3306/samp_db"; String username = "root"; String password = ""; Koneksi conn = null; coba {class.forname (driver); // classloader, muat driver conn = (koneksi) driverManager.getConnection (URL, nama pengguna, kata sandi); } catch (ClassNotFoundException e) {E.PrintStackTrace (); } catch (sqlexception e) {e.printstacktrace (); } return conn;}(3) Masukkan
Insert int private static (siswa siswa) {Connection conn = getConn (); int i = 0; String sql = "masukkan ke siswa (nama, jenis kelamin, usia) nilai (?,?,?)"; PSTMT Persiapan Persiapan; coba {pstmt = (disiapkan) conn.preparestatement (sql); pstmt.setstring (1, student.getname ()); pstmt.setstring (2, student.getsex ()); pstmt.setstring (3, student.getage ()); i = PSTMT.ExecuteUpdate (); pstmt.close (); conn.close (); } catch (sqlexception e) {e.printstacktrace (); } return i;}(4) Pembaruan
pembaruan int statis pribadi (siswa siswa) {koneksi conn = getConn (); int i = 0; String sql = "Perbarui siswa set usia = '" + student.getage () + "' where name = '" + student.getname () + "'"; PSTMT Persiapan Persiapan; coba {pstmt = (disiapkan) conn.preparestatement (sql); i = PSTMT.ExecuteUpdate (); System.out.println ("resutl:" + i); pstmt.close (); conn.close (); } catch (sqlexception e) {e.printstacktrace (); } return i;}(5) Pilih
Ambil Pilih * dari XXX sebagai contoh.
private static integer getAll () {connection conn = getConn (); String sql = "pilih * dari siswa"; PSTMT Persiapan Persiapan; coba {pstmt = (disiapkan) conn.preparestatement (sql); Hasil rs = pstmt.executeQuery (); int col = rs.getMetadata (). getColumnCount (); System.out.println ("============================="); while (rs.next ()) {for (int i = 1; i <= col; i ++) {System.out.print (rs.getString (i)+"/t"); if ((i == 2) && (rs.getString (i) .length () <8)) {System.out.print ("/t"); }} System.out.println (""); } System.out.println ("============================="); } catch (sqlexception e) {e.printstacktrace (); } return null;}(6) Hapus
private static int delete (string name) {connection conn = getConn (); int i = 0; String sql = "hapus dari siswa di mana name = '" + name + "'"; PSTMT Persiapan Persiapan; coba {pstmt = (disiapkan) conn.preparestatement (sql); i = PSTMT.ExecuteUpdate (); System.out.println ("resutl:" + i); pstmt.close (); conn.close (); } catch (sqlexception e) {e.printstacktrace (); } return i;}4. Tes
Sebelum pengujian, layanan database yang sesuai perlu dibuka dalam sistem. Perintah startup mysql di windows adalah net start mysql
Kode uji
public static void main (string args []) {jdbcoperation.getAll (); JDBCOPERATION.Isert (siswa baru ("Achilles", "Male", "14")); Jdbcoperation.getall (); JDBCOperation.update (siswa baru ("bean", "", "7")); Jdbcoperation.delete ("Achilles"); JDBCOperation.Getall ();}Output dalam gerhana
============================ 1 ender jantan 8 2 kacang laki -laki 6 3 Petra Fema 9 4 Peter Pria 9 5 _Graff Pria 40 6 God Fema 255 =====================================================. ============================= Resutl: 1ResUtl: 1 ============================== Laki -laki ender 8 2 Pria 7 3 Petra Fema 9 4 Peter Male 9 5 _Graff 60 6. =============================
V. Analisis Kode
Dalam proses penambahan, menghapus, memodifikasi, dan mencari database di atas, dapat ditemukan secara umum, yaitu proses umum:
(1) Buat Objek Koneksi dan String Perintah SQL Query;
(2) Lewati perintah SQL Query ke objek koneksi dan dapatkan objek yang disiapkan;
(3) mengeksekusi executeUpdate () atau executeQurey () pada objek yang disiapkan untuk mendapatkan hasilnya;
(4) Tutup objek yang disiapkan dan objek koneksi satu demi satu.
Dapat dilihat bahwa ketika menggunakan JDBC, jenis kontak yang paling umum adalah koneksi dan persiapan disiapkan, dan kelas Hasil di SELECT.
Koneksi
java.sql
Koneksi
Semua antarmuka super: pembungkus
--------------------------------------------------------------------------------
pembungkus antarmuka publik ConnectionExtends
Koneksi (sesi) ke database tertentu. Jalankan pernyataan SQL dalam konteks koneksi dan kembalikan hasilnya.
Basis data objek koneksi dapat memberikan informasi yang menggambarkan tabelnya, sintaks SQL yang didukung, prosedur tersimpan, fungsi koneksi ini, dan sebagainya. Informasi ini diperoleh dengan menggunakan metode getMetadata.
Disiapkan
java.sql
Antarmuka Persiapan
Semua antarmuka super: pernyataan, pembungkus semua sub-antarmuka yang diketahui: callablestatement
--------------------------------------------------------------------------------
Pernyataan Public Interface PreparedStatementExtends
Objek yang mewakili pernyataan SQL yang dikompilasi.
Pernyataan SQL dikompilasi dan disimpan dalam objek yang disiapkan. Pernyataan ini kemudian dapat dieksekusi secara efisien beberapa kali menggunakan objek ini.
Metode umum
boolean execute ()
Mengeksekusi pernyataan SQL dalam objek yang disiapkan ini, yang dapat berupa pernyataan SQL apa pun.
Hasil executequery ()
Menjalankan kueri SQL dalam objek yang disiapkan ini dan mengembalikan objek hasil yang dihasilkan oleh kueri.
int executeupdate ()
Jalankan pernyataan SQL dalam objek yang disiapkan ini, yang harus berupa pernyataan Bahasa Manipulasi Data SQL (DML), seperti Sisipkan, Perbarui, atau Pernyataan Hapus, atau pernyataan SQL tanpa konten pengembalian, seperti pernyataan DDL.
Hasilset
java.sql
Hasil Antarmuka
Semua antarmuka super: pembungkus semua sub-interaksi yang diketahui: CachedRowset, filteredrowset, jdbcrowset, joinrowset, rowset, syncresolver, webrowset
--------------------------------------------------------------------------------
Hasil Public InterfaceTextExtends Wrapper
Tabel data yang mewakili set hasil basis data biasanya dihasilkan dengan melaksanakan pernyataan yang menanyakan database.
6. Pikirkan masalah
1. Setiap operasi SQL membutuhkan pembentukan dan menutup koneksi, yang pasti akan mengkonsumsi banyak overhead sumber daya. Bagaimana cara menghindarinya?
Analisis: Pooling koneksi dapat digunakan untuk melakukan pemeliharaan koneksi yang terpadu tanpa harus membangun dan menutupnya setiap saat. Bahkan, inilah yang digunakan banyak alat untuk merangkum JDBC.
2. Dalam kode Java, apa yang harus saya lakukan jika format data yang masuk berbeda dari definisi database? Misalnya, tetapkan objek string Java ke atribut TinyInt dari database.
Analisis: Saat menjalankan pernyataan SQL, database akan berusaha untuk mengonversi. Menurut percobaan saya, jika Anda melewati atribut usia Tinyint dengan huruf murni menggunakan objek string, itu akan dikonversi ke 0. Aturan konversi spesifik harus terkait dengan database.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.