天天看點

傳智播客學習筆記4.20

傳智播客學習筆記4.20

cmd指令行中亂碼問題:

mysql用戶端輸入:

set names 'gb2312';

通知mysql采用gb2312處理字元

存儲過程、JDBC2.0以後的幾個新特性

1.存儲過程

CallableStatement(從PreperedStatement擴充來)

cs = connection.prepareCall(“{call psname(?,?,?)}”);

2.幾個有用的特性

1) Statement.getGeneratedKeys()

Statement st =

connection.createStatement(Statement.RETURN_GENERATED_KEYS);

st.executeUpdate();

ResultSet rs = st.getGeneratedKeys();

rs.getInt();

2) 批量處理(1000次插入對比,mysql中優勢不明顯)

PrepareStatement.addBatch();

PreparedStatement.executeBatch();

3) 可滾動的結果集(性能一般,不推薦)

Statement st =

connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

                     ResultSet.CONCUR_UPDATABLE);

ResultSet rs = st.executeQuery(sql);

rs.beforeFirst(); rs.afterLast();

 rs.first(); rs.isFirst();

資料源和連接配接池

1. DataSource用來取代DriverManager來擷取Connection;

2. 通過DataSource獲得Connection速度很快;

3. 通過DataSource獲得的Connection都是已經被包裹過的(不是驅動原來的連接配接),他的close方法已經被修改。

4. 一般DataSource内部會用一個連接配接池來緩存Connection,這樣可以大幅度提高資料庫的通路速度;

5. 連接配接池可以了解成一個能夠存放Connection的Collection;

6. 我們的程式隻和DataSource打交道,不會直接通路連接配接池;

7. 實作一個簡單的資料源;

8. 常用的開源實作DBCP

使用DBCP必須用的三個包:commons-dbcp-1.2.1.jar, commons-pool-1.2.jar, commons-collections-3.1.jar。

Java API: BasicDataSourceFactory.createDataSource(properties);

DBCP

C3P0

自行實作資料源連接配接池:

context.xml檔案需要放在METF-INF目錄中

資料源配置文檔:

apache-tomcat-6.0.16/webapps/docs/jndi-datasource-examples-howto.html

JNDI:java命名目錄接口

另一個開源的資料源:c3p0

重點掌握:

Connection(資料源、連接配接池,通過配置檔案控制連接配接字元串)

preparedStatement CallableStatement

ResultSet(分頁)

小工具:

dbutil

觸發器

1. DatabaseMetaData

DatabaseMetaData meta = connection.getMetaData();

通過DatabaseMetaData可以獲得資料庫相關的資訊如:資料庫版本、資料庫名、資料庫廠商資訊、是否支援事務、是否支援某種事務隔離級别,是否支援滾動結果集等。

2. ResultSetMetaData

ResultSetMetaData meta = rs.getMetaData();

通過ResultSetMetaData可以獲得結果有幾列、各列名、各列别名、各列類型等。

發現傳智的老師都比較追求完美,即使是示範的小程式也盡量做得完善些。這點很是讓人佩服