但有人说ACCESS不能用连接池
希望有人指点迷经
-------------------
这种说法可能不能成立吧,说白了连接池就是预先建一些连接。如:poolman就是在各数据库驱动之上再建的一个层,它实现池的功能同时屏蔽真正的驱动。

解决方案 »

  1.   

    当然可以用拉,我开始就是用ACCESS的。
      

  2.   

    连接池就是一段java程序而已。
      

  3.   

    上面说的有点狭隘了连接池就是管理连接的创建,分配,返回,释放连接的程序。
    一种是已经写好了的,只要配置就可以用的连接池。由于某些原因可能没有支持access的数据库,因而产生了access不能使用连接池的误解。另外就是自己用java写的连接池程序。他既可以是oracle,sqlserver数据库数据库,也可以是access数据库的。
      

  4.   

    除了JAVA程序外,还要在运行环境中设置一些东西吗???????????
      

  5.   

    可以用Access的连接池,下面是连接池的代码
    贴出2个java文件代码:
    //================= ConnectionBean.java ===================
    import java.io.Serializable;
    import java.sql.*;
    public class ConnectionBean implements java.io.Serializable
      {
      private Connection connection = null;
      private boolean inuse = false;
      public ConnectionBean()
        { }
      public ConnectionBean(Connection value)
        { if (value!=null) connection = value; }
      public Connection getConnection()
        { return connection; }
      public void setConnection(Connection con)
        { connection = con; }
      public void setInuse(boolean value)
        { inuse = value; }
      public boolean getInuse()
        { return inuse; }
      public boolean inUse()
        { return inuse; }
      public void close()
        {
        try
          { connection.close(); }
        catch (SQLException sqle)
          { System.err.println(sqle.getMessage()); }
        }
      }
      

  6.   

    //==================== PoolBean.java ======================
    import java.io.Serializable;
    import java.sql.*;
    import java.util.*;
    public class PoolBean implements java.io.Serializable
      {
      private String driver = null;
      private String url = null;
      private int size = 0;
      private String username = new String("");
      private String password = new String("");
      private Vector pool = null;
      public PoolBean() { }
      public void setDriver(String value)
        { if (value!=null) driver=value; }
      public String getDriver()
        { return driver; }
      public void setURL(String value )
        { if (value!=null) url=value; }
      public String getURL()
        { return url; }
      public void setSize(int value)
        { if (value>1) size=value; }
      public int getSize()
        { return size; }
      public void setUsername(String value)
        { if (value!=null) username=value; }
      public String getUserName()
        { return username; }
      public void setPassword(String value)
        { if (value!=null) password=value; }
      public String getPassword()
        { return password; }
      private Connection createConnection() throws Exception
        {
        Connection con = null;
        con = DriverManager.getConnection(url,username,password);
        return con;
        }
      public synchronized void initializePool() throws Exception
        {
        if (driver==null)
          throw new Exception("No Driver Name Specified!");
        if (url==null)
          throw new Exception("No URL Specified!");
        if (size<1)
          throw new Exception("Pool size is less than 1!");
        try
          {
          Class.forName(driver);
          for (int x=0; x<size; x++)
            {
            Connection con = createConnection();
            if (con!=null)
              {
              ConnectionBean pcon = new ConnectionBean(con);
              addConnection(pcon);
              }
            }
          }
        catch (Exception e)
          {
          System.err.println(e.getMessage());
          throw new Exception(e.getMessage());
          }
        }
      private void addConnection(ConnectionBean value)
        {
        if (pool==null) pool=new Vector(size);
        pool.addElement(value);
        }
      public synchronized void releaseConnection(Connection con)
        {
        for (int x=0; x<pool.size(); x++)
          {
          ConnectionBean pcon =
            (ConnectionBean)pool.elementAt(x);
          if (pcon.getConnection()==con)
            {
            System.err.println("Releasing Connection " + x);
            pcon.setInUse(false);
            break;
            }
          }
        }
      public synchronized Connection getConnection()
      throws Exception
        {
        ConnectionBean pcon = null;
        for (int x=0; x<pool.size(); x++)
          {
          pcon = (ConnectionBean)pool.elementAt(x);
          if (pcon.inUse()==false)
            {
            pcon.setInUse(true);
            return pcon.getConnection();
            }
          }
        try
          {
          Connection con = createConnection();
          pcon = new ConnectionBean(con);
          pcon.setInUse(true);
          pool.addElement(pcon);
          }
        catch (Exception e)
          {
          System.err.println(e.getMessage());
          throw new Exception(e.getMessage());
          }
        return pcon.getConnection();
        }
      public synchronized void emptyPool()
        {
        for (int x=0; x<pool.size(); x++)
          {
          System.err.println("Closing JDBC Connection " + x);
          ConnectionBean pcon =
            (ConnectionBean)pool.elementAt(x);
          if (pcon.inUse()==false)
            pcon.close();
          else
            {
            try
              {
              java.lang.Thread.sleep(30000);
              pcon.close();
              }
            catch (InterruptedException ie)
              {
              System.err.println(ie.getMessage());
              }
            }
          }
        }
      }