Face menggunakan mysql-connector-java-5.1 23 bin jar

Pada artikel ini, kita akan mempelajari cara menghubungkan ke database MySQL dari kode Java dan menjalankan kueri sederhana untuk mengambil dan memperbarui data. Untuk mengakses database, kami akan menggunakan API JDBC (Java Database Connectivity), yang merupakan bagian dari pustaka Java standar

JDBC memungkinkan koneksi ke database apa pun. Postgres, MySQL, SQL Server, Oracle, dll. – di hadapan implementasi driver yang sesuai yang diperlukan untuk koneksi. Untuk database MySQL, kami akan menggunakan driver JDBC Tipe 4 dari mysql-connector-java-5. 1. 23-bin. paket toples

Itu ditulis dalam Java murni, yang berarti kita tidak memerlukan perpustakaan asli atau jembatan ODBC. Yang perlu kita lakukan hanyalah meletakkan file JAR di direktori yang terdapat di CLASSPATH. File JAR berisi kelas com. mysql. jdbc. Pengemudi diperlukan untuk terhubung ke MySQL. Jika tidak muncul di CLASSPATH, file java. lang. classNotFoundException akan dilempar saat runtime, jadi pastikan Anda menyetel jalur dengan benar

Omong-omong, jika Anda mencari buku bagus tentang penggunaan JDBC, perhatikan Pemrograman Basis Data Praktis dengan Java (Ying Bai). Ini adalah buku yang relatif baru, dan mencakup dua database paling populer. Oracle dan SQL Server 2008. Buku ini menggunakan NetBeans IDE sebagai contoh dan menjelaskan semua alat yang diperlukan untuk bekerja dengan database di Java. Ini adalah buku yang bagus untuk pemula dan pemrogram berpengalaman.

Terhubung ke database MySQL menggunakan JDBC

