国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java學習筆記—c3p0連接池與元數據分析(42)

2019-11-14 23:51:30
字體:
來源:轉載
供稿:網友
java學習筆記—c3p0連接池與元數據分析(42)第一步:導入c3p0包

第二步:在classpath目錄下,創建一個c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?>

<c3p0-config>

<!-- 默認配置,只可以出現一次 -->

<default-config>

<!-- 連接超時設置30秒 -->

<PRoperty name="checkoutTimeout">30000</property>

<!-- 30秒檢查一次connection的空閑 -->

<property name="idleConnectionTestPeriod">30</property>

<!--初始化的池大小 -->

<property name="initialPoolSize">2</property>

<!-- 最多的一個connection空閑時間 -->

<property name="maxIdleTime">30</property>

<!-- 最多可以有多少個連接connection -->

<property name="maxPoolSize">10</property>

<!-- 最少的池中有幾個連接 -->

<property name="minPoolSize">2</property>

<!-- 批處理的語句

-->

<property name="maxStatements">50</property>

<!-- 每次增長幾個連接 -->

<property name="acquireIncrement">3</property>

<property name="driverClass">com.MySQL.jdbc.Driver</property>

<property name="jdbcUrl">

<![CDATA[jdbc:mysql://127.0.0.1:3306/db909?useUnicode=true&characterEncoding=UTF-8]]>

</property>

<property name="user">root</property>

<property name="passWord">1234</property>

</default-config>

</c3p0-config>

第三步:創建工廠類獲取這個連接

package cn.itcast.utils;

import java.sql.Connection;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class DataSourceUtils {

private static DataSource ds;

static{

ds = //默認的讀取c3p0-config.xml中默認配置

new ComboPooledDataSource();

}

public static DataSource getDatasSource(){

return ds;

}

public static Connection getConn(){

Connection con = null;

try{

con = ds.getConnection();//每一次從ds中獲取一個新的連接

}catch(Exception e){

e.printStackTrace();

}

return con;

}

}

ComboPooledDataSource有三個構造:

沒有參數的.

接收一個boolean

默認的情況下,為true,即所有connection.autoCommit屬性為true.

接收一個字符串的

在一個c3p0-config.xml文件中中,可以配置多種連接。 除了默認連接,其他都叫命名的連接。通過

<named-config name=”xxxx”/>

指定一個命名連接:

<!-- 默認配置,只可以出現一次 -->

<named-config name="db909">

<property name="checkoutTimeout">1000</property>

<property name="idleConnectionTestPeriod">30</property>

<property name="initialPoolSize">2</property>

<property name="maxIdleTime">30</property>

<property name="maxPoolSize">5</property>

<property name="minPoolSize">2</property>

<property name="maxStatements">50</property>

<property name="acquireIncrement">3</property>

<property name="driverClass">com.mysql.jdbc.Driver</property>

<property name="jdbcUrl">

<![CDATA[jdbc:mysql://127.0.0.1:3306/db909?useUnicode=true&characterEncoding=UTF-8]]>

</property>

<property name="user">root</property>

<property name="password">1234</property>

</named-config>

在代碼中通過命名的連接連接數據庫

ds =

new ComboPooledDataSource("db909");

總結:

C3p0連接池,只有當用戶獲取連接時,才會包裝Connection。

元數據分析

元數據,是指僅擁有Connection一個對象的情況下,分析得出數據庫的所有信息。

DataBaseMetadate - 說明數據庫的信息。

ResultSetMetadate - 說明數據結果的類型信息的。核心。

如果要進行元數據分析,就必須要使用statement,preparedstatement.

List<Map> list = run.query(“select * from users”,new MapListHandler());

[{id=”U001”,Name=”Jack”,pwd=”ddd”}&hellip;.]

List<Bean> list = run.query(“select * from users”,new BeanListHanderl<User>(User.class));

[User=[id=dd],,,,,]

將某個指定的數據庫中的所有表及數據導出到Excel中.

CREATE VIEW uc AS

SELECT u.name AS uname,c.name AS cname

FROM users u INNER JOIN contacts c ON u.id=c.uid;

1、用databasemetadate分析數據庫的數據

public void dbm() throws Exception{

Connection con = DataSourceUtils.getConn();

DatabaseMetaData dm= con.getMetaData();

// ResultSet rs= dm.getCatalogs();//獲取所有數據庫名稱

// while(rs.next()){

// String name = rs.getString("TABLE_CAT");

// System.err.println(name);

// }

// System.err.println("======================");

String dbName = dm.getDatabaseProductName();//數據庫名稱

System.err.println(dbName);

System.err.println("數據庫中有多少表:");

ResultSet rs2 = dm.getTables("db909","db909",null,new String[]{"TABLE"});

while(rs2.next()){

String tableName = rs2.getString("TABLE_NAME");

System.err.println(tableName);

}

}

2、用ResultSetMetadate分析結果集

此類是用來分析查詢的結果集:

分析有幾個列,列名,列的類型是什么?

@Test

public void rs2() throws Exception{

Connection con = DataSourceUtils.getConn();

//轉到exam數據庫中去

Statement st = con.createStatement();

st.execute("use exam");

//查詢

String sql = "select * from dept";

ResultSet rs = st.executeQuery(sql);

//對rs結果集進行分析

ResultSetMetaData rsmd=rs.getMetaData();

//獲取有幾個列

int cols = rsmd.getColumnCount();

System.err.println(cols);

//獲取每一個字段名

List<String> colNames = new ArrayList<String>();//保存所有的字段

for(int i=0;i<cols;i++){

String colName = rsmd.getColumnName(i+1);

System.err.print(colName+"/t/t");

colNames.add(colName);

}

System.err.println();

//獲取數據

while(rs.next()){

for(String nm:colNames){//遍歷一行中的所列

String val = rs.getString(nm);

System.err.print(val+"/t/t");

}

System.err.println();

}

con.close();

}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洪洞县| 扎赉特旗| 南丰县| 且末县| 浦江县| 东乌珠穆沁旗| 弥勒县| 汉川市| 安康市| 城固县| 丽江市| 东乡| 孟津县| 开平市| 兴业县| 射洪县| 博爱县| 镇赉县| 西和县| 灵宝市| 筠连县| 察哈| 铜山县| 日照市| 天全县| 湘乡市| 潮安县| 开江县| 威海市| 富锦市| 平陆县| 新宾| 马鞍山市| 肇庆市| 吴堡县| 潞城市| 五河县| 浙江省| 明光市| 广昌县| 沧源|