Java 项目采用JDBC连接数据库的常用方式

一、jdbc连接数据库
<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中出现异常退出。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值