JAVA读取XML文件并利用该文件对数据库进行配置操作

来源:互联网 发布:网络服务器端口地址 编辑:程序博客网 时间:2024/04/30 11:30

//JAVA读取XML文件并利用该文件对数据库进行配置操作
//****************************************************************
//****************XML文件(database.xml)**************
<?xml version="1.0" encoding="GB2312"?>
<administrator>
  <!--原数据库-->
    <drivername>com.informix.jdbc.IfxDriver</drivername>
    <username>informix</username>
    <password>informix</password>
    <datebase_url>jdbc:informix-sqli://192.168.0.1:1526/db_das:INFORMIXSERVER=jl_das;</datebase_url>
    <maxactive>5</maxactive>
    <maxidle>1</maxidle>
    <maxwait>8000</maxwait>
  <!--新数据库-->
    <drivername>com.informix.jdbc.IfxDriver</drivername>
    <username>informix</username>
    <password>informix</password>
    <datebase_url>jdbc:informix-sqli://192.168.0.173:1526/jl_das:INFORMIXSERVER=ol_chinaren5;</datebase_url>
    <maxactive>5</maxactive>
    <maxidle>1</maxidle>
    <maxwait>8000</maxwait>
</administrator>
//****************************************************************
//****************读取XML文件的类**************
package readXml;

import org.w3c.dom.*;
import javax.xml.parsers.*;
/**
 * @author dongyanyong
 * @version 1.0
 * @读取XML文件
 */

public class ReadFromXml
{
  private Document doc;
  private DocumentBuilderFactory dbf;
  private DocumentBuilder db;
  public  ReadFromXml()
  {
     try{
           dbf=DocumentBuilderFactory.newInstance();
           db=dbf.newDocumentBuilder();
           doc=db.parse("database.xml");
        }
     catch(Exception e)
        {
           System.out.println("DB xml not found!");
    e.printStackTrace();
        }
  }
//-----------------------------------------------------------------
  // 参数:空 返回值:databaseinfo 数组
  public String[] getXmlTag()
  {
     String[] databaseinfo=new String[14];
     try{
           databaseinfo[0]=doc.getElementsByTagName("drivername").item(0).getFirstChild().getNodeValue();
           databaseinfo[1]=doc.getElementsByTagName("username").item(0).getFirstChild().getNodeValue();
           databaseinfo[2]=doc.getElementsByTagName("password").item(0).getFirstChild().getNodeValue();
           databaseinfo[3]=doc.getElementsByTagName("datebase_url").item(0).getFirstChild().getNodeValue();
           databaseinfo[4]=doc.getElementsByTagName("maxactive").item(0).getFirstChild().getNodeValue();
           databaseinfo[5]=doc.getElementsByTagName("maxidle").item(0).getFirstChild().getNodeValue();
           databaseinfo[6]=doc.getElementsByTagName("maxwait").item(0).getFirstChild().getNodeValue();

           databaseinfo[7]=doc.getElementsByTagName("drivername").item(1).getFirstChild().getNodeValue();
           databaseinfo[8]=doc.getElementsByTagName("username").item(1).getFirstChild().getNodeValue();
           databaseinfo[9]=doc.getElementsByTagName("password").item(1).getFirstChild().getNodeValue();
           databaseinfo[10]=doc.getElementsByTagName("datebase_url").item(1).getFirstChild().getNodeValue();
           databaseinfo[11]=doc.getElementsByTagName("maxactive").item(1).getFirstChild().getNodeValue();
           databaseinfo[12]=doc.getElementsByTagName("maxidle").item(1).getFirstChild().getNodeValue();
           databaseinfo[13]=doc.getElementsByTagName("maxwait").item(1).getFirstChild().getNodeValue();
        }
     catch(Exception e)
        {
           System.out.println("read xml content error!");
           e.printStackTrace();
        }
     return databaseinfo;
  }
//----------------------------------------------------------------
}
//****************************************************************
//*******对数据库操作的类(应用读取到的XML)**********
package readXML;

import java.sql.*;
import org.apache.commons.dbcp.*;
/**
 * @author dongyanyong
 * @version 1.0
 * @对数据库进行操作的类
 */
public class PoolManager
{
  private static PoolManager pool = new PoolManager();
  private BasicDataSource bds = null;
  //存放读取xml文件返回值的数组
  private String[] dbinfo;
  //声明类的实例
  ReadFromXml read1;

  private PoolManager()
  {
     bds = new BasicDataSource();
     dbinfo=new String[14];
     read1=new ReadFromXml();
     dbinfo=read1.getXmlTag();

     bds.setDriverClassName(dbinfo[7]);
     bds.setUsername(dbinfo[8]);
     bds.setPassword(dbinfo[9]);
     bds.setUrl(dbinfo[10]);
     bds.setMaxActive(Integer.parseInt(dbinfo[11]));
     bds.setMaxIdle(Integer.parseInt(dbinfo[12]));
     bds.setMaxWait(Integer.parseInt(dbinfo[13]));
  }
//---------------------------------------------------------------
  public static PoolManager getInstance()
  {
     return pool;
  }
//---------------------------------------------------------------
  public Connection getConnection() throws java.sql.SQLException
  {
     return bds.getConnection();
  }
//---------------------------------------------------------------
  public static void closeRs(ResultSet rs)
  {
     if(rs != null)
        {
           try{
                 rs.close();
              }
           catch(java.sql.SQLException ex)
              {
                 System.out.println(ex);
              }
        }
  }
//---------------------------------------------------------------
  public static void closeSs(Statement ss)
  {
     if(ss != null)
        {
           try{
                 ss.close();
              }
           catch(java.sql.SQLException ex)
              {
                 System.out.println(ex);
              }
        }
  }
//----------------------------------------------------------------
  public static void closeConnection(Connection conn)
  {
     if(conn != null)
        {
           try{
                 conn.close();
              }
           catch(java.sql.SQLException ex)
              {
                 System.out.println(ex);
              }
        }
  }
//----------------------------------------------------------------
}
//****************************************************************
package readXML;

import java.sql.*;
import java.lang.*;

import readXML.PoolManager;
/**
 * @author dongyanyong
 * @version 1.0
 * @利用对数据库进行操作的类进行对数据库操作
 */
public class ExecuteSQL
{
  private Connection conn = null,conn1=null;
  private PreparedStatement ps = null,ps1=null;
  private ResultSet rs = null;
  private PoolManager pool = null;

  private String message=null;      //接收函数返回消息

  public ExecuteSQL()
  {
     pool=PoolManager.getInstance();
  }
//----------------------------------------------------------------
  private String ExcutSql(String sql)
  {  //利用得到的sql语句来执行
     System.out.println(sql);
     try{
           conn = pool.getConnection();
           ps = conn.prepareStatement(sql);
           int k=ps.executeUpdate();
        }
     catch(java.sql.SQLException e)
        {
           System.out.print(e);
           return e.toString();
        }
     finally
        {
           PoolManager.closeSs(ps);
           PoolManager.closeConnection(conn);
        }
     return "ok";
  }
//----------------------------------------------------------------
  private String InsertIn()
  {
     /*执行sql*/
     String sql=" insert into tableA values('a','c','s','s') ";
     message=ExcutSql(sql);
     if(!message.equals("ok"))
        return message;
     else
        return "ok";
  }
//---------------------------------------------------------------------------------
}
//****************************************************************

原创粉丝点击