Cara Mempertahankan Data ke PostgreSQL di Java

Cara Mempertahankan Data ke PostgreSQL di Java

Java mungkin bahasa pengaturcaraan yang paling banyak digunakan pada masa kini. Sifat ketahanan dan platform yang bebas membolehkan aplikasi berasaskan Java untuk dijalankan kebanyakannya. Seperti mana -mana aplikasi, kita perlu menyimpan data kami dengan cara yang boleh dipercayai - keperluan ini dipanggil pangkalan data untuk hidup.

Dalam sambungan pangkalan data Java dilaksanakan oleh JDBC (Java Database Connectivity API), yang membolehkan pengaturcara mengendalikan jenis pangkalan data yang berbeza dengan cara yang sama, yang menjadikan kehidupan kita lebih mudah apabila kita perlu menyimpan atau membaca data dari pangkalan data.

Dalam tutorial ini, kami akan membuat contoh aplikasi Java yang dapat menyambung ke contoh pangkalan data PostgreSQL, dan menulis data ke dalamnya. Untuk memeriksa bahawa penyisipan data kami berjaya, kami juga akan melaksanakan bacaan kembali dan mencetak jadual yang kami masukkan ke dalam.

Dalam tutorial ini anda akan belajar:

  • Cara Menyediakan Pangkalan Data untuk Aplikasi
  • Cara Mengimport Pemandu JDBC PostgreSQL Ke Projek Anda
  • Cara memasukkan data ke dalam pangkalan data
  • Cara menjalankan pertanyaan mudah untuk membaca kandungan jadual pangkalan data
  • Cara mencetak data yang diambil
Keputusan menjalankan aplikasi.

Keperluan perisian dan konvensyen yang digunakan

Keperluan Perisian dan Konvensyen Talian Perintah Linux
Kategori Keperluan, konvensyen atau versi perisian yang digunakan
Sistem Ubuntu 20.04
Perisian NetBeans IDE 8.2, postgresql 10.12, JDK 1.8
Yang lain Akses istimewa ke sistem linux anda sebagai akar atau melalui sudo perintah.
Konvensyen # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak

Persediaan



Untuk tujuan tutorial ini, kami hanya memerlukan satu stesen kerja (desktop atau komputer riba) untuk memasang semua komponen yang diperlukan. Kami tidak akan meliputi memasang JDK, IDE NetBeans, atau pemasangan pangkalan data PostgreSQL pada mesin makmal. Kami menganggap bahawa pangkalan data yang dipanggil contohnya sedang berjalan dan berjalan, dan kami boleh menyambung, membaca dan menulis menggunakan pengesahan kata laluan, dengan kelayakan berikut:

Nama Pengguna: Contohnya
Kata Laluan: Contoh

Ini adalah persediaan contoh, gunakan kata laluan yang kuat dalam senario dunia sebenar! Pangkalan data ditetapkan untuk mendengar di localhost, yang diperlukan apabila kita membina JDBC URL Sambungan.

Tujuan utama aplikasi kami adalah untuk menunjukkan cara menulis dan membaca dari pangkalan data, jadi untuk maklumat berharga yang kami sangat bersemangat untuk bertahan, kami hanya akan memilih nombor rawak antara 1 dan 1000, dan akan menyimpan maklumat itu dengan unik ID pengiraan, dan masa yang tepat data direkodkan dalam pangkalan data.

ID dan masa rakaman akan disediakan oleh pangkalan data, yang membolehkan permohonan kami berfungsi pada isu sebenar sahaja (menyediakan nombor rawak dalam kes ini). Ini bertujuan, dan kami akan merangkumi kemungkinan seni bina ini pada akhir tutorial ini.

Menyediakan pangkalan data untuk aplikasi

Kami mempunyai perkhidmatan pangkalan data yang berjalan, dan pangkalan data yang dipanggil contohnya Kami mempunyai hak untuk bekerja dengan kelayakan yang disebutkan di atas. Untuk mempunyai tempat di mana kita dapat menyimpan data berharga (rawak) kita, kita perlu membuat jadual, dan juga urutan yang akan memberikan pengenal unik dengan cara yang mudah. Pertimbangkan skrip SQL berikut:

Buat urutan resultid_seq Mula dengan 0 kenaikan dengan 1 tiada maxvalue minvalue 0 cache 1; Alter urutan urutan resultid_seq pemilik kepada contoh; Buat jadual calc_results (resid angka utama utama lalai nextVal ('resultId_seq' :: regClass), result_of_calculation angka tidak null, record_date timestamp lalai sekarang ()); alter jadual calc_results pemilik ke contoh; 
Salinan

