java操作数据库

1jdbc-odbc

/**

*演示使用jdbc-odbc桥连方式操作数据库

*1、配置数据源(数据源:服务器S.local,点小三角会死机))

*2、在程序中去连接数据源

*

*/

 

import java.sql.*;

public class Demo 

{

public static void main(String args[])

{

Connection=null;

Statement=null;

try{

//1、加载驱动(作用是把需要的驱动程序加入内存)

 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//jdbcsun公司开发的

 

//2、得到连接(指定连接到哪个数据源,用户名和密码)

//如果你配置数据源的时候,选择是windows nt验证,则不需要"sa","shunping"

//Connection ct=DriverManager.getConnection("jdbc:odbc:mytext")

Connection ct=DriverManager.getConnection("jdbc:odbc:mytext","sa","123456");

 

//3、创建Statement或者PreparedStatement[区别]

//Statement 用处是:主要用于发送sql语句,到数据库(如:打电话通道:无线、用线)

Statement sm=ct.createStatement();

 

//4、执行(crud,增删改查数据库。。。)

 

/*

//1)演示添加一条数据到dept,删除、修改和添加相似

//executeUpdate可以执行crud操作

int i=sm.excuteUpdate("insert into dept values('50','保安部','西安')");

if(i==1){

System.out.println("添加ok");

}

else{

System.out.println("添加error");

}

*/

 

//2)查询

 // ResultSet结果集,理解成一个表行的结果集,游标

ResultSet  rs=sm.executeQuery("select * from dept");

//因为rs指向结果集第一行的上一行

//不知道有多少行,则可循环取出

while(rs.next())

{

int deptno=rs.getInt(1);

String dname=rs.getString(2);

String loc=rs.getString(3);

System.out.println(deptno+" "+dname+" "+loc);

}

}

catch(Exception e){

e.printStackTrace();

}

finally

{

//关闭资源(非常重要!!!

//关闭顺序是,谁后创建,则先关闭

try

{//为了使程序健壮

if(sm!=null)//如果等于null表明已经关闭

{

sm.close();

}

if(ct!=null)

{

ct.close();

}

}

catch(SQLException e)

{

e.printStackTrace();

}

}

}

}

}

 

 

 

 

 

 

 

 

2jdbc

/**

*演示使用jdbc方式操作数据库

*1、引入java.sql.*

*2、加载驱动,即jar

*3、特别说明,如果取值是按编号,则需要一一对应,如果是按照列名取值,则顺序可颠倒

*/

 

import java.sql.*;

public class Demo 

{

public static void main(String args[])

{

//PreparedStatement[火箭车]

 

//定义需要的对象

Connection ct=null;

PreparedStatement ps=null;

ResultSet rs=null;

 

try{

//1、加载驱动(作用是把需要的驱动程序加入内存)

 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//jdbcms公司开发的

 

//2、得到连接(不用配置数据源)

 ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;

databaseName=itimeIBMS","sa","123456");

 

//3、创建PreparedStatement火箭车

//执行【如果是增加、删除、修改executeUpdate(),如果是查询则用executeQuery

ps=ct.PreparedStatement(" select deptno,dname,loc from dept ");//可以用?赋值

 

rs=ps.executeQuery();

while(rs.next())

{

int deptno=rs.getInt(1);

String dname=rs.getString(2);

String loc=rs.getString(3);//注意标号,也可以把编号用名称代替

System.out.println(deptno+" "+dname+" "+loc);

}

 

//4、使用PreparedStatement添加一条记录,删除、修改类似

ps=ct.preparedStatement("insert into dept value(?,?,?)");

ps.setInt(1,50);

ps.setString(2,"安全部");

ps.setString(3,"北京");

int i=ps.excuteUpdate();

if(i==1){

System.out.println("添加ok");

}

else{

System.out.println("添加error");

}

}

catch(Exception e){

e.printStackTrace();

}

finally

{

//关闭资源(非常重要!!!

//关闭顺序是,谁后创建,则先关闭

try

{//为了使程序健壮

if(rs!=null)

{

rs.close();

}

if(ps!=null)//如果等于null表明已经关闭

{

ps.close();

}

if(ct!=null)

{

ct.close();

}

}

catch(SQLException e)

{

e.printStackTrace();

}

}

}

}

}

 

 

 

 

3、数据库操作

/**

*演示java中使用ddl语句

*1、引入java.sql.*

*2、加载驱动,即jar

*

*/

 

