Dalam pengembangan, kami sering menggunakan kumpulan koneksi basis data, seperti kumpulan koneksi database DBCP. Bab ini akan menjelaskan penggunaan sederhana kumpulan koneksi pustaka DBCP DBCP.
Alat Pengembangan Myeclipse2014
1. Pertama -tama buat proyek web. Saya menamai nama proyek TestJDBC. Saya memerlukan file konfigurasi dengan web.xml untuk mengonfigurasi servlet. Setelah penciptaan selesai, struktur proyek adalah sebagai berikut:
2. Buat paket. Nama paket yang saya buat adalah com.szkingdom.db
3. Buat kelas bantuan castutil, kodenya adalah sebagai berikut:
paket com.szkingdom.db; /*** Dibuat oleh Jack pada 2015/12/26. * Kelas Alat Operasi Transformasi*/ kelas publik Castutil {/** Konversi ke string type**/ public static string caststring (objek obj) {return castutil.castString (obj, ""); } / * * Konversi ke string type (memberikan nilai default) * * / public static string caststring (objek obj, string defaultValue) {return obj! = Null? String.ValueOf (OBJ): DefaultValue; } / * * Konversi ke tipe ganda * * / public static double castdouble (objek obj) {return castdouble (obj, (double) 0); } / * * Konversi ke tipe ganda (nilai default yang disediakan) * * / public static double castdouble (objek obj, double defaultValue) {double doubleValue = defaultValue; if (obj! = null) {string strvalue = castString (obj); if (stringutil.isnotempty (strvalue)) {coba {doublevalue = double.parsedouble (strvalue); } catch (numberFormateException e) {defaultValue = defaultValue; }}} return doubleValue; } / * * Konversi ke jenis panjang * * / public static long castlong (objek obj) {return castlong (obj, 0); } / * * Konversi ke tipe panjang (nilai default yang disediakan) * * / public static long castlong (objek obj, long defaultValue) {long longValue = defaultValue; if (obj! = null) {string strvalue = castString (obj); if (stringutil.isnotempty (strvalue)) {coba {longValue = long.parselong (strvalue); } catch (numberFormateException e) {longValue = defaultValue; }} return longValue; } / * * Konversi ke tipe int * * / public static int castint (objek obj) {return castint (obj, 0); } / * * Konversi ke tipe int (memberikan nilai default) * * / public static int castint (objek obj, int defaultValue) {int intvalue = defaultValue; if (obj! = null) {string strvalue = castString (obj); if (stringutil.isnotempty (strvalue)) {coba {intvalue = integer.parseint (strvalue); } catch (numberFormateException e) {intvalue = defaultValue; }}} return intvalue; } / * * Konversi ke tipe boolean * * / public static boolean castboolean (objek obj) {return castboolean (obj, false); } / * * Konversi ke tipe boolean (memberikan nilai default) * * / public static boolean castboolean (objek obj, boolean defaultValue) {boolean booleanValue = defaultValue; if (obj! = null) {booleanValue = boolean.parseboolean (caststring (obj)); } return booleanValue; }} 4. Buat file properti untuk membaca propsutil kelas bantuan, kodenya adalah sebagai berikut:
paket com.szkingdom.db; impor java.io.filenotfoundException; impor java.io.ioException; impor java.io.inputstream; impor java.util.properties; /*** Dibuat oleh Jack pada 2015/12/26. * Properties File Tool Class*/Public Class PropSutil {// Private Static Final Logger Logger = LoggerFactory.getLogger (propsutil.class); / * * Memuat file properti * * */ properti statis public LoadProps (string fileName) {properties properties = null; InputStream inputStream = null; coba {inputStream = thread.currentThread (). getContextClassLoader (). getResourceAsstream (fileName); if (inputStream == null) {lempar file fileNotFoundException baru (fileName + "tidak ditemukan!"); } properties = properti baru (); properties.load (inputStream); } catch (ioException e) {//logger.error("Load Properties Failure Failure ", e); System.out.println ("Load Properties File Failure:"+E); } akhirnya {if (inputStream! = null) {coba {inputStream.close (); } catch (ioException e) {//logger.error("close input stream failure ", e); System.out.println ("Tutup Kegagalan Aliran Input:"+E); }} mengembalikan properti; } / * * Dapatkan atribut karakter (default adalah string kosong) * * * / string statis publik getString (properti props, tombol string) {return getstring (props, key, ""); } / * * Dapatkan atribut tipe karakter (nilai default dapat ditentukan) * / / public static string getString (properti props, tombol string, string defaultValue) {string value = defaultValue; if (props.containskey (key)) {value = props.getProperty (key); } nilai pengembalian; } / * * Dapatkan atribut tipe numerik (default adalah 0) * * / public static int getInt (properti props, tombol string) {return getInt (props, key, 0); } / * * Dapatkan atribut tipe numerik (nilai default dapat ditentukan) * / / public static int getInt (properti props, tombol string, int defaultValue) {int value = defaultValue; if (props.containskey (key)) {value = castutil.castint (props.getProperty (key))); } nilai pengembalian; } / * * Dapatkan properti boolean (nilai defaultnya salah) * * / public static boolean getBoolean (properti props, tombol string) {return getBoolean (props, kunci, false); } / * * Dapatkan properti boolean (nilai default dapat ditentukan) * * / public static boolean getBoolean (properti props, tombol string, boolean defaultValue) {value boolean = defaultValue; if (props.containskey (key)) {value = castutil.castboolean (props.getProperty (key))); } nilai pengembalian; }} 5. Buat string help class stringutil, kode ini adalah sebagai berikut:
paket com.szkingdom.db; /*** Dibuat oleh Jack pada 2015/12/26. * Kelas Alat String */ kelas publik Stringutil {/ * * Tentukan apakah string kosong * */ public static boolean isEmpty (string str) {if (str! = Null) {str = str.trim (); } // return stringutils.isempty (str); return "" .Equals (str); } / * * Tentukan apakah string tidak kosong * * / public static boolean isNoTempty (string str) {return! IsEmpty (str); }} 6. Buat file properti koneksi database dbconfig.properties di direktori src
<span style = "color:#333333;"> jdbc.driver = com.mysql.jdbc.driver jdbc.url = jdbc: mysql: // </span> <span style = "color:#ff6666; latar belakang-warna: rgb (255, 0, 0); "> 127.0.0.1:3306/****</span> <span style =" Color:#333333; "> jdbc.username = **** jdbc.password = **** </span>
7. Masukkan paket stoples yang diperlukan di direktori LIB:
8. Buat kelas Bantuan Database Menggunakan DBCP
paket com.szkingdom.db; impor java.io.bytearrayInputStream; impor java.sql.connection; impor java.sql.driverManager; impor java.sql.preparedstatement; impor java.sql.Resultset; impor java.sql.sqlexception; impor java.util.properties; impor org.apache.commons.dbcp2.basicDataSource; /*** Dibuat oleh Jack pada 2015/12/26. Kelas Asisten Operasi Database*/ Kelas Publik DatabaseHelper {// Private Static Final Logger Logger = // LoggerFactory.GetLogger (databaseHelper.class); pengemudi string final statis pribadi; URL string final statis pribadi; nama pengguna string final statis pribadi; kata sandi string final statis pribadi; // Pastikan satu utas dan satu koneksi, thread private thread final threadlocal <connection> connection_holder; // Thread Pool Private Static Final BasicDataSource Data_source; static {connection_holder = new ThreadLocal <nection> (); Properti conf = propsutil.loadprops ("dbconfig.properties"); Driver = conf.getProperty ("jdbc.driver"); Url = conf.getProperty ("jdbc.url"); Username = conf.getProperty ("jdbc.username"); Kata sandi = conf.getProperty ("jdbc.password"); String driver = conf.getProperty ("jdbc.driver"); String url = conf.getProperty ("jdbc.url"); String username = conf.getProperty ("jdbc.username"); String passwrod = conf.getProperty ("jdbc.password"); Data_source = new BasicDataSource (); Data_source.setDriverClassName (driver); Data_source.setUrl (url); Data_source.setusername (nama pengguna); Data_source.setPassword (Passwrod); // Database Koneksi Pool Parameter Konfigurasi: http://www.cnblogs.com/xdp-gacl/p/4002804.html //http://greemranqq.iteye.com/blog/1969273 //http://blog.csdn.net/j903829182/article/details/50190337 //http://blog.csdn.net/jiutianhe/article/details/39670817 //http:.article/details/39670817 //http:.article/39670817 //http: //http://blog.csdn.net/kerafan/article/details/50382998 //http://blog.csdn.net/a9529lty/article/details/43021801 // Data_source.setmaxtotal (60); // atur ukuran awal data_source.setInitialSize (10); // Data koneksi idle minimum_source.setMinidle (8); // Data koneksi idle maksimum_source.setmaxidle (16); // waktu tunggu waktu tunggu milidetik data_source.setmaxwaitmillis (2*10000); // Hanya koneksi saat ini yang tidak valid, buat koneksi lain untuk kueri saat ini untuk menggunakan data_source.settestonborrow (true); // Removeabandonedtimeout: Daur ulang koneksi yang tidak digunakan (tidak ada) (default adalah 300 detik, disesuaikan dengan 180) data_source.setremoveabandonedtimeout (180); // Dihapus: Setelah waktu pelepasan waktu yang dilepas melebihi waktu koneksi yang dilepas, apakah akan mendaur ulang koneksi yang tidak digunakan (tidak ada) (default itu salah, disesuaikan dengan true) //data_source.setremoveAbandonedonMainingenance. Data_source.setremoveabandonedonborrow (true); // testwhileidle data_source.settestonreturn (true); // testonreturn data_source.settestonreturn (true); // setRemoveAbandOndonMaintening Data_source.setremoveAbandonedonMaintenance (true); // Rekam log data_source.setLogabandoned (true); // setAddress kiriman otomatis data_source.setDefaultAutocommit (true); // data_source.setenableAutocommitonReturn (true); System.out.println ("Lengkapi pengaturan parameter dari kumpulan koneksi database data_source !!"); /*coba {class.forname (driver); System.out.println ("Muat JDBC Driver Success"); } catch (classNotFoundException e) {// logger.error ("Tidak dapat memuat driver jdbc", e); System.out.println ("Tidak dapat memuat driver JDBC:" + e); } akhirnya {}*/} // thread final statis private static <nection> connection_holder = new ThreadLocal <nection> (); /*** Dapatkan koneksi database*/koneksi statis publik getConnection () {connection conn = connection_holder.get (); // 1 if (conn == null) {coba {// conn = driverManager.getConnection (url, nama pengguna, kata sandi); conn = data_source.getConnection (); System.out.println ("Dapatkan Sukses Koneksi"); } catch (sqlexception e) {// logger.error ("dapatkan kegagalan koneksi", e); System.out.println ("Dapatkan Kegagalan Koneksi:" + E); } akhirnya {/*system.out.println ("Koneksi idle minimum minidle ="+data_source.getMinidle ()); System.out.println ("MaxIdle Connection maxidle ="+data_source.getmaxidle ()); System.out.println ("Jumlah maksimum koneksi maxtotal ="+data_source.getmaxtotal ()); System.out.println ("Ukuran awal inisialisasi ="+data_source.getInitialSize ()); System.out.println ("Waktu tunggu timeout maxwaitmillis ="+(data_source.getmaxwaitmillis ()/1000)); System.out.println ("Dapatkan koneksi aktif getNumActive () ="+data_source.getNumActive ()); System.out.println ("Dapatkan jumlah koneksi getNumidle ="+data_source.getNumidle ());*/ connection_holder.set (conn); }} return conn; }/ *** Tutup koneksi database*/ public static void closeConnection () {connection conn = connection_holder.get (); // 1 if (conn! = Null) {coba {conn.close (); System.out.println ("Tutup Sukses Koneksi"); } catch (sqlexception e) {// logger.error ("Tutup Kegagalan Koneksi", E); System.out.println ("Tutup Kegagalan Koneksi:" + E); Lempar RuntimeException baru (E); } akhirnya {connection_holder.remove (); }}} // Lakukan operasi basis data pembaruan void yang disinkronkan statis publik (int thlsh, string ltnr) {koneksi conn = getConnection (); if (conn == null) {System.out.println ("The () koneksi dalam metode pembaruan adalah null !!"); } Disiapkan pstmt = null; System.out.println ("Perbarui Mulai!"); int ltlsh = 0; coba {// string sql = "Perbarui Pesan Set Konten =? Di mana id =?"; // string sql1 = "Pilih ltlsh dari t_zxthlsk di mana lsh =?"; String sql = "perbarui t_wx_ltnrk b set b.ltnr =? Di mana b.lsh ="+ "(pilih a.ltlsh dari t_zxthlsk a di mana a.lsh =?)"; System.out.println ("Pernyataan SQL yang diperbarui adalah: SQL->"+SQL); PSTMT = Conn.PrepareStatement (SQL); pstmt.setBlob (1, bytearrayInputStream (ltnr.getbytes ())); pstmt.setint (2, thlsh); /*pstmt.setstring(1, "Ini adalah tes dbcp2 2222"); pstmt.setint (2, 6);*/if (pstmt.executeUpdate ()> 0) {//system.out.println("update data dengan id = 1 berhasil! "); System.out.println ("Perbarui data konten obrolan thlsh ="+thlsh+"berhasil!/N Konten obrolan adalah:"+ltnr); } //conn.commit (); /* sementara(rs1.next ()) {ltlsh = rs1.getInt ("ltlsh"); System.out.println ("Permintaan nomor aliran obrolan berhasil, nomor aliran obrolan adalah ltlsh->"+ltlsh); }*///pstmt.setstring(1, "pembaruan konten yang sangat baik1"); //pstmt.setint(2, 1); //pstmt.setBlob(1, bytearrayInputStream baru ("12345 cina" .getbytes ())); //pstmt.setint(2, 76732); /*if(pstmt.executeUpdate ()> 0) {//system.out.println("update data dengan id = 1 berhasil! "); System.out.println ("Perbarui data dengan ID = 76732 berhasil!"); } conn.Commit ();*/ System.out.println ("Perbarui T_WX_LTNRK SUCCESS"); } catch (sqlexception e) {//logger.error("query entity list failure ", e); System.out.println ("Perbarui Data Exception Connection ="+Conn); System.out.println ("Perbarui T_WX_LTNRK Kegagalan:" + e); Lempar RuntimeException baru (E); } akhirnya {// closeConnection (); // closeConnection (); if (pstmt! = null) {coba {pstmt.close (); } catch (sqlexception e) {// TODO Auto-Eynerated Catch Block E.PrintStackTrace (); System.out.println ("Persiapan gagal"); }} if (conn! = null) {coba {conn.close (); } catch (sqlexception e) {// TODO Auto-Eynerated Catch Block E.PrintStackTrace (); }} // Hapus koneksi di utas. Jika koneksi tidak dihapus, koneksi yang diperoleh akan ditutup. Operasi data tidak dapat dilakukan. Connection_holder.remove (); // closeConnection (); } // return entitylist; }} 9. Kumpulan koneksi database dasar dibuat. Setelah itu, Anda dapat mensimulasikan koneksi basis data melalui metode pembaruan databasehelper untuk mensimulasikan operasi memperoleh koneksi basis data dan melakukan operasi data sesuai dengan kebutuhan Anda sendiri.
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.