Untuk menghubungkan database MySQL, kita membutuhkan empat hal

  • String koneksi JDBC (misalnya. jdbc. mysql. // localhost. 3306/tes)
  • Nama pengguna (akar)
  • Kata sandi (akar)
  • Basis data dengan sejumlah tabel misalnya (mis. g. database buku)

String koneksi untuk MySQL dimulai dengan jdbc. mysql. Ini adalah nama protokol koneksi, diikuti oleh host dan port koneksi tempat database berjalan. Dalam kasus kami, ini adalah localhost dengan port default 3306 (kecuali jika Anda mengubahnya selama instalasi). Bagian selanjutnya adalah tes – nama database, yang sudah ada di MySQL. Kita bisa membuat tabel Buku

CREATE TABLE `books` (
________satu_______
`name` varchar(50) NOT NULL,
`author` varchar(50) NOT NULL,
PRIMARY KEY (`id`)_
) ENGINE=InnoDB DEFAULT CHARSET=latin1

dan isi dengan buku-buku bagus

INSERT INTO test.books (id, `name`, author)_
VALUES (1, 'Effective Java', 'Joshua Bloch');
INSERT INTO test.books (id, `name`, author)_
VALUES (2, 'Java Concurrency in Practice', 'Brian Goetz');_

Sebuah program Java yang menggunakan database dari

Sekarang mari kita tulis sebuah program Java, yang akan terhubung ke database kita yang berjalan di localhost. Penting untuk diingat bahwa Anda perlu menutup koneksi, kueri, dan hasil eksekusi setelah Anda selesai mengerjakannya.

Penting juga untuk menutupnya di blok terakhir, dengan pembungkus coba/tangkapnya sendiri, karena metode close() itu sendiri dapat mengeluarkan pengecualian, yang akan menyebabkan kebocoran sumber daya. Untuk informasi lebih lanjut, Anda dapat merujuk ke artikel ini. Selain itu, Anda dapat menggunakan pembungkus try-with-resource, yang muncul di Java 7. Selain itu, ini adalah cara standar untuk bekerja dengan sumber daya di Java 1. 7

`id` int(11) NOT NULL,_0
`id` int(11) NOT NULL,_1
`id` int(11) NOT NULL,_2
`id` int(11) NOT NULL,_3
`id` int(11) NOT NULL,_4

`id` int(11) NOT NULL,_5
`id` int(11) NOT NULL,_6
`id` int(11) NOT NULL,_7
`id` int(11) NOT NULL,_8
`id` int(11) NOT NULL,_9
`name` varchar(50) NOT NULL,0

`name` varchar(50) NOT NULL,1
`name` varchar(50) NOT NULL,2
________23
`name` varchar(50) NOT NULL,_4

`name` varchar(50) NOT NULL,5
`name` varchar(50) NOT NULL,6
`name` varchar(50) NOT NULL,7
`name` varchar(50) NOT NULL,_8

`name` varchar(50) NOT NULL,_9
`author` varchar(50) NOT NULL,0

`author` varchar(50) NOT NULL,1
`author` varchar(50) NOT NULL,2
`author` varchar(50) NOT NULL,_3

`author` varchar(50) NOT NULL,_4
`author` varchar(50) NOT NULL,5

`author` varchar(50) NOT NULL,6
`author` varchar(50) NOT NULL,_7

`author` varchar(50) NOT NULL,8
`author` varchar(50) NOT NULL,_9
PRIMARY KEY (`id`)_0
PRIMARY KEY (`id`)_1

PRIMARY KEY (`id`)_2
PRIMARY KEY (`id`)_3
PRIMARY KEY (`id`)_4
PRIMARY KEY (`id`)_5
PRIMARY KEY (`id`)_6
PRIMARY KEY (`id`)_7
PRIMARY KEY (`id`)_8
PRIMARY KEY (`id`)_1
PRIMARY KEY (`id`)_1

PRIMARY KEY (`id`)_1

Pertama kali Anda menjalankannya, Anda mungkin tidak menemukan driver yang cocok untuk jdbc. mysql jika driver MySQL tidak ada di CLASSPATH

) ENGINE=InnoDB DEFAULT CHARSET=latin12
) ENGINE=InnoDB DEFAULT CHARSET=latin1_3
) ENGINE=InnoDB DEFAULT CHARSET=latin1_4
) ENGINE=InnoDB DEFAULT CHARSET=latin15
) ENGINE=InnoDB DEFAULT CHARSET=latin1_6
) ENGINE=InnoDB DEFAULT CHARSET=latin1_7
) ENGINE=InnoDB DEFAULT CHARSET=latin1_8

Tambahkan file JAR yang diinginkan ke jalur dan jalankan program lagi. Kesalahan umum lainnya adalah menentukan tabel di jalur koneksi. jdbc. mysql. // localhost. 3306/tes/buku. Dalam hal ini, pengecualian berikut akan dilemparkan

) ENGINE=InnoDB DEFAULT CHARSET=latin1_9
INSERT INTO test.books (id, `name`, author)_0
INSERT INTO test.books (id, `name`, author)_1
INSERT INTO test.books (id, `name`, author)_2
INSERT INTO test.books (id, `name`, author)_3
INSERT INTO test.books (id, `name`, author)_4
INSERT INTO test.books (id, `name`, author)_5
INSERT INTO test.books (id, `name`, author)_6

Peluncuran program yang berhasil akan menampilkan berikut ini

INSERT INTO test.books (id, `name`, author)_7

Hasilnya benar karena kita hanya memiliki dua buku di atas meja. "Java yang Efektif" dan "Konkurensi Java dalam Praktek"

Omong-omong, jika Anda memiliki driver pada waktu kompilasi, tetapi tidak pada saat dijalankan, Anda akan mendapatkan pengecualian java. lang. ClassNotFoundException. com. mysql. jdbc. driver. Anda dapat membaca tentang cara memperbaiki bug ini di sini

Kami mendapatkan data dengan kueri SELECT di JDBC

