我们知道最简单的连接模式是DriverManager+Connection+Statement+ResultSet。
利用JDBC连接MySQL的方法很多,今晚看书的时候本来是想使用jndi.properties的方法来连接的,试来试去结果用poolman连接成功了,没有用到JNDI查询DataSource的方法,具体步骤如下:
1. 准备工作要做好,下载一个mysql-connector-java-5.1.10连接驱动的。
下载一个poolman包,里面包含很多需要用到的.jar,并加入到classpath中去。
jar poolman.jar (poolman的核心包);
jdbc2_0-stdext.jar (提供poolman连接池继承的JDBC接口);
jaxp.jar 和 crimson.jar (用于读XML配置文件);
log4j.jar (记日志的,具体还没怎么弄明白,导致了结果有一个小问题)。
写一个poolman.xml文件,写好后拖入到工程目录下,代码如下:
<?xml version="1.0" encoding="UTF-8" ?> - <poolman> - <datasource> <dbname>nba</dbname> <jndiName>default</jndiName> <driver>com.mysql.jdbc.Driver</driver> <url>jdbc:mysql://localhost:3306/hy</url> <username>root</username> <password>root</password> <poolPreparedStatements>false</poolPreparedStatements> <initialConnections>3</initialConnections> <minimumSize>0</minimumSize> <maximumSize>10</maximumSize> <maximumSoft>true</maximumSoft> <connectionTimeout>300</connectionTimeout> <userTimeout>0</userTimeout> <skimmerFrequency>300</skimmerFrequency> <shrinkBy>10</shrinkBy> <transactionTimeout>100</transactionTimeout> <cacheEnabled>false</cacheEnabled> <cacheSize>10</cacheSize> <cacheRefreshInterval>120</cacheRefreshInterval> <removeOnExceptions>false</removeOnExceptions> </datasource> </poolman>
<dbname> 池名
<jndiName> JNDI 名
<driver> 数据库驱动,如:com.mysql.jdbc.driver
<url> 数据库的连接地址
<username> <password>连接数据库的用户名及密码
<initialConnections> 池的初始连接数,默认值为1
<minimumSize> 最少连接数,默认值为0
<maximumSize> 最大的连接数,默认值为Inter.MAX_VALUE (2的31次方-1)
<connectionTimeout> 连接最长保留时间,默认值为1200秒
<userTimeout> 数据库库操作的最长时间,默认值20秒
<logFile> 日志文件地址,默认为system.out
<debugging> 是否为调试状态,默认为false
<cacheEnabled> 缓存resultse ,默认false
<cacheRefreshInterval> 缓存刷新间隔,默认:30秒
注:我的MySQL上建的数据库user=root,password=root;
2.准备工作结束,着手编写JAVA代码
package J1;
import java.sql.*;
import javax.sql.*;
import com.codestudio.sql.PoolMan;
public class testDataSource {
public static void main(String hy[]) {
Connection con = null;
try {
DataSource ds = PoolMan.findDataSource();//调用poolman.xml中的DataSource信息
con = ds.getConnection();//读取调取的信息
Statement stmt = con.createStatement();// 使用connection对象创建一个statement对象
ResultSet rs = stmt.executeQuery("select id,name,team from nba");
// 通过statement对象执行一个SQL select语句,并返回一个ResultSet
while (rs.next()) {// 利用ResultSet来逐步访问(或遍历)并检查返回的数据行
System.out.println(rs.getString("id") + "\t"
+ rs.getString("name") + "\t" + rs.getString("team"));
}
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
No log file indicated for hy, logging that pool's info to the console PoolMan Local Pool Deployer: Created JDBC Connection Pool named: hy 1 kobe Lakes 2 jordan bull 3 Iverson 76ers