求数据库连接池代码
MYSQL的数据库

解决方案 »

  1.   

    Java连接数据库代码摘要
    1、Oracle8/8i/9i数据库(thin模式) 
    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 
    String url="jdbc:oracle:thin:@localhost:1521:orcl"; 
    //orcl为数据库的SID 
    String user="test"; 
    String password="test"; 
    Connection conn= DriverManager.getConnection(url,user,password); 2、DB2数据库 
    Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance(); 
    String url="jdbc:db2://localhost:5000/sample"; 
    //sample为你的数据库名 
    String user="admin"; 
    String password=""; 
    Connection conn= DriverManager.getConnection(url,user,password); 3、Sql Server7.0/2000数据库 
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb"; 
    //mydb为数据库 
    String user="sa"; 
    String password=""; 
    Connection conn= DriverManager.getConnection(url,user,password); 4、Sybase数据库 
    Class.forName("com.sybase.jdbc.SybDriver").newInstance(); 
    String url =" jdbc:sybase:Tds:localhost:5007/myDB"; 
    //myDB为你的数据库名 
    Properties sysProps = System.getProperties(); 
    SysProps.put("user","userid"); 
    SysProps.put("password","user_password"); 
    Connection conn= DriverManager.getConnection(url, SysProps); 5、Informix数据库 
    Class.forName("com.informix.jdbc.IfxDriver").newInstance(); 
    String url = 
    "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver; 
    user=testuser;password=testpassword"; 
    //myDB为数据库名 
    Connection conn= DriverManager.getConnection(url); 6、MySQL数据库 
    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 
    String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1" 
    //myDB为数据库名 
    Connection conn= DriverManager.getConnection(url); 7、PostgreSQL数据库 
    Class.forName("org.postgresql.Driver").newInstance(); 
    String url ="jdbc:postgresql://localhost/myDB" 
    //myDB为数据库名 
    String user="myuser"; 
    String password="mypassword"; 
    Connection conn= DriverManager.getConnection(url,user,password); 
      

  2.   

    发e-mail给我。。
    [email protected]
    我给你传一个 。
      

  3.   

    Java数据库连接池超强方法!http://qlenovo.bokee.com/viewdiary.12600683.html
    在这里讲了以mysql为例的连接池。
      

  4.   

    自己写连接池啊,不会吧。有好多现成的就可以用的,比如:C3P0、DBCP这些都是不错的,
    连Hibernate、Tomcat都采用这些的。
      

  5.   

    7楼提到的那个链接我去看了一下,有一个地方处理的不是很好:那个连接池并不允许使用者调用Connection的close()方法,如果
    调用了close()这个连接池就会处理不停地递归状态直至栈溢出。但
    是并不能限制使用者调用close()啊,在一些成熟的连接池中的做法
    就是:在调用close()时并不是真正地关闭Connection,而是将其
    归还到池中去,这一般采用的是动态代理技术,把原本的close()方
    法改写,下面的是我在单机测试时用的连接工厂,采用JDK的动态代
    理重写的close()方法,可以参照一下把那个连接池修改一下:import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    import java.lang.reflect.Proxy;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;import com.util.DatabaseUtil;public class ConnectionFactory { private static Connection con = null; private ConnectionFactory() {
    } /**
     * 采用单例模式的连接工厂
     * 
     * @return
     * @throws SQLException
     */
    public synchronized static Connection getConnection() throws SQLException {
    if (con == null || con.isClosed()) {
    try {
    Class.forName(DatabaseUtil.getDriver());
    String url = DatabaseUtil.getUrl();
    String username = DatabaseUtil.getUsername();
    String password = DatabaseUtil.getPassword();
    con = DriverManager.getConnection(url, username, password);
    ConnectionHandler conHandler = new ConnectionHandler();
    con = conHandler.bind(con);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    }
    return con;
    }
    }/**
     * 利用动态代理,在调用 close() 时并不真正的关闭 Connection,
     * 便于重用,在单机用户中始终只存在一个 Connection,提高连接速度
     * @author Administrator
     */
    class ConnectionHandler implements InvocationHandler {
    private Connection con = null;
    public Connection bind(Connection connection) {
    con = connection;
    Connection conProxy = (Connection)Proxy.newProxyInstance(
    connection.getClass().getClassLoader(),
    connection.getClass().getInterfaces(),
    this
    );
    return conProxy;
    }

    public Object invoke(Object proxy, Method method, Object[] args)
    throws Throwable {
    Object obj = null;
    if(!method.getName().equals("close")) {
    obj = method.invoke(con, args);
    }else{
    // 将连接归还到池中去的代码,单个连接时可以什么都不做
    }
    return obj;
    }
    }
      

  6.   

    谢谢各位了
    我试过10楼的抛出ClassCastException异常