Arahan ini harus bercakap untuk diri mereka sendiri. Kami membuat urutan, tetapkan pemilik ke Contohnya, buat jadual yang dipanggil calc_results (berdiri untuk "hasil pengiraan"), ditetapkan resid untuk diisi secara automatik dengan nilai seterusnya urutan kami pada setiap sisipan, dan tentukan result_of_calculation dan RECORD_DATE lajur yang akan menyimpan data kami. Akhirnya, pemilik meja juga ditetapkan Contohnya.

Untuk membuat objek pangkalan data ini, kami beralih ke Postgres Pengguna:

$ sudo su - postgres

Dan jalankan skrip (disimpan dalam fail teks yang dipanggil Table_for_java.SQL) terhadap contohnya pangkalan data:

$ psql -d exampledb < table_for_java.sql CREATE SEQUENCE ALTER SEQUENCE CREATE TABLE ALTER TABLE

Dengan ini, pangkalan data kami sudah siap.

Mengimport Pemandu JDBC PostgreSQL ke dalam projek



Untuk membina permohonan, kami akan menggunakan NetBeans IDE 8.2. Beberapa langkah pertama adalah kerja tangan. Kami memilih menu fail, buat projek baru. Kami akan meninggalkan lalai di halaman seterusnya Wizard, dengan kategori "Java" dan projek pada "Aplikasi Java". Kami akan tekan seterusnya. Kami memberikan nama nama (dan secara pilihan menentukan lokasi bukan lalai). Dalam kes kita, ia akan dipanggil Enperttopostgres. Ini akan menjadikan IDE membuat projek asas java untuk kami.

Pada anak panah projek kami klik kanan "perpustakaan" dan pilih "Tambah Perpustakaan ...". Tetingkap baru akan muncul, di mana kami mencari dan memilih pemacu JDBC PostgreSQL, dan tambahkannya sebagai perpustakaan.

Menambah pemacu JDBC PostgreSQL ke projek.

Memahami kod sumber

Kami kini menambah kod sumber berikut ke kelas utama aplikasi kami, Enperttopostgres:

Pakej Enperttopostgres; Import Java.SQL.Sambungan; Import Java.SQL.Drivermanager; Import Java.SQL.Resultset; Import Java.SQL.SQLEXception; Import Java.SQL.Pernyataan; Import Java.util.serentak.Threadlocalrandom; kelas awam EnpertToPostGres public static void main (string [] args) int result = threadLocalRandom.Semasa ().NextInt (1, 1000 + 1); Sistem.keluar.println ("Hasil pengiraan yang sukar untuk diselesaikan adalah:" + hasil); Sistem.keluar.println ("----- PostgreSQL JDBC Testing Connection ------"); cuba kelas.Forname ("org.PostgreSQL.Pemandu "); menangkap (classnotfoundexception cnfe) sistem.keluar.Println ("Tiada Pemandu JDBC PostgreSQL di Laluan Perpustakaan!"); cnfe.printStackTrace (); kembali;  Sistem.keluar.Println ("Pemandu PostgreSQL JDBC Berdaftar!"); Sambungan conn = null; cuba conn = drivermanager.getConnection ("JDBC: PostgreSql: // localhost: 5432/occlypledb", "exampleuser", "examplementpase");  tangkapan (sqlexception sqle) sistem.keluar.println ("Sambungan gagal! Semak konsol output "); sqle.printStackTrace (); kembali;  jika (Conn != null) System.keluar.println ("sambungan pangkalan data ditubuhkan"); // pertanyaan bangunan cuba pernyataan st = conn.createstatement (); st.ExecuteUpdate ("Masukkan ke dalam nilai calc_results (result_of_calculation) (" + hasil + ")"); ResultSet RS = ST.executeQuery ("Pilih resid, result_of_calculation, record_date dari calc_results"); Sistem.keluar.println ("Hasil yang direkodkan dalam contoh berikut: \ n ----------------------- \ n"); sementara (Rs.seterusnya ()) Sistem.keluar.println (Rs.getString ("resid") + "\ t" + rs.getString ("result_of_calculation") + "\ t" + rs.getString ("record_date"));  // Bersihkan di keluar st.tutup (); Conn.tutup ();  tangkapan (sqlexception sqle2) sistem.keluar.println ("Ralat pada pertanyaan"); SQLE2.printStackTrace ();  else System.keluar.println ("gagal membuat sambungan!"); 
Salinan

  • Pada baris 12 kami mengira nombor rawak, dan simpan di hasil pembolehubah. Nombor ini mewakili hasil pengiraan berat yang
    kita perlu menyimpan dalam pangkalan data.
  • Pada baris 15 kami cuba mendaftarkan pemandu JDBC PostgreSQL. Ini akan mengakibatkan ralat jika permohonan tidak menemui pemandu semasa runtime.
  • Pada baris 26 kami membina rentetan sambungan JDBC menggunakan nama hos pangkalan data yang dijalankan (localhost), port pangkalan data mendengarkan (5432, port lalai untuk postgresql), nama pangkalan data (ocokpledb), dan kelayakan yang disebutkan di permulaan.
  • Pada baris 37 kami melaksanakan masukkan ke dalam Penyataan SQL yang memasukkan nilai hasil pemboleh ubah ke dalam result_of_calculation lajur calc_results Jadual. Kami hanya menentukan nilai lajur tunggal ini, jadi lalai dikenakan: resid diambil dari urutan kita
    Tetapkan, dan RECORD_DATE lalai ke sekarang (), yang merupakan masa pangkalan data pada saat urus niaga.
  • Pada baris 38 kami membina pertanyaan yang akan mengembalikan semua data yang terkandung dalam jadual, termasuk memasukkan kami dalam langkah sebelumnya.
  • Dari baris 39 kami membentangkan data yang diambil dengan mencetaknya dalam fesyen seperti meja, sumber bebas, dan keluar.

