通用数据库访问(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();
	}
}


你可能感兴趣的:(java,sql,xml,jdbc,Sybase)