zoukankan      html  css  js  c++  java
  • 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

     

     

     

     

     

     

     

     

  • 相关阅读:
    List和Dictionary互转
    table html
    华为解锁BL
    安卓小米系统开发一些适配问题
    02布局总结
    02表格布局
    02Framelayout:帧布局
    02线性布局
    02相对布局
    01安卓像素 dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算
  • 原文地址:https://www.cnblogs.com/zouteng/p/3337043.html
Copyright © 2011-2022 走看看