import java.sql.*;

public class Demo 

{

public static void main(String args[])

{

//PreparedStatement[火箭车]

 

//定义需要的对象

Connection ct=null;

PreparedStatement ps=null;

 

 

try{

//1、加载驱动(作用是把需要的驱动程序加入内存)

 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//jdbcms公司开发的

 

//2、得到连接(不用配置数据源),驱动名称

//127.0.0.1表示你要连接的数据库的ip

//1433表示sql server的默认端口(一个计算机有65535个端口)

 ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;

databaseName=itimeIBMS","sa","123456");

 

//3、创建PreparedStatement火箭车

//执行【如果是增加、删除、修改executeUpdate(),如果是查询则用executeQuery

//如果执行的是ddl语句

ps=ct.PreparedStatement(" create database aaa ");

blooean b=ps.execute();

if(b){

System.out.println("ok");

}

else{

System.out.println("error");

}

}

catch(Exception e){

e.printStackTrace();

}

finally

{

//关闭资源(非常重要!!!

//关闭顺序是,谁后创建,则先关闭

try

{//为了使程序健壮

 

if(rs!=null)

{

rs.close();

}

if(ps!=null)//如果等于null表明已经关闭

{

ps.close();

}

}

if(ct!=null)//如果等于null表明已经关闭

{

ct.close();

}

}

catch(SQLException e)

{

e.printStackTrace();

}

}

}

}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4、比较PreparedStatement和Statement

现在都是用PreparedStatement

 

/**

*PreparedStatement

*1PreparedStatement可以提高执行效率(因为它有预编译的功能)

*2PreparedStatement可以防止SQL注入,但是要求用?赋值的方式才可以

*/

 

import java.sql.*;

public class Demo 

{

public static void main(String args[])

{

Connection ct=null;

PreparedStatement ps=null;

ResultSet rs=null;

try{

//1、加载驱动(作用是把需要的驱动程序加入内存)

 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//jdbcsun公司开发的

 

//2、得到连接(指定连接到哪个数据源,用户名和密码)

//如果你配置数据源的时候,选择是windows nt验证,则不需要"sa","shunping"

//Connection ct=DriverManager.getConnection("jdbc:odbc:mytext")

Connection ct=DriverManager.getConnection("jdbc:odbc:mytext","sa","shunping");

 

//3、创建PreparedStatement

 ps=PreparedStatement(" select * from dept where username='shunping' and password='shunping' ");//可以用?赋值

rs=ps.executeQuery();

while(rs.next())

{

int deptno=rs.getInt(1);

String dname=rs.getString(2);

String loc=rs.getString(3);

System.out.println(deptno+" "+dname+" "+loc);

}

 

//使用PreparedStatement添加一条记录,删除、修改类似

ps=ct.preparedStatement("insert into dept value(?,?,?)");

ps.setInt(1,50);

ps.setString(2,"安全部");

ps.setString(3,"北京");

int i=ps.excuteUpdate();

if(i==1){

System.out.println("添加ok");

}

else{

System.out.println("添加error");

}

}

catch(Exception e){

e.printStackTrace();

}

finally

{

//关闭资源(非常重要!!!

//关闭顺序是,谁后创建,则先关闭

try

{//为了使程序健壮

if(rs!=null)

{

rs.close();

}

if(ps!=null)//如果等于null表明已经关闭

{

ps.close();

}

if(ct!=null)

{

ct.close();

}

}

catch(SQLException e)

{

e.printStackTrace();

}

}

}

}

}

 

5.jdbc数据库连接池

文件:

package com.sino.ibms.db;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBConnection
{
  private Connection conn;

  public DBConnection(Connection conn)
  {
    this.conn = conn;
  }

  public CallableStatement getCallableStatement(String spName) throws SQLException
  {
    CallableStatement cstmt = this.conn.prepareCall("{call " + spName + "}");
    return cstmt;
  }

  public PreparedStatement getPreparedStatement(String sql)
    throws SQLException
  {
    PreparedStatement pstmt = this.conn.prepareStatement(sql, 
      1004, 1007);
    return pstmt;
  }

  public Statement getStatement() throws SQLException {
    Statement stmt = this.conn.createStatement(1005, 
      1008);
    return stmt;
  }

  public ResultSet execQuery(String sql)
    throws SQLException
  {
    Statement stmt = getStatement();
    ResultSet rs = stmt.executeQuery(sql);
    return rs;
  }

  public ResultSet execQuery(String sql, int startNO, int pagesize)
    throws SQLException
  {
    PreparedStatement preparedStatement = getPreparedStatement(sql);
    preparedStatement.setMaxRows(startNO + pagesize - 1);
    ResultSet rs = preparedStatement.executeQuery();

    rs.absolute(startNO - 1);
    return rs;
  }

  public void execUpdate(String sql) throws SQLException {
    PreparedStatement pstmt = getPreparedStatement(sql);
    pstmt.execute();
  }

  public int execCommand(String sql) throws SQLException {
    Statement stmt = getStatement();
    return stmt.executeUpdate(sql);
  }
}
DBConnection.java
package com.sino.ibms.db;

