数据库初级连接

首先

把资源文件(*.properties)放到classes目录下:

例如:

dataresources.properties

driver=sun.jdbc.odbc.JdbcOdbcDriver

uri=jdbc:odbc:(数据源名称)

userName=sa

passWord=

接下来申明一个类来获取加载资源文件:

import java.util.Properties;

import java.io.InputStream;

import java.io.*;

public class InitResource

{

     static String driver;

    static String uri;

    static String username;

    static String password;

    public InitResource() {}

    static{

     InputStream in=null;

       /**          * 通过如下代码来测试路径          * URL u = InitResource.class.getResource("/");          *将properties文件放到classes根目录下          * */

  try{

   in=InitResource.class.getResourceAsStream ("/datasource.properties");

   Properties p=new Properties();

   p.load(in);

    driver=p.getProperty("driver");

    uri=p.getProperty("uri");

    username=p.getProperty("userName");

    password=p.getProperty("passWord");

    } catch (IOException ex) {             ex.printStackTrace();         }

   }

}

接下来写正常的连接了:

import java.sql.*;

public class BaseDao{

   private Connection con;

   private Statement stmt;

   private ResultSet rs;

   static{

    try{

        Class.forName(InitResource.driver);

     }catch(ClassNotFoundException ex){

        ex.printStackTrace();

          }

   }

  public BaseDao(){

     this.openConnection();

     }

  public voide openConnection(){

    try{

       con=DriverManager.getConnection(InitResource.url,InitResouce.

    username,InitResource.password);

        }catch(SqlException e){

           System.out.println("getConnection()内的错误跟踪:" + e.getMessage());

         }

    }

   public boolean closeConne() {    

     try {   

       if(rs!=null) {

        rs.close();

       rs =null;

   }  

        if (stmt != null) {  

               stmt.close();      

           stmt = null;        

     }           

   if (con != null && con.isClosed()) {

                 con.close();         

        con = null;   }

   } catch (SQLException ox) {         

        System.out.println(ox);     

        return false;  

      }        

       return true;    

   }

    public int executeUpdate(String sql) {      

   try {       

      stmt = con.createStatement();    

         return stmt.executeUpdate(sql);    

     } catch (SQLException ex) {   

          ex.printStackTrace();   

          return -1;      

        }

 }   

    public ResultSet executeQuery(String sql) { 

        try {             stmt = con.createStatement   

           (ResultSet.TYPE_SCROLL_INSENSITIVE,

          ResultSet.CONCUR_UPDATABLE);         

          return stmt.executeQuery(sql);     

     } catch (SQLException ex) {  

           ex.printStackTrace();       

          return null;     

     }   

  }

}

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库连接池是一种重要的数据库优化技术,它可以提高数据库的性能和可靠性。本文将介绍如何手写一个简单的数据库连接池。 1. 创建连接池类 首先,我们需要创建一个连接池类,它负责创建和管理数据库连接。 ```python import pymysql import queue class ConnectionPool: def __init__(self, host, port, user, password, db, max_connections=5): self.host = host self.port = port self.user = user self.password = password self.db = db self.max_connections = max_connections self.connections = queue.Queue(maxsize=max_connections) def get_connection(self): if not self.connections.full(): connection = pymysql.connect( host=self.host, port=self.port, user=self.user, password=self.password, db=self.db ) self.connections.put(connection) return self.connections.get() def release_connection(self, connection): self.connections.put(connection) ``` 在上面的代码中,我们使用了Python标准库中的队列模块来实现连接池。连接池的构造函数接受数据库连接参数和最大连接数,然后创建一个队列来保存连接。当需要获取连接时,连接池会检查队列是否已满,如果没有满,就创建一个新的连接并放入队列中。当连接不再使用时,可以通过release_connection方法将连接放回队列中。 2. 使用连接池 现在我们已经创建了一个连接池类,接下来我们将使用它来连接数据库。 ```python pool = ConnectionPool('localhost', 3306, 'root', 'password', 'test') connection1 = pool.get_connection() # 使用connection1进行数据库操作 pool.release_connection(connection1) connection2 = pool.get_connection() # 使用connection2进行数据库操作 pool.release_connection(connection2) # 可以重复获取和释放连接 ``` 在上面的代码中,我们首先创建了一个连接池实例,并使用get_connection方法获取了两个数据库连接对象connection1和connection2,然后分别使用它们进行数据库操作后,使用release_connection方法将它们放回连接池中。需要注意的是,为了避免连接泄露,我们必须始终在使用完连接后释放它。 3. 总结 本文中,我们介绍了如何手写一个简单的数据库连接池,它可以提高数据库的性能和可靠性。在实际开发中,我们可以根据需要对连接池进行优化和扩展,例如添加连接超时机制、连接重试机制、负载均衡机制等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值