Untuk menerima data dari database, Anda dapat membuat kueri SELECT. Pada contoh pertama, kita sudah menggunakannya, tetapi hanya mendapatkan jumlah barisnya. Sekarang kami akan mengembalikan baris itu sendiri. Sebagian besar program tidak akan berubah, kecuali kueri SQL dan kode yang mengembalikan data dari objek ResultSet

INSERT INTO test.books (id, `name`, author)_8

`author` varchar(50) NOT NULL,_7

`author` varchar(50) NOT NULL,8
VALUES (1, 'Effective Java', 'Joshua Bloch');1
VALUES (1, 'Effective Java', 'Joshua Bloch');2
VALUES (1, 'Effective Java', 'Joshua Bloch');3
VALUES (1, 'Effective Java', 'Joshua Bloch');4
PRIMARY KEY (`id`)_1

Kode ini akan menampilkan berikut ini

VALUES (1, 'Effective Java', 'Joshua Bloch');6
VALUES (1, 'Effective Java', 'Joshua Bloch');7

Ada beberapa hal yang perlu diperhatikan. rs. metode getInt(1) digunakan untuk mendapatkan kolom dengan tipe integer, dalam kasus kami, ini adalah kolom "id". Indeks di JDBC dimulai dengan satu, jadi rs. getInt(1) akan mengembalikan kolom pertama sebagai bilangan bulat

Jika Anda menentukan indeks yang salah (banyak pengembang memanggil rs. getInt(0) untuk mendapatkan kolom pertama), pengecualian InvalidColumnIndexException akan dilemparkan. Mengakses kolom dengan indeks penuh dengan kesalahan, jadi lebih baik menggunakan nama kolom seperti rs. getInt("id")

Anda dapat membaca lebih lanjut tentang ini di artikel ini. Metode getString() digunakan untuk mendapatkan nilai string dari basis (mis. g. VARCHAR). Loop akan dieksekusi sampai rs. next() mengembalikan false. Ini berarti garis telah habis. Dalam kasus kami, ada dua baris dalam tabel, sehingga siklus akan dijalankan dua kali, menampilkan informasi tentang buku dari tabel

Kami menambahkan data dengan kueri INSERT ke JDBC

Menambahkan data sedikit berbeda dengan mendapatkannya. kami hanya menggunakan kueri INSERT alih-alih kueri SELECT dan metode executionUpdate() alih-alih executionQuery(). Metode ini digunakan untuk query INSERT, UPDATE dan DELETE serta untuk ekspresi SQL DDL seperti CREATE, ALTER, atau DROP

Perintah ini tidak mengembalikan hasil apa pun, jadi kami menghapus semua referensi ResultSet dalam kode dan memodifikasi kueri sesuai dengan itu

VALUES (1, 'Effective Java', 'Joshua Bloch');_8
VALUES (1, 'Effective Java', 'Joshua Bloch');_9

`author` varchar(50) NOT NULL,6
INSERT INTO test.books (id, `name`, author)_1

Setelah memulai program, Anda dapat memeriksa tabel di DBMS. Kali ini Anda akan melihat tiga entri dalam tabel

Face menggunakan mysql-connector-java-5.1 23 bin jar

Sekarang Anda dapat terhubung ke MySQL dari aplikasi Java dan menjalankan kueri SELECT, INSERT, DELETE, dan UPDATE dengan cara yang sama seperti di MySQL GUI. Kami menggunakan objek Connection untuk koneksi, objek ResultSet untuk membaca hasil kueri

Pastikan server MySQL berjalan dan mysql-connector-Java-5. 1. 17-bin. jar ada di CLASSPATH sebelum terhubung untuk menghindari ClassNotFoundException

Saat Anda memahami koneksi dan kueri sederhana, masuk akal untuk mempelajari cara menggunakan Pernyataan Disiapkan di Java untuk menghindari injeksi SQL. Dalam kode pertempuran, Anda harus selalu menggunakan kueri yang telah disiapkan sebelumnya dan pengikatan variabel