import java.io.PrintStream;
import java.sql.Connection;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Vector;

public class DBConnectionManager
{
  private static DBConnectionManager instance;
  private static int clients;
  private Vector drivers = new Vector();
  private Hashtable pools = new Hashtable();

  public DBConnectionManager()
  {
    init();
  }

  public static synchronized DBConnectionManager getInstance()
  {
    if (instance == null) {
      instance = new DBConnectionManager();
    }
    return instance;
  }

  public void freeConnection(String name, Connection con)
  {
    DBConnectionPool pool = (DBConnectionPool)this.pools.get(name);
    if (pool != null)
      pool.freeConnection(con);
  }

  public Connection getConnection(String name)
  {
    DBConnectionPool pool = null;
    Connection con = null;
    pool = (DBConnectionPool)this.pools.get(name);
    con = pool.getConnection();
    if (con != null)
      System.out.println("得到连接.....");
    return con;
  }

  public Connection getConnection(String name, long timeout)
  {
    DBConnectionPool pool = null;
    Connection con = null;
    pool = (DBConnectionPool)this.pools.get(name);
    con = pool.getConnection(timeout);
    System.out.println("得到连接。。。");
    return con;
  }

  public synchronized void release()
  {
    Enumeration allpools = this.pools.elements();
    while (allpools.hasMoreElements()) {
      DBConnectionPool pool = (DBConnectionPool)allpools.nextElement();
      if (pool != null)
        pool.release();
    }
    this.pools.clear();
  }

  private void createPools(DSConfigBean dsb)
  {
    DBConnectionPool dbpool = new DBConnectionPool();
    dbpool.setName(dsb.getName());
    dbpool.setDriver(dsb.getDriver());
    dbpool.setUrl(dsb.getUrl());
    dbpool.setUser(dsb.getUsername());
    dbpool.setPassword(dsb.getPassword());
    dbpool.setMaxConn(dsb.getMaxconn());
    System.out.println("ioio:" + dsb.getMaxconn());
    this.pools.put(dsb.getName(), dbpool);
  }

  private void init()
  {
    loadDrivers();

    Iterator alldriver = this.drivers.iterator();
    while (alldriver.hasNext()) {
      createPools((DSConfigBean)alldriver.next());
      System.out.println("创建连接池。。。");
    }

    System.out.println("创建连接池完毕。。。");
  }

  private void loadDrivers()
  {
    ParseDSConfig pd = new ParseDSConfig();

    this.drivers = pd.readConfigInfo("ds.config.xml");
    System.out.println("加载驱动程序。。。");
  }

  public static void main(String[] args)
  {
  }
}
DBConnectionManager.java
package com.sino.ibms.db;

import java.io.PrintStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Timer;

public class DBConnectionPool
{
  private Connection con = null;
  private int inUsed = 0;
  private ArrayList freeConnections = new ArrayList();
  private int minConn;
  private int maxConn;
  private String name;
  private String password;
  private String url;
  private String driver;
  private String user;
  public Timer timer;

  public DBConnectionPool()
  {
  }

  public DBConnectionPool(String name, String driver, String URL, String user, String password, int maxConn)
  {
    this.name = name;
    this.driver = driver;
    this.url = URL;
    this.user = user;
    this.password = password;
    this.maxConn = maxConn;
  }

  public synchronized void freeConnection(Connection con)
  {
    this.freeConnections.add(con);
    this.inUsed -= 1;
  }

  public synchronized Connection getConnection(long timeout)
  {
    Connection con = null;
    if (this.freeConnections.size() > 0) {
      con = (Connection)this.freeConnections.get(0);
      if (con == null)
        con = getConnection(timeout);
    } else {
      con = newConnection();
    }
    if ((this.maxConn == 0) || (this.maxConn < this.inUsed)) {
      con = null;
    }
    if (con != null) {
      this.inUsed += 1;
    }
    return con;
  }

