Java 通用数据库连接类

Java 通用数据库连接类,第1张

你是想要一个还是想怎么./..

package com.lovo.epet.dao

import java.io.IOException

import java.io.InputStream

import java.sql.Connection

import java.sql.DriverManager

import java.sql.PreparedStatement

import java.sql.ResultSet

import java.sql.SQLException

import java.util.Properties

/**

* 数据库连接

*

* @author Administrator

*

*/

public class BaseDao {

/** 连接对象 */

protected Connection con

/** 预编译 */

protected PreparedStatement ps

/** 结果集 */

protected ResultSet rs

/** 资源文件对象 */

private static Properties pro = new Properties()

/**

* 静态代码块,此块在第一次新建类对象前优先加载在类模板中,只执行一次并且返回的pro静态属性一直保存直到程序关闭

*

*/

static {

/** 得到文件的字节流 */

InputStream in = BaseDao.class.getResourceAsStream("/dao.txt")

try {

pro.load(in)

} catch (IOException e) {

e.printStackTrace()

}

}

/**

* 连接数据库,获取Connection对象

*

* @throws ClassNotFoundException

* 没有找到类文件

* @throws SQLException

* 数据库访问异常 已测试通过

*/

protected void setConnection() {

try {

Class.forName(pro.getProperty("driver"))

this.con = DriverManager.getConnection(pro.getProperty("url"), pro

.getProperty("userName"), pro.getProperty("pwd"))

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

}

/**

* 关闭数据库连接

*

* @throws SQLException

* 数据库异常

*

*/

protected void close() {

try {

if (rs != null) {

rs.close()

}

if (ps != null) {

ps.close()

}

if (con != null) {

con.close()

}

} catch (Exception e) {

e.printStackTrace()

}

}

}

txt文件内容。...也可以使用propertes文件..

driver=net.sourceforge.jtds.jdbc.Driver

url=jdbc:jtds:sqlserver://localhost:1433/epet

userName=sa

pwd=

这个是个连接的父类。。你的dao继承与他就行了..

只需要改配置文件里面的连接这些就行了

1:引入java.sql数据包

import java.sql.*

2:加载JDBC驱动程序

Class.forName(JDBC驱动包的名字).newInstance()

3:产生Connection

如已成功加载JDBC驱动程序,就可以利用加载的驱动程序连接数据库

Connection con=DriverManager.getConnection(URL,UserName,Password)

URL: JDBC:(subprotocol):(subname)

subprotocol:子协议指定连接何种数据库或用什么方式连接数据库

subname:确立一个连接,可以是一个数据源名,也可是指向一个网上数据库.

4:各种连接例:

(1) MySQL数据库

String Dirver="com.mysql.jdbc.Driver"//驱动程序

String URL="jdbc:mysql://localhost:3306/db_name" //连接的URL,db_name为数据库名

String UserName="username" //用户名

String Password="password" //密码

Class.forName(Driver).newInstance() //加载数据库驱动

connection con=DriverManager.getConnection(URL,Username,Password)

(2) Microsoft SQL server 数据库

String Driver="com.microsoft.jdbc.sqlserver.SQLServerDriver" //驱动程序

String URL="jdbc:microsoft:sqlserver://localhost:1433DatabaseName=db_name"

//连接的URL,db_name为数据库

String UserName="username" //用户名

String Password="password" //密码

Class.forName(Driver).newInstance()

connection con=DriverManager.getConnection(URL,Username,Password)

(3) sybase 数据库

String Driver="com.sybase.jdbc.sybDriver" //驱动程序

String URL="jdbc:Sybase://localhost:5007/db_name"//连接的URL,db_name为数据库

String UserName="username" //用户名

String Password="password" //密码

Class.forName(Driver).newInstance()

connection con=DriverManager.getConnection(URL,Username,Password)

(4) Oracle(用thin模式)数据库

String Driver="oracle.jdbc.driver.OracleDriver" //驱动程序

String URL="jdbc:oracle:thin://localhost:1521:orcl"

//连接的URL,orcl为数据库的SID

String UserName="username" //用户名

String Password="password" //密码

Class.forName(Driver).newInstance()

connection con=DriverManager.getConnection(URL,Username,Password)

(5) 利用JDBC-ODBC桥连接

String Driver="sun.jdbc.odbc.JdbcodbcDriver" //驱动程序

String URL="jdbc:odbc:dbsource"//连接的URL,dbsource为数据源名

String UserName="username" //用户名

String Password="password" //密码

Class.forName(Driver).newInstance()

connection con=DriverManager.getConnection(URL,Username,Password)

这是老师发给我们的资料,共享给你:

Type 1: jdbc-odbc桥

Jdbc-odbc 桥 是sun公司提供的,是jdk提供的的标准api. 这种类型的驱动实际是把所有 jdbc的调用传递给odbc ,再由odbc调用本地数据库驱动代码.( 本地数据库驱动代码是指 由数据库厂商提供的数据库 *** 作二进制代码库,例如在oracle for windows中就是oci dll 文 件)

jdbc-odbc桥|odbc|厂商DB代码---数据库Server

只要本地机装有相关的odbc驱动那么采用jdbc-odbc桥几乎可以访问所有的数据库,jdbc- odbc方法对于客户端已经具备odbc driver的应用还是可行的.

但是,由于jdbc-odbc先调用 odbc再由odbc去调用本地数据库接口访问数据库.所以,执行效率比较低,对于那些大数据量 存取的应用是不适合的.而且,这种方法要求客户端必须安装odbc 驱动,所以对于基于 internet ,intranet的应用也是不合适的.因为,你不可能要求所有客户都能找到odbc driver.

=====一般ACCESS用到的比较多,初学者用。实际项目是不用的。

Type 2: 本地Api驱动

本地api驱动直接把jdbc调用转变为数据库的标准调用再去访问数据库.

这种方法需要本地 数据库驱动代码. 本地api驱动|厂商DB代码---数据库Server这种驱动比起jdbc-odbc桥执行效率大大提高了.但是,它仍然需要在客户端加载数据库厂商 提供的代码库.这样就不适合基于internet的应用.并且,他的执行效率比起3,4型的jdbc驱动 还是不够高.

Type3:网络协议驱动 这种驱动实际上是根据我们熟悉的三层结构建立的. jdbc先把对数局库的访问请求传递给网 络上的中间件服务器. 中间件服务器再把请求翻译为符合数据库规范的调用,再把这种调用 传给数据库服务器.如果中间件服务器也是用java开法的,那么在在中间层也可以使用1,2型 jdbc驱动程序作为访问数据库的方法. 网络协议驱动--中间件服务器---数据库Server

由于这种驱动是基于server的.所以,它不需要在客户端加载数据库厂商提供的代码库.而且 他在执行效率和可升级性方面是比较好的.因为大部分功能实现都在server端,所以这种驱动 可以设计的很小,可以非常快速的加载到内存中. 但是,这种驱动在中间件层仍然需要有配置 其它数据库驱动程序,并且由于多了一个中间层传递数据,它的执行效率还不是最好.

Type4 纯JAVA驱动

这种驱动直接把jdbc调用转换为符合相关数据库系统规范的请求.由于4型驱动写的应用可 以直接和数据库服务器通讯.这种类型的驱动完全由java实现,因此实现了平台独立性. 本地协议驱动---------数据库Server

由于这种驱动不需要先把jdbc的调用传给odbc或本地数据库接口或者是中间层服务器.所 以它的执行效率是非常高的.而且,它根本不需要在客户端或服务器端装载任何的软件或驱动. 这种驱动程序可以动态的被下载.但是对于不同的数据库需要下载不同的驱动程序.

以上对四种类型的jdbc驱动做了一个说明.那么它们适合那种类型的应用开发呢?

Jdbc-odbc桥由于它的执行效率不高,更适合做为开发应用时的一种过度方案,或着对于初学 者了解jdbc编程也较适用. 对于那些需要大数据量 *** 作的应用程序则应该考虑2,3,4型驱动.在intranet方面的应用可以 考虑2型驱动,但是由于3,4型驱动在执行效率上比2型驱动有着明显的优势,而且目前开发 的趋势是使用纯java.所以3,4型驱动也可以作为考虑对象. 至于基于internet方面的应用就只有考虑3,4型驱动了. 因为3型驱动可以把多种数据库驱 动都配置在中间层服务器.所以3型驱动最适合那种需要同时连接多个不同种类的数据库, 并且对并发连接要求高的应用. 4型驱动则适合那些连接单一数据库的工作组应用。

现在是纯java 开发,所以一般都用type4的jdbc driver。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10011837.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存