Heim  >  Artikel  >  Datenbank  >  Detaillierte Einführung in den C3P0-Verbindungspool

Detaillierte Einführung in den C3P0-Verbindungspool

零下一度
零下一度Original
2017-07-27 15:48:262140Durchsuche

C3P0-Verbindungspool

Toolklasse zum Erstellen eines C3P0-Verbindungspools
* Standardschnittstelle für Verbindung:
* javax.sql.DataSource-Schnittstelle
* Implementierungsklassenobjekt der Schnittstelle
* ComboPooledDataSource
* ComboPooledDataSource-Objekt am Mitgliedsort erstellen
* Statischen Codeblock verwenden, um 4 Verbindungsinformationen für große Datenmengen für ComboPooledDataSource festzulegen
* Erstellen Sie ein statisches Methode zum Zurückgeben des Verbindungsobjekts
* Erstellen Sie eine statische Methode zum Freigeben von Ressourcen

 1 public class C3P0Utils { 2     //成员位置创建ComboPooledDataSource对象 3     private static ComboPooledDataSource dataSource = new ComboPooledDataSource(); 4      5     //使用静态代码块给ComboPooledDataSource设置4大数据量连接信息 6     static{ 7         try { 8             dataSource.setDriverClass("com.mysql.jdbc.Driver"); 9             dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mybase4");10             dataSource.setUser("root");11             dataSource.setPassword("root");12         } catch (Exception e) {13             throw new RuntimeException("设置连接信息失败!");14         }15     }16     17     //创建一个静态方法返回Connection对象18     public static Connection getConnection(){19         try {20             return dataSource.getConnection();21         } catch (SQLException e) {22             throw new RuntimeException("获取数据库连接信息失败!");23         }24     }25     26     //定义一个释放资源的方法27         public static void close(ResultSet rs,Statement stat,Connection conn){28             if(rs!=null){29                 try {30                     rs.close();31                 } catch (SQLException e) {32                     e.printStackTrace();33                 }34             }35             if(stat !=null){36                 try {37                     stat.close();38                 } catch (SQLException e) {39                     e.printStackTrace();40                 }41             }42             if(conn != null){43                 try {44                     conn.close();45                 } catch (SQLException e) {46                     e.printStackTrace();47                 }48             }49         }50 }

Erstellen Sie eine C3P0-Toolklasse zum Lesen von XML-Konfigurationsdateien

 1 public class C3P0UtilsReadXML { 2     //成员位置创建ComboPooledDataSource对象 3     private static ComboPooledDataSource dataSource = new ComboPooledDataSource(); 4      5     //使用静态代码块给ComboPooledDataSource设置4大数据量连接信息 6     /*static{ 7         try { 8             dataSource.setDriverClass("com.mysql.jdbc.Driver"); 9             dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mybase4");10             dataSource.setUser("root");11             dataSource.setPassword("root");12         } catch (Exception e) {13             throw new RuntimeException("设置连接信息失败!");14         }15     }*/16     17     //创建一个返回ComboPooledDataSource的方法18     public static DataSource getDataSource(){19         return dataSource;20     }21     22     //创建一个静态方法返回Connection对象23     public static Connection getConnection(){24         try {25             return dataSource.getConnection();26         } catch (SQLException e) {27             throw new RuntimeException("获取数据库连接信息失败!");28         }29     }30     31     //定义一个释放资源的方法32         public static void close(ResultSet rs,Statement stat,Connection conn){33             if(rs!=null){34                 try {35                     rs.close();36                 } catch (SQLException e) {37                     e.printStackTrace();38                 }39             }40             if(stat !=null){41                 try {42                     stat.close();43                 } catch (SQLException e) {44                     e.printStackTrace();45                 }46             }47             if(conn != null){48                 try {49                     conn.close();50                 } catch (SQLException e) {51                     e.printStackTrace();52                 }53             }54         }55 }

DBCP-Verbindungspool

Toolklasse zum Erstellen eines DBCP-Verbindungspools
* Verbindungsspezifikationsschnittstelle:
* javax.sql.DataSource-Schnittstelle
* Implementierungsklasse des Schnittstellenobjekts
* BasicDataSource
* Überschreiben Sie die getConnection-Methode

 1 public class DBCPUtils { 2     //创建连接池的实现类对象 3     private static BasicDataSource dataSource = new BasicDataSource(); 4      5     //设置连接数据库的4大变量,使用BasicDataSource中的set方法设置 6     static{ 7         //设置注册的驱动信息 8         dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 9         //设置Url10         dataSource.setUrl("jdbc:mysql://localhost:3306/mybase4");11         //设置用户名12         dataSource.setUsername("root");13         //设置密码14         dataSource.setPassword("root");15         //可选信息16         //dataSource.setInitialSize(100);17         //dataSource.setMaxActive(1000);18     }19     20     //创建获取数据库连接对象的方法21     public static Connection getConnection(){22         try {23             return dataSource.getConnection();24         } catch (SQLException e) {25             throw new RuntimeException("获取数据库连接对象失败");26         }27     }28     29     //定义一个释放资源的方法30     public static void  close(ResultSet rs,Statement stat,Connection conn){31         if(rs!=null){32             try {33                 rs.close();34             } catch (SQLException e) {35                 e.printStackTrace();36             }37         }38         if(stat !=null){39             try {40                 stat.close();41             } catch (SQLException e) {42                 e.printStackTrace();43             }44         }45         if(conn != null){46             try {47                 conn.close();48             } catch (SQLException e) {49                 e.printStackTrace();50             }51         }52     }53 }

So lesen Sie die Konfigurationsdatei

 1 /* 2  * 创建DBCP连接池工具类 3  * 使用读取配置文件的方式 4  * DBCP中有一个工厂类BasicDataSourceFactory 5  * 工厂类中有一个静态方法 6  * static DataSource createDataSource(Properties prop) 7  * 此方法返回的就是DataSource接口的实现类对象BasicDataSource 8  * 
 9  * 创建Propertis集合+IO技术读取配置文件10  * 把配置文件传入BasicDataSourceFactory静态方法createDataSource中11  */12 public class DBCPUtilsReadConfig {13     //创建DataSource变量14     private static DataSource dataSource;15     16     static{17         try {18             //创建Propertis集合+IO技术读取配置文件19             //使用类加载器,扫描包下的文件20             InputStream is = DBCPUtilsReadConfig.class.getClassLoader()21                     .getResourceAsStream("dbcpconfig.properties");22             //创建Propertis集合23             Properties prop = new Properties();24             prop.load(is);25             //把配置文件传入BasicDataSourceFactory静态方法createDataSource中26             dataSource = BasicDataSourceFactory.createDataSource(prop);27         } catch (Exception e) {28             throw new RuntimeException("读取配置文件失败");29         }30     }31     32     //创建获取数据库连接对象的方法33     public static Connection getConnection(){34         try {35             return dataSource.getConnection();36         } catch (SQLException e) {37             throw new RuntimeException("获取数据库连接对象失败");38         }39     }40     41     //定义一个释放资源的方法42     public static void  close(ResultSet rs,Statement stat,Connection conn){43         if(rs!=null){44             try {45                 rs.close();46             } catch (SQLException e) {47                 e.printStackTrace();48             }49         }50         if(stat !=null){51             try {52                 stat.close();53             } catch (SQLException e) {54                 e.printStackTrace();55             }56         }57         if(conn != null){58             try {59                 conn.close();60             } catch (SQLException e) {61                 e.printStackTrace();62             }63         }64     }65 }


* Verwenden Sie die DBUtils-Toolklasse zum Hinzufügen, Löschen, Ändern und Überprüfen von Datenbanktabellen
* Funktion der DBUtils-Toolklasse: Vereinfachen Sie die JDBC-Entwicklung (6 Schritte)
*
* DBUtils hat 3 Kernklassen
* 1.QueryRunner: Verwenden Sie die Methoden in QueryRunner, um die Datenbank hinzuzufügen, zu löschen, zu ändern und abzufragen
* 2.DbUtils: Bietet eine große Anzahl von Methoden zum Freigeben von Ressourcen
* 3.ResultSetHandler Schnittstelle: Stellt Methoden zum Verarbeiten von Abfrageergebnissätzen bereit im Verbindungsobjekt
* QueryRunner(DataSource ds)-Konstruktormethode mit DataSource-Datenbankverbindungspool
* Beim Aufrufen von Aktualisierungs- und Abfragemethoden ruft QueryRunner automatisch das Datenbankverbindungsobjekt aus dem DataSource-Implementierungsklassenobjekt ab und kehrt automatisch zurück it after use
* Mitgliedsmethode:
* Mitgliedsmethoden ausführen, die Ergänzungen, Löschungen und Änderungen durchführen
* int update(Connection conn, String sql, Object... params) SQL, das zum Durchführen von Ergänzungen, Löschungen verwendet wird und Änderungen
* int update(String sql, Object... params) SQL, das zum Durchführen von Hinzufügungen, Löschungen und Änderungen verwendet wird
* Parameter:
* Verbindungsverbindung: Datenbankverbindungsobjekt
* String sql: gespleißte SQL-Anweisung, Sie können ? placeholder
* Object... params :?Für die tatsächlichen Parameter des Platzhalters können Sie Object[]
* Return value:
* int: The verwenden Anzahl der ausgeführten gültigen Zeilen
* Mitgliedsmethode zum Ausführen der Abfrage
* rsh, Object... params)
* < T> kann verwendet werden? Platzhalter
* Object... params:? tatsächliche Parameter des Platzhalters, Sie können Object[]
verwenden * ResultSetHandler wird verwendet, um den Ergebnissatz nach der Abfrage zu speichern 9 Implementierungsklassenobjekte
* Rückgabewert:
* T: übergeben Die ResultSetHandler-Implementierungsklassen sind unterschiedlich und die zurückgegebenen Ergebnismengen sind auch unterschiedlich Der entsprechende Typ wird zurückgegeben.






Verwenden Sie neun Abfragemethoden für QueryRunner, um Datenbanktabellen abzufragen


 1 public class Demo01DBUtils { 2     //创建QueryRunner对象,构造方法中传入连接池的实现类对象 3     QueryRunner qr = new QueryRunner(C3P0UtilsReadXML.getDataSource()); 4      5     /* 6      * 使用QueryRunner,对数据库表进行删除数据 7      */ 8     @Test 9     public void delete(){10         try {11             //拼接增加的sql语句12             String sql = "DELETE FROM category WHERE cid=?";13             //调用QueryRunner中update方法执行sql语句14             //创建对象数据,储存?占位符的实际参数15             //Object[] parmars = {"洗",10};16             int row = qr.update(sql, 7);17             System.out.println(row);18         } catch (Exception e) {19             System.out.println(e);20         }21     }22     23     /*24      * 使用QueryRunner,对数据库表进行修改数据25      */26     @Test27     public void update(){28         try {29             //拼接增加的sql语句30             String sql = "UPDATE category SET cname=? WHERE cid=?";31             //调用QueryRunner中update方法执行sql语句32             //创建对象数据,储存?占位符的实际参数33             Object[] parmars = {"洗",10};34             int row = qr.update(sql, parmars);35             System.out.println(row);36         } catch (Exception e) {37             System.out.println(e);38         }39     }40     41     /*42      * 使用QueryRunner,对数据库表进行增加(插入)数据43      */44     @Test45     public void insert(){46         try {47             //拼接增加的sql语句48             String sql = "INSERT INTO category(cname) VALUES(?)";49             //调用QueryRunner中update方法执行sql语句50             int row = qr.update(sql, "玩具");51             System.out.println(row);52         } catch (Exception e) {53             System.out.println(e);54         }55     }56 }

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den C3P0-Verbindungspool. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Einführung in MySQLNächster Artikel:Einführung in MySQL