一、jdbc连接数据库
常用JDBC连接数据库方法总结如下:
3 proxool
proxool这个连接池可能用到的人比较少,但也有一定知名度,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。
使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性有一定问题,有一个需要长时间跑批的任务场景任务,同样的代码
在另外2个开源连接池中成功结束,但在proxool中出现异常退出。
<span style="font-size:18px;"> try{
//创建连接URL
String url ="jdbc:odbc:wombat";
//建立连接
Connection con =DriverManager.getConnection(url,"usre",";password");
//创建语句
Statement stmt =con.createStatement();
//执行查询,返回结果集
ResultSet rs =stmt.executeQuery("SELECT a,b,c,d,key FROM Table1");
stmt.close();
con.close();
}
catch(Exception ex){
ex.printStackTrace();
}</span>
常用JDBC连接数据库方法总结如下:
1、DB2
Class.forName("Com.ibm.db2.jdbc.net.DB2Driver");
Stringurl="jdbc:db2://dburl:port/DBname"
cn = DriverManager.getConnection( url, userName, password);
2、Microsoft SQLServer(microsoft)
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver");
cn = DriverManager.getConnection("jdbc:microsoft:sqlserver://DBServerIP:1433;databaseName=master",userName, password );
3、Sybase(jconn2.jar)
Class.forName( "com.sybase.jdbc2.jdbc.SybDriver" );
cn = DriverManager.getConnection("jdbc:sybase:Tds:DBServerIP:2638",userName, password);
4、MySQL(mm.mysql-3.0.2-bin.jar)
Class.forName( "org.gjt.mm.mysql.Driver" );
cn = DriverManager.getConnection("jdbc:mysql://DBServerIP:3306/myDatabaseName",userName, password );
5、PostgreSQL(pgjdbc2.jar)
Class.forName( "org.postgresql.Driver" );
cn = DriverManager.getConnection("jdbc:postgresql://DBServerIP/myDatabaseName",userName, password );
6、Oracle(classes12.jar)
Class.forName( "oracle.jdbc.driver.OracleDriver" );
cn = DriverManager.getConnection("jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL",userName, password );
7、ODBC
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
Connection cn = DriverManager.getConnection("jdbc:odbc:" + sDsn, userName,password );
二、采用数据库连接池(JNDI)
现在大多数项目都采用数据库连接池。除了提高网络吞吐量,增加系统性能外;还有一个,封装数据库操作,有效进行封装以后。后面的程序编写就相当简单容易了。
连接池,也出现两种分支,一是直接使用容器提供的连接池,一是自己编写连接池。
常见开源连接池
1 dbcp
dbcp可能是使用最多的开源连接池,原因大概是因为配置方便,而且很多开源和tomcat应用例子都是使用的这个连接池吧。
这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。这个连接池的配置参见附件压缩包中的:dbcp.xml
使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性还是可以,不过速度稍慢,在大并发量的压力下稳定性
有所下降,此外不提供连接池监控
dbcp连接池配置实例
jdbc.properties配置文件
<span style="font-size:18px;">#jdbc c3p0 config
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/work?useUnicode=true&characterEncoding=utf-8
jdbc.username = root
jdbc.password = 12345</span>
spring.xml配置文件
<span style="font-size:18px;"><strong><span style="font-family:FangSong_GB2312;font-size:14px;"><!-- 载入属性文件 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 以下为开源数据库连接池配置 username和password一般要注释掉,使用密码加密-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="referredDriver" />
<!---mysql:com.mysql.jdbc.Driver; SQLServerV2005+:com.microsoft.sqlserver.jdbc.SQLServerDriver->
<property name="url" value="referredDBURL" />
<!--
mysqlURL:jdbc:mysql://localhost:3306/myuser","root" ,"root";
SQLServerV2005+URL:jdbc:sqlserver://localhost:1433;databaseName=数据库名称
-->
<property name="username" value="DBLoginUser" />
<property name="password" value="DBLoginUserPassword" />
<property name="initialSize" value="5" />
<property name="maxIdle" value="30" />
<property name="minIdle" value="5" />
<property name="maxActive" value="15" />
<property name="removeAbandoned" value="true" />
<property name="removeAbandonedTimeout" value="300" /><!-- 自动回收超时时间(以秒数为单位) -->
<property name="maxWait" value="3000" /><!--超时等待时间以毫秒为单位-->
<property name="defaultAutoCommit" value="false" />
<property name="validationQuery">
<value>SELECT 1</value>
</property>
<property name="testOnBorrow">
<value>true</value>
</property>
<property name="testOnReturn">
<value>false</value>
</property>
</bean>
2 c3p0
c3p0是另外一个开源的连接池,在业界也是比较有名的,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。
使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性相当不错,在大并发量的压力下稳定性也有一定保证,此外不提供连接池监控。
c3p0连接池配置实例
jdbc.properties
<span style="font-size:18px;">#jdbc c3p0 config
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/work?useUnicode=true&characterEncoding=utf-8
jdbc.username = root
jdbc.password = 12345</span>
spring.xml
<span style="font-size:18px;"><!-- 加载配置文件 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 配置数据源 c3p0 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${jdbc.driver}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- 请求超时时间 -->
<property name="checkoutTimeout" value="30000" />
<!-- 每60秒检查所有连接池中的空闲连接。默认值: 0,不检查 -->
<property name="idleConnectionTestPeriod" value="30" />
<!-- 连接数据库连接池最大空闲时间 -->
<property name="maxIdleTime" value="30" />
<!-- 连接池初始化连接数 -->
<property name="initialPoolSize" value="5" />
<property name="minPoolSize" value="5" />
<property name="maxPoolSize" value="20" />
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值: 3 -->
<property name="acquireIncrement" value="5" />
</bean></span>
3 proxool
proxool这个连接池可能用到的人比较少,但也有一定知名度,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。
使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性有一定问题,有一个需要长时间跑批的任务场景任务,同样的代码
在另外2个开源连接池中成功结束,但在proxool中出现异常退出。