  public synchronized Connection getConnection()
  {
    Connection con = null;
    if (this.freeConnections.size() > 0) {
      con = (Connection)this.freeConnections.get(0);
      this.freeConnections.remove(0);
      if (con == null)
        con = getConnection();
      System.out.println("继续链接.......");
    } else {
      con = newConnection();
      System.out.println("建立新连接.......");
    }
    if ((this.maxConn == 0) || (this.maxConn < this.inUsed)) {
      con = null;
    }
    if (con != null) {
      this.inUsed += 1;
      System.out.println("得到 " + this.name + " 的连接,现有" + this.inUsed + 
        "个连接在使用!");
    }
    return con;
  }

  public synchronized void release()
  {
    Iterator allConns = this.freeConnections.iterator();
    while (allConns.hasNext()) {
      Connection con = (Connection)allConns.next();
      try {
        con.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }

    this.freeConnections.clear();
  }

  private Connection newConnection()
  {
    try
    {
      Class.forName(this.driver);
      this.con = DriverManager.getConnection(this.url, this.user, this.password);
    }
    catch (ClassNotFoundException e) {
      e.printStackTrace();
      System.out.println("sorry can't find db driver!");
    }
    catch (SQLException e1) {
      e1.printStackTrace();
      System.out.println("sorry can't create Connection!");
    }
    return this.con;
  }

  public synchronized void TimerEvent()
  {
  }

  public static void main(String[] args)
  {
  }

  public String getDriver()
  {
    return this.driver;
  }

  public void setDriver(String driver)
  {
    this.driver = driver;
  }

  public int getMaxConn()
  {
    return this.maxConn;
  }

  public void setMaxConn(int maxConn)
  {
    this.maxConn = maxConn;
  }

  public int getMinConn()
  {
    return this.minConn;
  }

  public void setMinConn(int minConn)
  {
    this.minConn = minConn;
  }

  public String getName()
  {
    return this.name;
  }

  public void setName(String name)
  {
    this.name = name;
  }

  public String getPassword()
  {
    return this.password;
  }

  public void setPassword(String password)
  {
    this.password = password;
  }

  public String getUrl()
  {
    return this.url;
  }

  public void setUrl(String url)
  {
    this.url = url;
  }

  public String getUser()
  {
    return this.user;
  }

  public void setUser(String user)
  {
    this.user = user;
  }
}
DBConnectionPool.java
<?xml version="1.0" encoding="UTF-8"?>
<ds-config>
    <!--纳米城停车场-->
    <pool>
        <type>SQLServer2005</type>
        <name>namipark</name>
        <driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver>
        <url>jdbc:sqlserver://localhost:1433;DatabaseName=ykt</url>
        <username>sa</username>
        <password>123456</password>
        <maxconn>100</maxconn>
    </pool>
    
    <!-- 纳米城门禁 -->
        <pool>
        <type>SQLServer2005</type>
        <name>namidoor</name>
        <driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver>
        <url>jdbc:sqlserver://localhost:1433;DatabaseName=NewAICDatabase</url>
        <username>sa</username>
        <password>123456</password>
        <maxconn>100</maxconn>
        </pool>
    
    <!-- 纳米城巡更 -->
        <pool>
        <type>SQLServer2005</type>
        <name>namixg</name>
        <driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver>
        <url>jdbc:sqlserver://localhost:1433;DatabaseName=PATROLXP</url>
        <username>sa</username>
        <password>123456</password>
        <maxconn>100</maxconn>
        </pool>
    
</ds-config>
ds.config.xml
package com.sino.ibms.db;

public class DSConfigBean
{
  private String type = "";
  private String name = "";
  private String driver = "";
  private String url = "";
  private String username = "";
  private String password = "";
  private int maxconn = 0;

  public static void main(String[] args)
  {
  }

  public String getDriver()
  {
    return this.driver;
  }

  public void setDriver(String driver)
  {
    this.driver = driver;
  }

  public int getMaxconn()
  {
    return this.maxconn;
  }

  public void setMaxconn(int maxconn)
  {
    this.maxconn = maxconn;
  }

  public String getName()
  {
    return this.name;
  }

  public void setName(String name)
  {
    this.name = name;
  }

  public String getPassword()
  {
    return this.password;
  }

  public void setPassword(String password)
  {
    this.password = password;
  }

