java规范之JDBC

JDBC(java DataBase Connectivity),关于概念这里不再赘述,重点学习java的链接数据库的具体操作。

从大的方面说,JDBC提供了两种访问数据库的方式:两层和添加一层WebLogicServer。
两层的方式有:
1.JDBC_ODBC Bridge (2层)基于原有的odbc的数据库连接;
2.JDBC-Native Bridge(2层) 基于本地的,需要在本地安装客户端;

3.All Java JDBC Driver:(2层)Java的原生态连接,不需要安装客户端,跨平台

三层的方式有:

4.JDBC-Net Bridge:(3层)基于NetWork Server(WLS),屏蔽平台,往往先连接到Weblogic
然后再调用2层的方法来连接

一、使用JDBC直接访问数据库:

import java.sql.*;
try{
	//连接的数据库类型
	class.forName("com.pointbase.jdbc.jdbcUniversalDriver");
	
	//数据库的实例
	Connection con = DriverManager.getConnect("jdbc:pointbase://server:port/MyDataBase");

	//建立会话
	Statement stmt = con.createStatement();
	
	//相关查询语句和对查询结果的操作
	String sql="SELECT * FROM MYTABLE";
	ResultsSet res = stmt.executeQuery(sql);
	while(res.next()){
		String col1 = res.getString("MYCOLUMN1");
		int    col2 = res.getInt("MYCOLUMN2");
	
		……
	}
	


}catch(Exception e){


}


二、使用datasource连接数据库:

import java.sql.*;
import javax.sql.*;
import javax.naming.*;

try{
	Context ctx = new InitialContext();
	DataSource ds =(DataSource)ctx.lookup("TestDataSource");
	Connection con = ds.getConnection();
	Statement stmt =  con.createStatement();
	String sql ="SLEECT * FROM MYTABLE";	
	ResultSet res = stmt.executeQuery(sql);
	While(res.next()){
		String col1 = res.getString("MYCOLUM1");
		.........
	}


}catch(Exception e){


}

   使用datasource连接数据库的一个好处是,引用了jndi目录查找服务,可以事先在容器中配置已经连接的实例,这样可以直接使用,相当于预先实例化,相对于jdbc效率要高一些。

  使用多层的访问方法,必须至少配置一个连接池(Connection Pool)和一个数据源(DataSource),连接数由netserver来管理,如:最大连接数、排队等。


使用数据源和连接池有什么好处呢?

数据源:

1.DataSource客户端通过jndi的lookup方法找到一个DataSource,
2.DataSource从ConnectionPool中查找空闲的链接,返回给客户端
3.可以配置是否支持分布式事务

连接池:
1.消除频繁建立连接所需的负载
2.管理数据库连接
3.提供可共享、安全的链接
4.初始化时和最大的链接数目,每次现有连接使用完后建立新连接的个数


四、Prepared Statement和Statement的比对:

使用Prepared Statement(批量,预编译,效率会高些)比Statement优越的地方是:Prepared Statement 批量,预编译,效率会高些。

Statement示例:

Statement stmt =con.createStatement();
String sql = "SELECT * FROM MYTABLE";
ResultSet res = stmt.excuteQuery(sql);	
PreparedStatement示例:预编译
String sql="SELECT * FROM MYTABLE WHERE COL1=? AND COL2=?";
PreparedStatement pStatement =con.prepareStatement(sql);

pStatement.setString(1,searchVariableString);
pStatement.setInt(2,searchVariableInt);
ResultSet rs  = pStatement.ExecuteQuery();

总结:

在java中提供了多种对数据库的连接方式,满足不同的机器环境需求,当然这对跨平台是很重要的。同样的缓冲池的思想也充分的使用,提高了性能,这里感觉比较新颖的是PreparedStatement预编译的使用。



注:这里没有对Connection Pools和datasource的配置做说明。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值