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

来源:互联网 发布:xampp linux 编辑:程序博客网 时间:2024/05/17 20:33
一、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 configjdbc.driver = com.mysql.jdbc.Driverjdbc.url = jdbc:mysql://localhost:3306/work?useUnicode=true&characterEncoding=utf-8jdbc.username = rootjdbc.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 configjdbc.driver = com.mysql.jdbc.Driverjdbc.url = jdbc:mysql://localhost:3306/work?useUnicode=true&characterEncoding=utf-8jdbc.username = rootjdbc.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中出现异常退出。


0 1
原创粉丝点击