  public String getType()
  {
    return this.type;
  }

  public void setType(String type)
  {
    this.type = type;
  }

  public String getUrl()
  {
    return this.url;
  }

  public void setUrl(String url)
  {
    this.url = url;
  }

  public String getUsername()
  {
    return this.username;
  }

  public void setUsername(String username)
  {
    this.username = username;
  }
}
DSConfigBean.java
package com.sino.ibms.db;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.URL;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

public class ParseDSConfig
{
  public Vector readConfigInfo(String path)
  {
    String rpath = getClass().getResource("").getPath().substring(1) + 
      path;
    HttpServletRequest request = ServletActionContext.getRequest();
    System.out.println("===ClassLoader===" + getClass().getResource("ds.config.xml").getPath());
    System.out.println("===Class===" + getClass().getResource("/"));
    System.out.println("===config===" + rpath);
    System.out.println("===ContextPath===" + request.getContextPath());
    System.out.println("===RealPath===" + request.getRealPath("/"));
    System.out.println("===ServletPath===" + request.getServletPath());
    System.out.println("===RequestURI===" + request.getRequestURI());
    Vector dsConfig = null;
    FileInputStream fi = null;
    InputStream is = null;
    try
    {
      is = getClass().getResourceAsStream("ds.config.xml");
      dsConfig = new Vector();
      SAXBuilder sb = new SAXBuilder();

      Document doc = sb.build(is);
      Element root = doc.getRootElement();
      List pools = root.getChildren();
      Element pool = null;
      Iterator allPool = pools.iterator();
      while (allPool.hasNext()) {
        pool = (Element)allPool.next();
        DSConfigBean dscBean = new DSConfigBean();
        dscBean.setType(pool.getChild("type").getText());
        dscBean.setName(pool.getChild("name").getText());
        System.out.println(dscBean.getName());
        dscBean.setDriver(pool.getChild("driver").getText());
        dscBean.setUrl(pool.getChild("url").getText());
        dscBean.setUsername(pool.getChild("username").getText());
        dscBean.setPassword(pool.getChild("password").getText());
        dscBean.setMaxconn(Integer.parseInt(pool.getChild("maxconn")
          .getText()));
        dsConfig.add(dscBean);
      }
    }
    catch (FileNotFoundException e)
    {
      e.printStackTrace();
      try
      {
        if (fi != null)
          fi.close();
        if (is != null)
          is.close();
      }
      catch (IOException e1) {
        e1.printStackTrace();
      }
    }
    catch (JDOMException e)
    {
      e.printStackTrace();
      try
      {
        if (fi != null)
          fi.close();
        if (is != null)
          is.close();
      }
      catch (IOException e1) {
        e1.printStackTrace();
      }
    }
    catch (IOException e)
    {
      e.printStackTrace();
      try
      {
        if (fi != null)
          fi.close();
        if (is != null)
          is.close();
      }
      catch (IOException e1) {
        e1.printStackTrace();
      }
    }
    finally
    {
      try
      {
        if (fi != null)
          fi.close();
        if (is != null)
          is.close();
      }
      catch (IOException e) {
        e.printStackTrace();
      }
    }

    return dsConfig;
  }

  public void modifyConfigInfo(String path, DSConfigBean dsb)
    throws Exception
  {
    String rpath = getClass().getResource("").getPath().substring(1) + 
      path;
    FileInputStream fi = null;
    FileOutputStream fo = null;
  }

  public void addConfigInfo(String path, DSConfigBean dsb)
  {
    String rpath = getClass().getResource("").getPath().substring(1) + 
      path;
    FileInputStream fi = null;
    FileOutputStream fo = null;
    try {
      fi = new FileInputStream(rpath);

      SAXBuilder sb = new SAXBuilder();

      Document doc = sb.build(fi);
      Element root = doc.getRootElement();
      List pools = root.getChildren();

      Element newpool = new Element("pool");

      Element pooltype = new Element("type");
      pooltype.setText(dsb.getType());
      newpool.addContent(pooltype);

      Element poolname = new Element("name");
      poolname.setText(dsb.getName());
      newpool.addContent(poolname);

      Element pooldriver = new Element("driver");
      pooldriver.addContent(dsb.getDriver());
      newpool.addContent(pooldriver);

      Element poolurl = new Element("url");
      poolurl.setText(dsb.getUrl());
      newpool.addContent(poolurl);

      Element poolusername = new Element("username");
      poolusername.setText(dsb.getUsername());
      newpool.addContent(poolusername);

      Element poolpassword = new Element("password");
      poolpassword.setText(dsb.getPassword());
      newpool.addContent(poolpassword);

      Element poolmaxconn = new Element("maxconn");
      poolmaxconn.setText(String.valueOf(dsb.getMaxconn()));
      newpool.addContent(poolmaxconn);
      pools.add(newpool);
      Format format = Format.getPrettyFormat();
      format.setIndent("");
      format.setEncoding("utf-8");
      XMLOutputter outp = new XMLOutputter(format);
      fo = new FileOutputStream(rpath);
      outp.output(doc, fo);
    }
    catch (FileNotFoundException e) {
      e.printStackTrace();
    }
    catch (JDOMException e) {
      e.printStackTrace();
    }
    catch (IOException e) {
      e.printStackTrace();
    }
  }