Menjalankan aplikasi

Kita sekarang boleh membersihkan, membina dan menjalankan Enperttopostgres permohonan, dari IDE itu sendiri, atau dari baris arahan. Untuk berjalan dari IDE, kita boleh menggunakan butang "Run Project" di atas. Untuk menjalankannya dari baris arahan, kita perlu menavigasi ke Dist direktori projek, dan memohon JVM dengan Balang pakej sebagai hujah:

$ java -jar entiontopostgres.Hasil JAR dari pengiraan yang sukar ditangguhkan ialah: 173 ----- PostgreSQL JDBC Testing Connection ------ Sambungan pangkalan data yang ditetapkan hasil yang direkodkan dalam contoh berikut: ------------- ---------- 0 145 2020-05-31 17:40:30.974246

Laluan baris arahan akan memberikan output yang sama seperti konsol IDE, tetapi yang lebih penting di sini ialah setiap larian (sama ada dari IDE atau baris arahan) akan memasukkan baris lain ke dalam jadual pangkalan data kami dengan nombor rawak yang diberikan pada setiap setiap Jalankan.

Inilah sebabnya kami juga akan melihat jumlah rekod yang semakin meningkat dalam output aplikasi: setiap larian tumbuh jadual dengan satu baris. Setelah beberapa berjalan, kita akan melihat senarai panjang baris hasil dalam jadual.

Output pangkalan data menunjukkan hasil setiap pelaksanaan aplikasi.

Kesimpulan

Walaupun aplikasi mudah ini tidak mempunyai sebarang penggunaan dunia nyata, ia adalah sempurna untuk menunjukkan beberapa aspek penting. Dalam tutorial ini kami katakan kami melakukan pengiraan penting dengan aplikasi, dan memasukkan nombor rawak setiap kali, kerana tujuan tutorial ini adalah untuk menunjukkan bagaimana untuk meneruskan data. Matlamat ini kami selesai: dengan setiap larian, aplikasi keluar, dan hasil pengiraan dalaman akan hilang, tetapi pangkalan data mengekalkan data.

Kami melaksanakan permohonan dari stesen kerja tunggal, tetapi jika kami benar -benar perlu menyelesaikan beberapa pengiraan rumit, kami hanya perlu menukar pangkalan data Connect URL untuk menunjuk ke mesin jauh yang menjalankan pangkalan data, dan kami dapat memulakan pengiraan pada beberapa komputer Pada masa yang sama mencipta beratus -ratus atau beribu -ribu contoh aplikasi ini, mungkin menyelesaikan kepingan kecil teka -teki yang lebih besar, dan menyimpan hasilnya dengan cara yang berterusan, membolehkan kami meningkatkan kuasa pengkomputeran kami dengan beberapa baris kod, dan sedikit perancangan.

Mengapa perancangan diperlukan? Untuk tinggal dengan contoh ini: jika kita tidak akan meninggalkan pengenal baris atau timestamping ke pangkalan data, permohonan kita akan lebih besar, lebih perlahan, dan lebih penuh dengan bug - sebahagiannya hanya permukaan apabila kita menjalankan dua contoh Permohonan pada masa yang sama.

Tutorial Linux Berkaitan:

  • Ubuntu 20.04 Pemasangan PostgreSQL
  • Ubuntu 22.04 Pemasangan PostgreSQL
  • Cara Mencegah Pemeriksaan Sambungan RangkaianManager
  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Cara Bekerja Dengan API Rest WooCommerce dengan Python
  • Cara memeriksa hayat bateri di Ubuntu
  • EEPROM CH341A Programmer - Baca dan tulis data ke cip…
  • Perkara yang perlu dipasang di Ubuntu 22.04
  • Pemasangan Oracle Java di Ubuntu 20.04 Focal Fossa Linux
  • Cara Memasang Java di Manjaro Linux