通用数据库访问(jtds)

文档说明:实现读取xml配置文件,获得数据库Ip及数据库名、用户名、密码;使用jtds访问数据库;实现对多种数据库的访问。使用的时候将该包加入,然后仅需配置一下xml文件,在其他需要读取数据库的类中,创建DbConn2000或者DbConn2005或者DbConnSysbase的对象即可。
用到的文件:
DbConnJtds.java 使用jtds对数据库访问
DbConfig.java 读取DbConfig.xml,获取数据库的配置信息
DbConn2000.java 对2000数据库的访问,继承DbConnJtds.java,仅对sql2000数据库进行访问
DbConn2005.java 实现对2005访问,其他同上
DbConnSysbase.java 实现对sysbase访问,其他同上
DbConfig.xml 配置数据库信息的配置文件
备注:使用时,配置DbConfig.xml,修改对应的内容即可。通过DbConfig.java读取DbConfig.xml,获得数据库的配置;DbConn2000.java会通过DbConfig.java的对象获取对应的配置信息,实现对数据库的访问。

代码如下:
DbConfig.xml


<?xml version="1.0" encoding="utf-8" ?>
<data>
<sql2000>
<data-ip>192.168.1.76</data-ip>
<data-dbname>abc</data-dbname>
<data-username>sa</data-username>
<data-password></data-password>
</sql2000>
<sql2005>
<data-ip>192.168.1.72</data-ip>
<data-dbname>abc</data-dbname>
<data-username>sa</data-username>
<data-password></data-password>
</sql2005>
<sybase>
<data-ip>192.168.1.73</data-ip>
<data-dbname>abc</data-dbname>
<data-username>sa</data-username>
<data-password></data-password>
</sybase>
</data>


DbConnJtds.java

package com.fenye;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DbConnJtds {
private String url="jdbc:jtds:sqlserver://";
private String username="";
private String psw="";
private Connection conn=null;
private ResultSet rs=null;
private PreparedStatement pstmt=null;

//构造方法,根据传入的数据库IP,数据库名,用户名,密码,初始化内部变量
public DbConnJtds(String ip,String dbport,String dbname,String username,String psw){
url+=ip;
url=url+":"+dbport+"/"+dbname;
this.username=username;
this.psw=psw;
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//获取数据库连接,返回连接对象
public Connection getConn(){
try {
conn=DriverManager.getConnection(url,username,psw);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(conn!=null){
System.out.println("连接数据库成功!");
}
else{
System.out.println("连接数据库失败!");
}
return conn;
}
//执行select语句,数据查询,返回结果集
public ResultSet executeQuery(String strsql){
conn=this.getConn();
try {
pstmt = conn.prepareStatement(strsql);
rs=pstmt.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rs;
}
//执行delete/insert/update语句,数据变更,返回执行是否成功
public boolean execute(String strsql){
conn=this.getConn();
boolean isok=false;
try {
pstmt=conn.prepareStatement(strsql);
isok=pstmt.execute();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return isok;
}
//关闭数据库连接
public void closeConn(){
if(conn!=null)
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//关闭PreparedStatement
public void closePstmt(){
if(pstmt!=null)
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//关闭ResultSet
public void closeRs(){
if(rs!=null)
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//完全释放数据库资源
public void closeAll(){
this.closeRs();
this.closePstmt();
this.closeConn();
}
}


DbConfig.java

package com.fenye;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

public class DbConfig {
private String ip="";
private String dbport="";
private String dbname="";
private String username="";
private String psw="";
public DbConfig(String dbType){ //根据传入的dbType,判断数据库类型,获取该数据库类型的配置信息
SAXBuilder builder=new SAXBuilder();
String xmlPath="/DbConfig.xml";
try {
InputStream input=this.getClass().getResourceAsStream(xmlPath);
Document doc=builder.build(input);
Element element=doc.getRootElement(); //获取xml根节点
List list=new ArrayList();
Element ele=null; //用于中间衔接
list=element.getChildren(); //获取下一结点列表
for(int i=0;i<list.size();i++){
ele=(Element)list.get(i);
// System.out.println(ele.getName()); //测试用
if(ele.getName().equals(dbType)){ //根绝结点名与输入的数据库类型进行匹配,匹配成功,则赋值内部变量
ip=ele.getChildTextTrim("data-ip");
dbport=ele.getChildText("data-port");
dbname=ele.getChildTextTrim("data-dbname");
username=ele.getChildTextTrim("data-username");
psw=ele.getChildTextTrim("data-password");
break;
}
else System.out.println("输入类型不合法!");//失败提示
}


} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String getIp() {
return ip;
}
public String getDbname() {
return dbname;
}
public String getUsername() {
return username;
}
public String getPsw() {
return psw;
}
public String getDbport() {
return dbport;
}
public static void main(String args[]){ //测试用
DbConfig dc=new DbConfig("sql2000");
System.out.println(dc.getIp());
System.out.println(dc.getDbport());
System.out.println(dc.getDbname());
System.out.println(dc.getUsername());
System.out.println(dc.getPsw());
}
}


DbConn2000.java

package com.fenye;

public class DbConn2000 extends DbConnJtds{
static DbConfig dc=new DbConfig("sql2000");
public DbConn2000(){ //super必须放在构造函数的第一句,否则报错
super(dc.getIp(),dc.getDbport(),dc.getDbname(),dc.getUsername(),dc.getPsw());
}
public static void main(String args[]){
DbConnection db=new DbConnection();
db.getConn();
db.closeConn();
}
}


DbConn2005.java

package com.fenye;

public class DbConn2005extends DbConnJtds{
static DbConfig dc=new DbConfig("sql2005");
public DbConn2005(){ //super必须放在构造函数的第一句,否则报错
super(dc.getIp(),dc.getDbport(),dc.getDbname(),dc.getUsername(),dc.getPsw());
}
public static void main(String args[]){
DbConnection db=new DbConnection();
db.getConn();
db.closeConn();
}
}

DbConnSysbase.java

package com.fenye;

public class DbConnSysbaseextends DbConnJtds{
static DbConfig dc=new DbConfig("sybase");//
public DbConnSysbase(){ //super必须放在构造函数的第一句,否则报错
super(dc.getIp(),dc.getDbport(),dc.getDbname(),dc.getUsername(),dc.getPsw());
}
public static void main(String args[]){
DbConnection db=new DbConnection();
db.getConn();
db.closeConn();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值