  public void delConfigInfo(String path, String name)
  {
    String rpath = getClass().getResource("").getPath().substring(1) + 
      path;
    FileInputStream fi = null;
    FileOutputStream fo = null;
    try {
      fi = new FileInputStream(rpath);
      SAXBuilder sb = new SAXBuilder();
      Document doc = sb.build(fi);
      Element root = doc.getRootElement();
      List pools = root.getChildren();
      Element pool = null;
      Iterator allPool = pools.iterator();
      while (allPool.hasNext()) {
        pool = (Element)allPool.next();
        if (pool.getChild("name").getText().equals(name)) {
          pools.remove(pool);
          break;
        }
      }
      Format format = Format.getPrettyFormat();
      format.setIndent("");
      format.setEncoding("utf-8");
      XMLOutputter outp = new XMLOutputter(format);
      fo = new FileOutputStream(rpath);
      outp.output(doc, fo);
    }
    catch (FileNotFoundException e)
    {
      e.printStackTrace();
      try
      {
        fi.close();
      }
      catch (IOException e1) {
        e1.printStackTrace();
      }
    }
    catch (JDOMException e)
    {
      e.printStackTrace();
      try
      {
        fi.close();
      }
      catch (IOException e1) {
        e1.printStackTrace();
      }
    }
    catch (IOException e)
    {
      e.printStackTrace();
      try
      {
        fi.close();
      }
      catch (IOException e1) {
        e1.printStackTrace();
      }
    }
    finally
    {
      try
      {
        fi.close();
      }
      catch (IOException e) {
        e.printStackTrace();
      }
    }
  }

  public static void main(String[] args)
    throws Exception
  {
    ParseDSConfig pd = new ParseDSConfig();
    String path = "ds.config.xml";
    pd.readConfigInfo(path);

    DSConfigBean dsb = new DSConfigBean();
    dsb.setType("oracle");
    dsb.setName("yyy004");
    dsb.setDriver("org.oracle.jdbc");
    dsb.setUrl("jdbc:oracle://localhost");
    dsb.setUsername("sa");
    dsb.setPassword("");
    dsb.setMaxconn(1000);
    pd.addConfigInfo(path, dsb);
    pd.delConfigInfo(path, "yyy001");
  }
}
ParseDSConfig.java

使用:

package com.sino.ibms.action;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;

import org.apache.commons.collections.map.LinkedMap;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

import com.sino.ibms.common.Pager;
import com.sino.ibms.db.DBConnection;
import com.sino.ibms.db.DBConnectionManager;

import com.sino.ibms.model.NamiDoorEvent;

public class NamiDoorAction extends ActionSupport {

    private Map cnameMap;
    private Map penameMap;
    private Map eventnameMap;
    
    String cname;
    String pename;
    String eventname;
    String btime;
    String etime;
    String fileName;
    private InputStream excelStream;
    public Pager pager;

    public InputStream getExcelStream() {
        return excelStream;
    }

    public void setExcelStream(InputStream excelStream) {
        this.excelStream = excelStream;
    }

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    public Pager getPager() {
        return pager;
    }

    public void setPager(Pager pager) {
        this.pager = pager;
    }

