java连接数据库的几种方式(转)
来源:互联网 发布:java常见项目 知乎 编辑:程序博客网 时间:2024/06/12 18:30
JDBC硬编码连接
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.SQLException;
- public class JDBCConn {
- public static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
- public static final String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=books";
- public static final String USER = "sa";
- public static final String PWD = "ok";
- private Connection conn = null;
- public Connection getConn() {
- try {
- Class.forName(DRIVER);
- conn = DriverManager.getConnection(URL,USER,PWD);
- } catch (ClassNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return conn;
- }
- }
读取propperties配置文件连接
1.创建读取配置文件的类
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.Properties;
- /**
- * 单列类:获取属性文件
- * @author macau
- */
- public class Env extends Properties {
- /**
- * 构造方法
- */
- private Env() {
- InputStream is = (InputStream) this.getClass().getResourceAsStream(
- "/db.properties");//创建输出流
- try {
- load(is);//读取流
- is.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- private static Env instance;//当前类实例
- /**
- * 获得当前实例
- * @return
- */
- public static Env getInstance() {
- if (instance == null) {
- makeInstance();
- }
- return instance;
- }
- /**
- * 创建当前类实例
- */
- private static synchronized void makeInstance() {
- if (instance == null) {
- instance = new Env();
- }
- }
- }
2.通过读取配置文件的类获取数据库连接参数
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.SQLException;
- public class PropConn {
- private String driver = Env.getInstance().getProperty("driver");
- private String url = Env.getInstance().getProperty("url");
- private String user = Env.getInstance().getProperty("user");
- private String pwd = Env.getInstance().getProperty("pwd");
- private Connection conn = null;
- public Connection getConn(){
- try {
- Class.forName(driver);
- conn = DriverManager.getConnection(url,user,pwd);
- } catch (ClassNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return conn;
- }
- }
配置JNDI获取
使用JNDI,数据库连接,数据池和连接的管理都在J2EE容器来配置和管理,程序员只需要对这些配置和管理进行引用即可。
在应用服务器连接池里进行数据库连接以及对应的jndi配置,配置好的JNDI的名称为 jdbc/myds
接下来在spring利用JNDI配置数据源
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
1.在Tomcat安装目录的conf目录下的context.xml文件的<Context/>标记中添加配置
- <Resource name="jdbc/books" auth="Container" type="javax.sql.DataSource"
- maxActive="1000" maxIdel="30" maxWait="10000"
- username="sa" password="ok"
- driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
- url="jdbc:sqlserver://localhost:1433;DatabaseName=books" />
2.编码获取数据库连接
- import java.sql.Connection;
- import java.sql.SQLException;
- import javax.naming.Context;
- import javax.naming.InitialContext;
- import javax.naming.NamingException;
- import javax.sql.DataSource;
- public class JNDIConn {
- private Connection conn = null;
- public Connection getConn() {
- try {
- Context context = new InitialContext();
- DataSource source = (DataSource) context
- .lookup("java:comp/env/jdbc/books");
- conn = source.getConnection();
- } catch (NamingException e) {
- e.printStackTrace();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return conn;
- }
- }
连接池
1. 目前开源的连接池有
Proxool DBCP DBPool 等
1) dbcp
dbcp可能是使用最多的开源连接池,原因大概是因为配置方便,而且很多开源和tomcat应用例子都是使用的这个连接池吧。
这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。这个连接池的配置参见附件压缩包中的:dbcp.xml
使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性还是可以,不过速度稍慢,在大并发量的压力下稳定性
有所下降,此外不提供连接池监控
2)proxool
proxool这个连接池可能用到的人比较少,但也有一定知名度,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。
这个连接池的配置参见附件压缩包中的:proxool.xml。
使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性有一定问题,有一个需要长时间跑批的任务场景任务,同样的代码
在另外2个开源连接池中成功结束,但在proxool中出现异常退出。
但是proxool有一个优势--连接池监控,这是个很诱人的东西,大概的配置方式就是在web.xml中添加如下定义:
并在应用启动后访问:http://localhost:8080/myapp/admin这个url即可监控
不过proxool本身的包在监测使用中会有编码问题,附件中有一个
解决此问题的包,参见附件压缩包中的:proxool-0.9.0RC3.jar。另外需要jdk1.5以上的环境。
2. 商业连接池
weblogic的连接池
websphere的连接池
- java连接数据库的几种方式
- java连接数据库的几种方式
- Java连接数据库的几种方式
- java连接数据库的几种方式(转)
- java使用JDBC连接数据库的几种方式
- java中连接MySQL数据库的几种方式
- 数据库的几种连接方式
- JSP连接数据库的几种方式
- ADO 连接数据库的几种方式
- Python连接数据库的几种方式
- TRIP数据库的几种连接方式
- Mysql数据库的几种连接方式
- Mobile连接数据库的几种方式(转)
- java连接Hive的几种方式
- Java 连接数据库的几种方法
- Java项目中连接数据库的几种方式和范例
- 连接数据库的的几种方式(网页)
- 用PL/SQL的连接数据库的几种方式
- strcpy函数用法详细解释和其相关问题
- Jquery 查询
- Android: android source code online
- 编译 Hadoop-append 用于Hbase
- 关于银联支付协议的一点理解
- java连接数据库的几种方式(转)
- Jakarta Commons HttpClient 学习笔记
- Android学习
- 当前虚拟化技术
- [网摘]android adb shell 命令大全
- iis中的asp.net程序无法访问oracle,提示“未找到oracle客户端和网络组件 ……”
- ORACLE SQL性能优化系列 (十一)
- Spring Security
- 关于j2me中Font的用法