In der Entwicklung verwenden wir häufig Datenbankverbindungspools wie DBCP -Datenbankverbindungspools. In diesem Kapitel wird die einfache Verwendung der DBCP -Datenbankbibliotheksverbindungspools der Java -Verbindung erläutert.
Entwicklungstools myEclipse2014
1. Erstellen Sie zuerst ein Webprojekt. Ich habe den Projektnamen testjdbc benannt. Ich brauche eine Konfigurationsdatei mit web.xml, um das Servlet zu konfigurieren. Nach Abschluss der Erstellung lautet die Projektstruktur wie folgt:
2. Erstellen Sie ein Paket. Der Paketname, den ich erstellt habe, ist com.szkingdom.db
3. Erstellen Sie die Help -Klasse Castutil, der Code lautet wie folgt:
Paket com.szkingdom.db; /*** Erstellt von Jack am 2015/12/26. * Transformation Operation Tool Class*/ öffentliche Klasse castutil {/** in String -Typ konvertieren**/ public static String caststring (Objekt obj) {return castutil.caststring (obj, ""); } / * * In String -Typ konvertieren (Standardwert) * * / public static String caststring (Objekt obj, String defaultValue) {return obj! = Null? String.Valueof (obj): defaultValue; } / * * In Double Type * * * / public static double castDouble (Objekt obj) {return castDouble (obj, (doppelt) 0); } / * * In Double Type konvertieren (vorgesehener Standardwert) * * / public static Double CastDouble (Objekt obj, Double StandardValue) {Double DoubleValue = defaultValue; if (obj! if (StringUtil.isnotEmpty (StrValue)) {try {doubleValue = double.ParseDoUble (strsalue); } catch (numberFormatexception e) {defaultValue = defaultValue; }}} return DoubleValue; } / * * In langen Typen konvertieren * * / public static long castlong (Object obj) {return castlong (obj, 0); } / * * In einen langen Typ konvertieren (vorgesehener Standardwert) * * / public static long castlong (Object OBJ, Long defaultValue) {long longvalue = defaultValue; if (obj! if (StringUtil.isnotEmpty (StrValue)) {try {longvalue = long.parselong (strsRalue); } catch (numberFormatexception e) {longvalue = defaultValue; }} return longvalue; } / * * In int type * * * / public static int castint (Object obj) {return castint (obj, 0); } / * * In den int type konvertieren (bereitest den Standardwert) * * / public static int castint (Object OBJ, int defaultValue) {int intValue = defaultValue; if (obj! if (stringutil.isnotEmpty (strvalue)) {try {intvalue = integer.parseInt (strsalue); } catch (numberFormatexception e) {intValue = defaultValue; }}} return intValue; } / * * In Boolesche Typ konvertieren * * / public static boolean castboolean (Objekt obj) {return castboolean (obj, false); } / * * In den Booleschen Typ konvertieren (bietet Standardwert) * * / public static boolean castboolean (Objekt obj, boolean defaultValue) {boolean booleanValue = defaultValue; if (obj! } return booleanValue; }} 4. Erstellen Sie eine Eigenschaftsdatei, um die Hilfsklassen -Requisitil zu lesen. Der Code lautet wie folgt:
Paket com.szkingdom.db; importieren java.io.filenotfoundException; importieren java.io.ioException; importieren java.io.inputstream; Import Java.util.Properties; /*** Erstellt von Jack am 2015/12/26. * Eigenschaften Datei -Tool -Klasse*/public class requemSutil {// private statische logger logger logger = loggerfactory.getLogger (propSutil.class); / * * Eigenschaftsdatei laden * * */ public statische Eigenschaften LoadProps (String -Dateiname) {Properties Properties = NULL; InputStream InputStream = NULL; try {inputStream = thread.currentThread (). getContextClassloader (). getResourceAsStream (Dateiname); if (inputStream == null) {neue FilenotFoundException (Dateiname + "findet nicht!"); } Eigenschaften = neue Eigenschaften (); Eigenschaften.load (InputStream); } catch (ioException e) {//logger.Error(" load Properties Dateiausfall ", e); System.out.println ("Ladeeigenschaften Dateiausfall:"+e); } endlich {if (inputStream! = null) {try {inputStream.close (); } catch (ioException e) {//logger.Error("close Input -Stream -Fehler ", e); System.out.println ("Ausfall des Eingabestreams schließen:"+e); }} Rückgabeeigenschaften; } / * * Charakterattribute abrufen (Standard ist eine leere Zeichenfolge) * * * / public static String getString (Eigenschaften -Requisiten, String -Schlüssel) {return getString (Requisiten, Schlüssel, ""); } / * * Zeichen-Typ-Attribute abrufen (der Standardwert kann angegeben werden) * * / public static String getString (Eigenschaften-Requisiten, String-Taste, String DefaultValue) {String value = defaultValue; if (props.containsKey (key)) {value = props.getProperty (Schlüssel); } Rückgabewert; } / * * Numerische Typattribute abrufen (Standard ist 0) * * / public static int getint (Eigenschaften Requisiten, String -Schlüssel) {return getint (Props, Schlüssel, 0); } / * * Das Attribut des numerischen Typs abrufen (der Standardwert kann angegeben werden) * * / public static int intInt (Eigenschaften -Requisiten, String -Schlüssel, int defaultValue) {int value = defaultValue; if (props.containsKey (key)) {value = castutil.castint (props.getProperty (Schlüssel)); } Rückgabewert; } / * * Die Boolesche Eigenschaft erhalten (der Standardwert ist falsch) * * / public static boolean getBoolean (Eigenschaften -Requisiten, String -Schlüssel) {return getBoolean (Requisiten, Schlüssel, Falsch); } / * * Boolesche Eigenschaft erhalten (der Standardwert kann angegeben werden) * * / public static boolean getBoolean (Eigenschaften -Requisiten, String -Schlüssel, boolean defaultValue) {boolean value = defaultValue; if (props.containsKey (key)) {value = castutil.castboolean (props.getProperty (Schlüssel)); } Rückgabewert; }} 5. Erstellen Sie eine String -Klasse -Stringutil für String -Help -Klasse, der Code lautet wie folgt:
Paket com.szkingdom.db; /*** Erstellt von Jack am 2015/12/26. * String -Tool -Klasse */ public class Stringutil {/ * * Bestimmen Sie, ob die Zeichenfolge leer ist } // return stringutils.isempty (str); zurück "" .Equals (str); } / * * Bestimmen Sie, ob die Zeichenfolge nicht leer ist }} 6. Erstellen Sie eine Datenbankverbindungseigenschaftsdatei dbconfig.properties im SRC -Verzeichnis
<span style = "color:#333333;"> jdbc.driver = com.mysql.jdbc.driver jdbc.url = jdbc: mysql: // </span> <span style = "color:#ff666; background-color: rgb (255, 0 0); "> 127.0.0.1:3306/*
7. Legen Sie die notwendigen JAR -Pakete in das Lib -Verzeichnis:
8. Erstellen Sie eine Datenbankhilfeklasse mit DBCP
Paket com.szkingdom.db; importieren java.io.BytearrayInputStream; Import Java.sql.Connection; importieren java.sql.drivermanager; importieren java.sql.preeParedStatement; importieren java.sql.resultset; importieren java.sql.sqlexception; Import Java.util.Properties; import org.apache.commons.dbcp2.basicdataSource; /*** Erstellt von Jack am 2015/12/26. Datenbankoperation Assistent Klasse*/ Public Class DatabaseHelper {// private statische endgültige Logger logger = // loggerfactory.getLogger (DataBaseHelper.class); privater statischer Final String -Treiber; private statische endgültige String -URL; privater statischer endgültiger String -Benutzername; private statische endgültige Zeichenfolge Passwort; // Gewährleistung eines Threads und einer Verbindung, Thread-Safe Private Static Final ThreadLocal <Connection> Connection_Holders; // Thread Pool Private Static Final BasicDataSource Data_Source; static {connection_holder = new ThreadLocal <Connection> (); Eigenschaften conf = propsutil.loadProps ("dbconfig.Properties"); Driver = conf.getProperty ("jdbc.driver"); Url = conf.getProperty ("jdbc.url"); Userername = conf.getProperty ("jdbc.username"); Password = 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 (Treiber); Data_Source.seturl (URL); Data_Source.Setusername (Benutzername); Data_Source.setPassword (Password); // Datenbankverbindungspool Parameter Konfiguration: http://www.cnblogs.com/xdp-gacl/p/4002804.html //http://greemranqqqqqqqqqqqqqqqq //http://blog.csdn.net/j903829182/article/details/50190337 //http://blog.csdn.net/jiutianhe/article/details/39670817 //http:/br1983. //http://blog.csdn.net/kerafan/article/details/50382998 //http://blog.csdn.net/a9529lty/Article/Details/43021801 // Die maximale Gesamtzahl der INFALS -NUMPLETTE und geliehene Verbindungen und geliehene Verbindungen und geliehene Verbindungen und geliehene Verbindungen und geliehene Verbindungen und das gleiche Zeitpunkt. Data_Source.SetMaxtotal (60); // Setzen Sie die anfängliche Größe Data_Source.setInitialSize (10); // minimale Leerlaufverbindungsdaten_Source.Setminidle (8); // maximale Leerlaufverbindung Data_Source.setMaxidle (16); // Timeout Wartezeit Millisekunden data_source.setMaxwaitmillis (2*10000); // Nur die aktuelle Verbindung ist ungültig. Erstellen Sie eine andere Verbindung für die aktuelle Abfrage zur Verwendung von Data_Source.settestonBorrow (true). // RemoveAbandonedTimeout: Recycling unbenutzte (fehlende) Verbindungen (Standard ist 300 Sekunden, angepasst an 180) Data_Source.setremoveaBandOnedTimeout (180); // removeaBandoned: Nach der Zeit des RemoveAbandonedTimeouts übersteigt die Zeit der RemoveAbandonedTimeout, ob nicht verwendete (fehlende) Verbindungen (Standardeinstellung ist falsch, angepasst an true) //data_source.setremoveAntonedonmain Warning(removeaBandonedonedonedonedonedonmainMain); Data_Source.setremoveaBandonedonBorrow (wahr); // Testen Sie, wie hochdaten_source.settestonReturn (true); // testonReturn data_source.settestonReturn (true); // setRemoveAbandonedonMain Wartering Data_Source.setremoveAbandonedonMain Wartering (True); // log data_source.setLogAboned (true) aufzeichnen; // setAddress Automatical Submission Data_Source.SetDefaultAutoCommit (true); // data_source.setenableAutoCommitonReturn (true); System.out.println ("Füllen Sie die Parametereinstellung der Datenbankverbindungspool data_source aus !!"); /*try {class.forname (Treiber); System.out.println ("JDBC -Treiber laden"); } catch (classNotFoundException e) {// logger.Error ("Kann JDBC -Treiber nicht laden", e); System.out.println ("kann den JDBC -Treiber nicht laden:" + e); } endlich {}*/} // private statische endgültige ThreadLocal <Connection> connection_holder = new ThreadLocal <Connection> (); /*** Datenbankverbindung abrufen*/öffentliche statische Verbindung getConnection () {Verbindung conn = connection_holder.get (); // 1 if (conn == null) {try {// conn = driverManager.getConnection (URL, Benutzername, Passwort); conn = data_source.getConnection (); System.out.println ("Verbindung erhalten"); } catch (sqlexception e) {// logger.Error ("Verbindungsversagen erhalten", e); System.out.println ("Anschlussfehler erhalten:" + e); } endlich {/* system.out.println ("minimum idle connection minidle ="+data_source.getminidle ()); System.out.println ("Maxidle Connection maxidle ="+data_source.getMaxidle ()); System.out.println ("Maximale Anzahl von Verbindungen maxtotal ="+data_source.getMaxtotal ()); System.out.println ("Initial Size initialSize ="+data_Source.getInitialSize ()); System.out.println ("Zeitleitungszeitzeit maxwaitmillis ="+(data_source.getMaxwaitmillis ()/1000)); System.out.println ("Get Active Connections getNumActive () ="+data_source.getNumActive ()); System.out.println ("Get die Anzahl der Verbindungen getNumIdle ="+data_source.getNumidle ());*/ Connection_Holder.set (conn); }} return conn; }/ *** Schließen Sie die Datenbankverbindung*/ public static void Closeconnection () {Verbindung conn = connection_holder.get (); // 1 if (conn! = Null) {try {conn.close (); System.out.println ("Erfolgserfolg der engen Verbindung"); } catch (SQLEXception e) {// logger.Error ("Anschlussfehler schließen", e); System.out.println ("Verknüpfungsfehler schließen:" + e); neue runimeexception (e) werfen; } endlich {Connection_Holder.remove (); }}} // Datenbankoperationen durchführen öffentlich statische synchronisierte void -Update (int thaLsh, String ltnr) {Connection conn = getConnection (); if (conn == null) {System.out.println ("Die () Verbindung in der Aktualisierungsmethode ist null !!"); } PreparedStatement pstmt = null; System.out.println ("Update start!"); int ltlsh = 0; Versuchen Sie {// String sql = "Aktualisieren Sie den Nachrichtensatz content =? WO ID =?"; // String sql1 = "Wählen Sie LTLSH aus T_ZxtHLSK, wo lsh =?"; String sql = "T_WX_LTNRK B SET B.LTNR =? WO B.LSH ="+ "(SELECT A.LTLSH von T_ZxtHLSK A WHERE A.LSH =?)"; System.out.println ("Die aktualisierte SQL-Anweisung lautet: SQL->"+SQL); pstmt = conn.preparestatement (SQL); pstmt.setblob (1, neuer bytearrayinputstream (ltnr.getBytes ())); pstmt.setint (2, thlsh); /*PSTMT.SetString(1, "Dies ist DBCP2 -Test 2222"); pstmt.setint (2, 6);*/if (pstmt.executeUpdate ()> 0) {//system.out.println("Update die Daten mit id = 1 erfolgreich! "); System.out.println ("Aktualisieren Sie die Chat -Inhaltsdaten von THLSH ="+THLSH+"erfolgreich!/N Chat -Inhalt ist:"+ltnr); } //conn.commit (); /* while(rs1.next ()) {ltlsh = rs1.getint ("ltlsh"); System.out.println ("Abfragen Sie die Chat-Flussnummer erfolgreich ab, die Chat-Flussnummer lautet ltlsh->"+ltlsh); }*///pstmt.setstring(1, "Excellent Content Update1"); //pstmt.setint(2, 1); //pstmt.setblob(1, New BytearrayInputStream ("12345 China" .GetBytes ())); //pstmt.setint(2, 76732); /* if(pstmt.executeUpdate ()> 0) {//system.out.println("Update Daten mit id = 1 erfolgreich! "); System.out.println ("Daten mit ID = 76732 Aktualisieren erfolgreich!"); } conn.commit ();*/ system.out.println ("T_WX_LTNRK ERFORDERUNG aktualisieren"); } catch (SQLEXception e) {//logger.Error("Query Entity List -Fehler ", e); System.out.println ("Data Exception Connection ="+conn); System.out.println ("Aktualisieren Sie T_WX_LTNRK -Fehler:" + e); neue runimeexception (e) werfen; } endlich {// Closeconnection (); // Closeconnection (); if (pstmt! = null) {try {pstmt.close (); } catch (SQLEXception e) {// Todo automatisch generierter Fangblock e.printstacktrace (); System.out.println ("Vorbereitete Stattierung fehlgeschlagen"); }} if (conn! = null) {try {conn.close (); } catch (SQLEXception e) {// Todo automatisch generierter Fangblock e.printstacktrace (); }} // Entfernen der Verbindung im Thread. Wenn Sie nicht entfernen, wird die Verbindung geschlossen. Nach der Schließung der Verbindung befindet sich die erhaltene Verbindung in einem geschlossenen Zustand und die Datenbetrieb kann nicht durchgeführt werden. // Closeconnection (); } // EntityList zurückgeben; }} 9. Der grundlegende Datenbankverbindungspool wird erstellt. Danach können Sie die Datenbankverbindung über die Aktualisierungsmethode von DataBaseHelper simulieren, um den Betrieb des Abrufen von Datenbankverbindungen zu simulieren und Datenvorgänge entsprechend Ihren eigenen Anforderungen auszuführen.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.