    // 查询方法
    public String doorQuery() throws IOException, SQLException {
        try {
            HttpServletRequest request = ServletActionContext.getRequest();
            DBConnectionManager connectionManager = DBConnectionManager
                    .getInstance();
            Connection conn = connectionManager.getConnection("namidoor");
            DBConnection connection = new DBConnection(conn);

            String sql1 = "select distinct EA_Co_Name from AIC_Access_EventMessageDataAccess";
            String sql2 = "select distinct EA_Pe_FirstName from AIC_Access_EventMessageDataAccess";
            String sql3 = "select distinct EA_eventName from AIC_Access_EventMessageDataAccess";

            ResultSet rs1 = connection.execQuery(sql1);
            ResultSet rs2 = connection.execQuery(sql2);
            ResultSet rs3 = connection.execQuery(sql3);

             this.cnameMap = new LinkedMap();
             this.penameMap = new LinkedMap();
             this.eventnameMap = new LinkedMap();
                while (rs1.next()) {
                  this.cnameMap.put(rs1.getString(1), rs1.getString(1));
                }
                while (rs2.next()) {
                      this.penameMap.put(rs2.getString(1), rs2.getString(1));
                    }
                while (rs3.next()) {
                      this.eventnameMap.put(rs3.getString(1), rs3.getString(1));
                    }
            
            connectionManager.freeConnection("namidoor", conn);
            return SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            return ERROR;
        }
    }

    // 查询结果管理方法
    public String doorManage() {
        try {
            ResultSet rs = this.getResultSet();
            List list = new ArrayList();
            while (rs.next()) {
                NamiDoorEvent de = new NamiDoorEvent();
                de.setEA_InsertDateTime(rs.getTimestamp(1));
                de.setEA_Co_Name(rs.getString(2));
                de.setEA_eventName(rs.getString(3));
                de.setEA_Pe_FirstName(rs.getString(4));
                de.setEA_Pe_Code(rs.getString(5));
                de.setEA_Pe_De_Name(rs.getString(6));
                list.add(de);
            }
            Map req = (Map) ActionContext.getContext().get("request");
            req.put("list", list);
            req.put("cname", this.cname);
            req.put("pename", this.pename);
            req.put("eventname", this.eventname);
            req.put("btime", this.btime);
            req.put("etime", this.etime);
            return SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            return ERROR;
        }
    }

    // 导出报表方法
    public String exportDoor() {
        try {
            ResultSet rs = this.getResultSet();
            // 获取总列数
            int CountColumnNum = rs.getMetaData().getColumnCount();
            int i = 1;
            // 创建Excel文档
            HSSFWorkbook wb = new HSSFWorkbook();
            HSSFSheet sheet = wb.createSheet("门禁查询");

            // 设置单元格宽度
            sheet.setColumnWidth(0, 6000);
            sheet.setColumnWidth(1, 4000);
            sheet.setColumnWidth(2, 6000);
            sheet.setColumnWidth(3, 3000);
            sheet.setColumnWidth(4, 5000);
            sheet.setColumnWidth(5, 4000);

            HSSFRow firstrow = sheet.createRow(0); // 下标为0的行开始
            HSSFCell[] firstcell = new HSSFCell[CountColumnNum];
            String[] names = new String[CountColumnNum];
            names[0] = "时间";
            names[1] = "控制器名称";
            names[2] = "事件名称";
            names[3] = "人员";
            names[4] = "人员编号";
            names[5] = "部门";
            for (int j = 0; j < CountColumnNum; j++) {
                firstcell[j] = firstrow.createCell((short) j);
                firstcell[j].setCellValue(new HSSFRichTextString(names[j]));
            }

            // 填充单元格
            while (rs.next()) {
                // 创建电子表格的一行
                HSSFRow row = sheet.createRow(i); // 下标为1的行开始
                for (int j = 0; j < CountColumnNum; j++) {
                    // 在一行内循环
                    HSSFCell cell = row.createCell((short) j);
                    // 设置表格的编码集,使支持中文
                    // // 先判断数据库中的数据类型
                    // 将结果集里的值放入电子表格中
                    cell.setCellValue(new HSSFRichTextString(rs
                            .getString(j + 1)));

                }
                i++;
            }

        
                // 设置输出文件名
                Date now = new Date();
                SimpleDateFormat dateFormat = new SimpleDateFormat(
                        "yyyyMMddHHmmss");// 可以方便地修改日期格式
                String nowtime = dateFormat.format(now);
                this.fileName = "door" + nowtime;

                // 导出
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                wb.write(baos);
                baos.flush();
                byte[] aa = baos.toByteArray();
                excelStream = new ByteArrayInputStream(aa, 0, aa.length);
                baos.close();

            System.out.println("数据库导出成功");

            return SUCCESS;

        } catch (Exception e) {
            //e.printStackTrace();
            return ERROR;
        }

    }


    private ResultSet getResultSet() throws IOException, SQLException {

        ResultSet rs = null;
        HttpServletRequest request = ServletActionContext.getRequest();

        this.cname = request.getParameter("cname");
        this.pename = request.getParameter("pename");
        this.eventname = request.getParameter("eventname");
        this.btime = request.getParameter("btime");
        this.etime = request.getParameter("etime");

        
        String sql_top = "select  EA_InsertDateTime,EA_Co_Name,EA_eventName,EA_Pe_FirstName,EA_Pe_Code,EA_Pe_DE_Name    ";
        String sql_middle = " from dbo.AIC_Access_EventMessageDataAccess where 1=1";
        if (cname != null && !"ALL".equals(cname)) {
            sql_middle += " and EA_Co_Name=N'" + cname + "'";
        }

        if (!"".equals(pename) && !"ALL".equals(pename) && pename != null) {
            sql_middle += " and EA_Pe_FirstName=N'" + pename + "'";
        }
        if (pename.equals("")) {
            sql_middle += "  and EA_Pe_FirstName is null";
        }

        if (eventname != null && !"ALL".equals(eventname)) {
            sql_middle += "  and EA_eventName=N'" + eventname + "'";
        }

        if ((btime != null) && (!"".equals(btime))) {
            sql_middle += "  and convert(datetime,'" + btime
                    + "') <= convert(datetime,EA_InsertDateTime)";
        }
        if ((etime != null) && (!"".equals(etime))) {
            sql_middle += " and convert(datetime,'" + etime
                    + "') >= convert(datetime,EA_InsertDateTime)";
        }

        String sql_end = "  order by EA_InsertDateTime desc";

        String sql = sql_top + sql_middle + sql_end;

        DBConnectionManager connectionManager = DBConnectionManager
                .getInstance();
        Connection conn = connectionManager.getConnection("namidoor");
        DBConnection connection = new DBConnection(conn);

        rs = connection.execQuery(sql);
        connectionManager.freeConnection("namidoor", conn);

        return rs;
    }

    public String getCname() {
        return cname;
    }

    public void setCname(String cname) {
        this.cname = cname;
    }

    public String getPename() {
        return pename;
    }

    public void setPename(String pename) {
        this.pename = pename;
    }

    public String getEventname() {
        return eventname;
    }

    public void setEventname(String eventname) {
        this.eventname = eventname;
    }

    public String getBtime() {
        return btime;
    }

    public void setBtime(String btime) {
        this.btime = btime;
    }

    public String getEtime() {
        return etime;
    }

    public void setEtime(String etime) {
        this.etime = etime;
    }

    public Map getCnameMap() {
        return cnameMap;
    }

    public void setCnameMap(Map cnameMap) {
        this.cnameMap = cnameMap;
    }

    public Map getPenameMap() {
        return penameMap;
    }

    public void setPenameMap(Map penameMap) {
        this.penameMap = penameMap;
    }

    public Map getEventnameMap() {
        return eventnameMap;
    }

    public void setEventnameMap(Map eventnameMap) {
        this.eventnameMap = eventnameMap;
    }

    
    
}
NamiDoorAction.java
package com.sgm.vo;

import java.sql.*;

public class Demo {

    public static void main(String args[])

    {
        Connection ct = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {

            // 1、加载驱动(作用是把需要的驱动程序加入内存)
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            // 2、得到连接(不用配置数据源),驱动名称
            ct = DriverManager.getConnection(
                    "jdbc:sqlserver://localhost:1433;databaseName=test", "sa",
                    "123456");
            // 3、创建PreparedStatement火箭车
            // 执行【如果是增加、删除、修改executeUpdate(),如果是查询则用executeQuery】

            ps = ct.prepareStatement("select * from users");
            rs = ps.executeQuery();
            while (rs.next()) {
                System.out.println(rs.getString(2) + ";" + rs.getString(3));
            }
        }

        catch (Exception e) {

            e.printStackTrace();

        }
        finally
        {
            try
            {
                if (rs != null) {
                    rs.close();
                }
                if (ps != null)// 如果等于null表明已经关闭
                {
                    ps.close();
                }
                if (ct != null)// 如果等于null表明已经关闭
                {
                    ct.close();
                }
            }
            catch (SQLException e)
            {
            e.printStackTrace();
            }
        }
    }
}
Demo

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/zouteng/p/3337043.html