精华内容
下载资源
问答
  • 【Python + Oracle】Python Oracle连接—改进版

    千次阅读 热门讨论 2018-10-09 18:28:19
    oracle 连接,解决频繁连接oracle数据库带来的连接资源耗费问题 程序托管 GitHub-OraclePool 修改日期 2019年12月27日 version 3.0改进说明: *)修复一个 Bug,该 Bug导致连接中有且仅有一个...

    Oracle 连接池第四版。

    编程语言Python
    语言版本3.5.3
    实现功能oracle 连接池,解决频繁连接oracle数据库带来的连接资源耗费问题
    程序托管GitHub-OraclePool
    修改日期2020年8月3日

     

    version 4.0 改进说明:

    **[2020-04-21]**
    
    + 修复连接用完后,不放回连接池的`bug`
    + 修复使用类名称获取`pool`时的类名称错误(`OrclConnPool`),改为用`self`
    + 改进了对`config`连接信息的判断逻辑,使得`config`的配置更加简化
    + 改进了新的注释,使用更加清晰
    + 改进了部分代码的格式,使得其更规范
    + 新增`fetch_all`和`fetch_one`
    + 优化了`demo`内容和格式,使得其更规范

    程序源码:

    # -*- coding: utf-8 -*-
    
    """
    --------------------------------------
    @File       : oracle_pool.py
    @Author     : maixiaochai
    @Created on : 2020/4/21 15:47
    --------------------------------------
    """
    
    import cx_Oracle as Oracle
    from DBUtils.PooledDB import PooledDB
    
    
    class OraclePool:
        """
        1) 这里封装了一些有关oracle连接池的功能;
        2) sid和service_name,程序会自动判断哪个有值,
            若两个都有值,则默认使用service_name;
        3) 关于config的设置,注意只有 port 的值的类型是 int,以下是config样例:
            config = {
                'user':         'maixiaochai',
                'password':     'maixiaochai',
                'host':         '192.168.158.1',
                'port':         1521,
                'sid':          'maixiaochai',
                'service_name': 'maixiaochai'
            }
        """
    
        def __init__(self, config):
            """
            获得连接池
            :param config:      dict    Oracle连接信息
            """
            self.__pool = self.__get_pool(config)
    
        @staticmethod
        def __get_pool(config):
            """
            :param config:        dict    连接Oracle的信息
            ---------------------------------------------
            以下设置,根据需要进行配置
            maxconnections=6,   # 最大连接数,0或None表示不限制连接数
            mincached=2,        # 初始化时,连接池中至少创建的空闲连接。0表示不创建
            maxcached=5,        # 连接池中最多允许的空闲连接数,很久没有用户访问,连接池释放了一个,由6个变为5个,
                                # 又过了很久,不再释放,因为该项设置的数量为5
            maxshared=0,        # 在多个线程中,最多共享的连接数,Python中无用,会最终设置为0
            blocking=True,      # 没有闲置连接的时候是否等待, True,等待,阻塞住;False,不等待,抛出异常。
            maxusage=None,      # 一个连接最多被使用的次数,None表示无限制
            setession=[],       # 会话之前所执行的命令, 如["set charset ...", "set datestyle ..."]
            ping=0,             # 0  永远不ping
                                # 1,默认值,用到连接时先ping一下服务器
                                # 2, 当cursor被创建时ping
                                # 4, 当SQL语句被执行时ping
                                # 7, 总是先ping
            """
            dsn = None
            host, port = config.get('host'), config.get('port')
    
            if 'service_name' in config:
                dsn = Oracle.makedsn(host, port, service_name=config.get('service_name'))
    
            elif 'sid' in config:
                dsn = Oracle.makedsn(host, port, sid=config.get('sid'))
    
            pool = PooledDB(
                Oracle,
                mincached=5,
                maxcached=10,
                user=config.get('user'),
                password=config.get('password'),
                dsn=dsn
            )
    
            return pool
    
        def __get_conn(self):
            """
            从连接池中获取一个连接,并获取游标。
            :return: conn, cursor
            """
            conn = self.__pool.connection()
            cursor = conn.cursor()
    
            return conn, cursor
    
        @staticmethod
        def __reset_conn(conn, cursor):
            """
            把连接放回连接池。
            :return: 
            """
            cursor.close()
            conn.close()
    
        def __execute(self, sql, args=None):
            """
            执行sql语句
            :param sql:     str     sql语句
            :param args:    list    sql语句参数列表
            :param return:  cursor
            """
            conn, cursor = self.__get_conn()
            
            if args:
                cursor.execute(sql, args)
            else:
                cursor.execute(sql)
    
            return conn, cursor
    
        def fetch_all(self, sql, args=None):
            """
            获取全部结果
            :param sql:     str     sql语句
            :param args:    list    sql语句参数
            :return:        tuple   fetch结果
            """
            conn, cursor = self.__execute(sql, args)
            result = cursor.fetchall()
            self.__reset_conn(conn, cursor)
    
            return result
    
        def fetch_one(self, sql, args=None):
            """
            获取全部结果
            :param sql:     str     sql语句
            :param args:    list    sql语句参数
            :return:        tuple   fetch结果
            """
            conn, cursor = self.__execute(sql, args)
            result = cursor.fetchone()
            self.__reset_conn(conn, cursor)
    
            return result
    
        def execute_sql(self, sql, args=None):
            """
            执行SQL语句。
            :param sql:     str     sql语句
            :param args:    list    sql语句参数
            :return:        tuple   fetch结果
            """
            conn, cursor = self.__execute(sql, args)
            conn.commit()
            self.__reset_conn(conn, cursor)
    
        def __del__(self):
            """
            关闭连接池。
            """
            self.__pool.close()
    
    
    def demo():
        config = {
            'user': 'maixiaochai',
            'password': 'maixiaochai',
            'host': '192.168.158.1',
            'port': 1521,
            'sid': 'maixiaochai',
            'service_name': 'maixiaochai'
        }
    
        sql = "SELECT COUNT(*) FROM MAIXIAOCHAI"
    
        orcl = OraclePool(config)
        result = orcl.fetch_all(sql)
        print(result)
    
    
    if __name__ == "__main__":
        demo()
    

    version 3.0 改进说明:

    *)修复一个 Bug,该 Bug导致连接池中有且仅有一个连接资源被使用,其余空闲。
    *) 2019-12-27 12:45:21 by MaiXiaochai
    version 2.0 改进说明:
    *)将原来的 orcl_pool.py 文件单独拿出来,创建新库 OracleConnectionPool,便于编辑和分享;
    *)更新"程序链接"内容和 URL。
    *)2019-5-29 16:54:37 by MaiXiaochai
    *)由原来的只能维持一个连接池改为可维持多个连接池;
    *)加入了对 service_name 连接方式的支持;
    *)添加了析构函数,对连接池资源进行回收;
    *)对相关的代码注释进行了规范,使其看起来比较整洁;
    *)添加了一个使用样例。
    *)2019-3-28 19:13:47 by MaiXiaochai
    

    程序源码: 

    version 3.0

    # -*- coding: utf-8 -*-
    
    # @File:     oracle_conn_pool.py
    # @Project:  OraclePool
    # @Date:     2019/5/29 15:19
    # @Author:   MaiXiaochai
    # @Modify:   2020/1/6 16:02
    
    import cx_Oracle as Oracle
    from DBUtils.PooledDB import PooledDB
    
    
    class OraclePool(object):
        """
        1) 这里封装了一些有关oracle连接池的功能;
        2) sid和service_name,程序会自动判断哪个有值,
            若两个都有值,则默认使用sid;
            若只想用其中一个,则只需要把另一个设置为空即可。如,service_name = ''
        3) 关于config的设置,注意只有 port 的值的类型是 int,以下是config样例:
            orcl_cfg = {
                        'user': 'user_name_str',
                        'passwd': 'passwd_str',
                        'host': 'xxx.xxx.xxx.xxx_str',
                        'port': port_int,
                        'sid': 'sid_str',
                        'service_name': 'service_name_str'}
        """
    
        def __init__(self, config):
            self.pool = OrclConnPool.__get_pool(config)
    
        @staticmethod
        def __get_pool(conf):
            """
            一些 PoolDB 中可能会用到的参数,根据实际情况自己选择
            mincached:       启动时开启的空连接数量
            maxcached:       连接池最大可用连接数量
            maxshared:       连接池最大可共享连接数量
            maxconnections:  最大允许连接数量
            blocking:        达到最大数量时是否阻塞
            maxusage:        单个连接最大复用次数
    
            :param conf:        dict    连接Oracle的信息
            """
            host, port, sid, service_name = conf.get('host'), conf.get('port'), conf.get('sid'), conf.get('service_name')
            dsn = None
    
            if sid:
                dsn = Oracle.makedsn(host, port, sid=sid)
    
            elif service_name:
                dsn = Oracle.makedsn(host, port, service_name=conf.get('service_name'))
    
            __pool = PooledDB(Oracle, user=conf['user'], password=conf['passwd'], dsn=dsn, mincached=5, maxcached=30)
    
            return __pool
    
        def execute_sql(self, sql, args=None):
            """
            执行sql语句
            :param sql:     str     sql语句
            :param args:    list    sql语句参数列表
            """
    
            cur = self.pool.connection().cursor()
            if args:
                cur.execute(sql, args)
            else:
                cur.execute(sql)
    
        def fetch_all(self, sql, args=None):
            """
            获取全部结果
            :param sql:     str     sql语句
            :param args:    list    sql语句参数
            :return:        tuple   fetch结果
            """
            cur = self.pool.connection().cursor()
            if args:
                cur.execute(sql, args)
            else:
                cur.execute(sql)
            return cur.fetchall()
    
        def __del__(self):
            """
            在实例资源被回收时,关闭该连接池
            """
            try:
                self.pool.close()
            except Exception:
                pass
    
    
    def simple_demo():
        orcl_cfg = {
            'user': 'hello',
            'passwd': 'Python',
            'host': '192.168.158.xxx',
            'port': 1521,
            'sid': '',
            'service_name': 'MaiXiaochai'}
    
        test_sql = "SELECT COUNT(1) FROM TEST_PYTHON"
    
        orcl = OraclePool(orcl_cfg)
        orcl.execute_sql(test_sql)
        res = orcl.cur.fetchone()
        print(res)
    
    
    if __name__ == "__main__":
        simple_demo()
    

    传送门GitHub:OraclePool

    The end.

    展开全文
  • Oracle连接操作

    千次阅读 2019-06-30 01:31:07
    一:首先是将JDBC的驱动包oracle6.jar复制到Tomcat安装路径下的llib目录下 二:在web工程目录下的META-INF\context.xml文件下输入以下代码(特别注意文件夹别搞错了): <span style="font-size:14px;color...

    一:首先是将JDBC的驱动包oracle6.jar复制到Tomcat安装路径下的llib目录下

    二:在web工程目录下的META-INF\context.xml文件下输入以下代码(特别注意文件夹别搞错了):

     

    <span style="font-size:14px;color:#663366;"><?xml version="1.0" encoding="UTF-8"?>
    <Context debug="5" reloadable="true">
     <WatchedResource>WEB-INF/web.xml</WatchedResource>
      
    <Resource name="jdbc/oracle" type="javax.sql.DataSource" auth="Container"
        driverClassName="oracle.jdbc.driver.OracleDriver"
        url="jdbc:oracle:thin:@localhost:1521:orcl"
        username="C##SCOTT"
        password="tiger"
        maxActive="5"
        maxIdle="2"
        maxWait="6000"
     />
    </Context></span>

     

    在myeclipse中没有context.xml文件需要自己创建。

     

    三:在web工程目录下的在WEB-INF\web.xml文件下配置以下代码

     

     <span style="color:#009900;"><resource-ref>
          <description>DB Connection</description>
          <res-ref-name>jdbc/oracle</res-ref-name>
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
    </resource-ref></span>

     

    四:配置完成后便是测试了

        Connection con = null;// 创建一个数据库连接
        Statement stmt = null;// 创建预编译语句对象,一般都是用这个而不用Statement
        ResultSet result = null;// 创建一个结果集对象
        
        try{    
           
            Context Ctx = new InitialContext();
    
            Context envCtx = (Context) Ctx.lookup("java:comp/env");
             DataSource ds = (DataSource) envCtx.lookup("jdbc/oracle");
    
            con = ds.getConnection();    
            System.out.println("数据库连接成功!");
            stmt = con.createStatement();    
    
            String strSql = "select * from usertable2";    
    
            result = stmt.executeQuery(strSql);    
    
            while(result.next()){    
                 out.print(result.getString("username"));
                }
    
            }    
    
            catch(Exception ex){
             out.print("Exception is :"+ex.getMessage());    
             ex.printStackTrace();    
            }
            finally {
                try {
                    // 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
                    // 注意关闭的顺序,最后使用的最先关闭
                    result.close();
                    stmt.close();
                    con.close();
                    System.out.println("数据库连接已关闭!");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

     

    转载于:https://www.cnblogs.com/qisong178878915/p/4086036.html

    展开全文
  • oracle连接配置

    千次阅读 2009-09-10 16:07:00
    1、导入JDBC包2、注册oracle JDBC驱动程序3、打开数据库连接4、执行SQL DML语句在数据库表中获取、添加、修改和删除行 一、JDBC驱动程序 共有有4种1、Thin驱动程序 Thin驱动程序是所有驱动程序中资源消耗最小的,...

    这些细节包括:
    1、导入JDBC包
    2、注册oracle JDBC驱动程序
    3、打开数据库连接
    4、执行SQL DML语句在数据库表中获取、添加、修改和删除行
     

    一、JDBC驱动程序
        共有有4种
    1、Thin驱动程序
         Thin驱动程序是所有驱动程序中资源消耗最小的,而且完全用java编写的。
         该驱动程序只使用TCP/IP且要求Oracle Net。被称为第4类驱动程序。
         它使用TTC协议与Oracle数据库进行通信。能够在Applet、Application中使用。
    2、OCI驱动程序
         OCI驱动比Thin需要资源要多,但性能通常好一点。OCI驱动适合于部署在
         中间层的软件,如Web服务器。不能在applet中使用OCI驱动。是第2类驱动程序。
         不完全用java写的,还包含了c代码。该驱动有许多附加的性能增强特性,
         包括高级的连接缓冲功能。
         注意: OCI驱动要求在客户计算机上安装它。
    3、服务器内部驱动程序
         服务器内部驱动程序提供对数据库的直接访问,Oracle JVM使用它与数据库进行通信。
         Oracle JVM是与数据库集成的Java Virtual Machine,可以使用Oracle JVM将
         Java类装载进数据库,然后公布和运行这个类中包含的方法。
    4、服务器Thin驱动程序
         服务器端Thin驱动程序也是由Oracle JVM使用的,它提供对远程数据库的访问。
         也是完全用Java编写的。

    二、导入JDBC包

    三、注册Oracle JDBC驱动程序
           必须先向java程序注册Oracle JDBC驱动程序,然后才能打开数据库连接。
           有两种注册Oracle JDBC驱动程序的办法。
     1、使用java.lang.Class的forName()方法
           例子:Class.forName("oracle.jdbc.OracleDriver");
     2、使用JDBC DriverManager类的registerDriver()方法。
           例子:DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
           如果使用Oracle8i JDBC驱动程序,那么需要导入oracle.jdbc.driver.OracleDriver类,
           然后注册这个类的实例。
           例子:
           import oracle.jdbc.driver.OracleDriver;
           DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
           注意 :从JDBC2.0开始,只用JDBC驱动程序的更标准办法是通过数据源。
    四、打开数据库连接
            必须先打开数据库连接,然后才能在Java程序中执行SQL语句。打开数据库连接
            的主要办法。
     1、DriverManager类的getConnection()方法。
          DriverManager.getConnection(URL,USERNAME ,PASSWROD );
              URL :程序要连接的数据库,以及要使用的JDBC驱动程序
                  URL的结构依赖于JDBC驱动程序的生产商。对于Oracle JDBC驱动程序,数据库URL的结构:
                       driver_name@driver_information
                          driver_name 是程序使用的Oracle JDBC驱动程序的名称。如:
                               jdbc:oracle:thin Oracle JDBC Thin驱动程序
                               jdbc:oracle:oci  Oracle JDBC OCI驱动程序
                               jdbc:oracle:oci8 Oracle JDBC OCI驱动程序
                          driver_information 是连接数据库所需的驱动程序特有的信息。这依赖于使用的驱动程序。
                              对于Oracle JDBC Thin驱动程序,可以用
                               host_name:port:database_sid 或者 Oracle Net关键字-值对
                               (description=(address=(host=host_name)(protocol=tcp)(port=port()
                               (connect_data=(sid=database_sid)))
                                        host_name: 运行数据库的机器的名称
                                                  port: Net数据库监听器等待这个端口上的请求,默认是1521
                                     database_sid: 要连接的数据库实例的Oracle SID。
            USERNAME :   程序连接数据库时使用的数据库用户名
            PASSWROD :   用户名的口令
                            例子:
                                  Connection myConnection=DriverManager.getConnection(
                                  "jdbc:oracle:thin:@localhost:1521:ORCL",
                                  "store_user",
                                  "store_password");

                                  Connection myConnection=DriverManager.getConnection(
                                  "jdbc:oracle:oci:@(description=(address=(host=localhost)"+
                                  "(protocol=tcp)(port=1521))(connect_data=(sid=ORCL)))",
                                  "store_user",
                                  "store_password");
     2、使用Oracle数据源对象,必须先创建这个对象,然后连接它。使用这种方法
           采用了一种设置数据库连接信息的标准化方式,Oracle数据源对象可以与
           Java Naming and Directory Interface(Java名字与目录接口,JNDI)一起使用。

     

     

     

     public Connection openConnection(){
    String url = "";
    String driver ="";
    String user ="";
    String password = "";

    Properties prop = new Properties();

    try {
    prop.load(this.getClass().getClassLoader().getResourceAsStream("DBConfig.properties"));

    driver = prop.getProperty("driver");
    url = prop.getProperty("url");
    user = prop.getProperty("user");
    password = prop.getProperty("password");

    Class.forName(driver);

    Connection conn = DriverManager.getConnection(url,user,password);
    return conn;
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return null;
    }

     

    展开全文
  • tomcat5.5 oracle连接配置说明

    千次阅读 2009-09-08 10:30:00
    tomcat5.5 oracle连接配置说明ResultSet rs = null; Connection conn = null; Statement stmt = null; try { //1.注册驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); //2.得到连接 conn=Dri

      tomcat5.5 oracle连接池配置说明

    ResultSet rs = null;

      Connection conn = null;

      Statement stmt = null;

      try {

       //1.注册驱动

       Class.forName("oracle.jdbc.driver.OracleDriver");

       //2.得到连接

     conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:icss","lj","123");

       //3.创建Statement 

        stmt = conn.createStatement();

       //4.得到ResultSet

       rs = stmt.executeQuery("select * from user_t");

       //5.操作resultSet

       while(rs.next()){

        System.out.println(rs.getString("name"));

       }

      } catch (Exception e) {

       // TODO Auto-generated catch block

       e.printStackTrace();

      }finally{

       //6.释放资源

        //6.1.关闭ResultSet

       if(rs!=null){

        try {

         rs.close();

        } catch (SQLException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

        }

       }

        //6.2 关闭Statement;

       if(stmt!=null){

        try {

         stmt.close();

        } catch (SQLException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

        }

       }

        //6.3.关闭Connection

       if(conn!=null){

        

        try {

         conn.close();

        } catch (SQLException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

        }

       }

       

      }

     }

     

    tomcat5.5 &oracle连接池配置说明

    一,将oracle驱动classes12.jar复制到tomcat安装路径下的“/common/lib”中去。

    二,打开tomcat安装路径下/conf/中的server.xml文件加入一段代码(红色字体为添加内容):

    tomcat 5.5中使用数据库连接池时server.xml的配置:

    在</Host>标签的上面加上以下内容: 

    例如工程名为:smalljdbc

    <Context debug="0"

              docBase="SmallJdbc"

              path="/SmallJdbc" reloadable="true">

              <Resource auth="Container"

                driverClassName="oracle.jdbc.driver.OracleDriver"

                logAbandoned="true" loginTimeout="300" maxActive="200"

                maxIdle="20" maxWait="3000" minIdle="10" name="jdbc/smalljdbc"

                password="数据库密码" removeAbandoned="true"

                removeAbandonedTimeout="600" type="javax.sql.DataSource"

                url="jdbc:oracle:thin:@127.0.0.1:1521:全局数据库名" username="数据库的用户名"/>

            </Context>

          </Host>

    程序要连接数据库时用到下面代码时:

    ctx = new InitialContext();

    DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/smalljdbc");

    这里要保持连接字符串中后两位的jdbc/smalljdbc和上面配置文件name="jdbc/smalljdbc"中的内容一致即可。

    三,jsp测试页面dbsTest.jsp :

    <%@ page contentType="text/html; charset=gb2312"

    language="java" import="java.sql.*" errorPage="" %>

    <%@page import="javax.naming.*"%>

    <%@page import="javax.sql.*"%>

    <%

    DataSource ds = null;

    InitialContext ctx=new InitialContext();

    ds=(DataSource)ctx.lookup("java:comp/env/jdbc/smalljdbc ");

    Connection conn = ds.getConnection();

    System.out.println("ds="+ds);

    System.out.println("conn="+conn);

    %>

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">

    <title>JNDI 测试</title>

    </head>

    <body>

    ds=<%=ds%>

    <br>

    count=<%=conn%>

    </body>

    </html>

    如果在ie浏览器和后台console都会显示

    count=org.apache.tomcat.dbcp.dbcp.PoolableConnection@17af46e ds=org.apache.tomcat.dbcp.dbcp.BasicDataSource@8491b8

    类似的字符,说明连接成功!!!

    四,由于tomcat不同版本连接池的配置是有区别的,大家要注意自己安装的tomcat版本和安装方法的对应!

     

     

    import java.sql.Connection;

    import java.sql.DriverManager;

    import java.sql.PreparedStatement;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.sql.Statement;

     

     

    public class Test {

     

     public static void main(String[] args){

      

      try {

       

       ResultSet rs = null;

       Connection conn = null;

       Statement stmt = null;

     //  PreparedStatement pstm=null;

       

       Class.forName( "org.gjt.mm.mysql.Driver" );

       

       conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/mysql","root","root");

       

       stmt=conn.createStatement();

       

      // stmt.execute("insert into test (name,other) values('asd','fgh')");

       

       stmt.execute("update test set name='lj' where name='lee'");

       

     //  stmt.execute("delete from test where name='123'");

       

     //  String sql="insert into test (name,other) values('asd','fgh')";

       

     //  pstm=conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

       

     //  stmt=(Statement) conn.createStatement();

       

       //rs=(ResultSet) stmt.executeQuery("select * from test");

       

       

       

      // pstm.executeQuery(sql);

       

     //  while(rs.next()){

        

     //   System.out.println(rs.getString("name"));

        

     //  }

       

       

      } catch (ClassNotFoundException e) {

       // TODO Auto-generated catch block

       e.printStackTrace();

      } catch (SQLException e) {

       // TODO Auto-generated catch block

       e.printStackTrace();

      }

      

     }

    }

     

    public PageNum queryAllScheme(int pagecurrent,String userid) {

      ResultSet rs=null;

      

      PreparedStatement pstm=null;

      

      Connection conn=null;

      

      conn=ConnectionFactory.getConnection();

      

      PageNum pn=new PageNum();

      

      pn.setPagecurrent(pagecurrent);

      

      int pagesize=5;    //a page show 5 records

      

      //int pagecurrent;   //current page 's num

      

      int rsnum;     //resultset's number

      

      int pageall = 0;    //need to divide how mang pages

      

      ArrayList<Scheme> list=new ArrayList<Scheme>();

      

      try {

       

       String strQuery="select * from meet_scheme where scheme_user_id=?";

       

       pstm = conn.prepareStatement(strQuery,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

       

       pstm.setString(1,userid);

       

       rs=pstm.executeQuery();

       

       rs.last();

       

       rsnum=rs.getRow();    //get the number of resultset

       

       pageall=((rsnum-1)/pagesize)+1;

       

       rs.beforeFirst();

       

       if(pagecurrent!=1){

       

        rs.absolute(pagesize*(pagecurrent-1));

       

       }

       

       while((--pagesize>=0)&& rs.next()){

        

        Scheme scheme=new Scheme();

        

        scheme.setSchemeId(rs.getString("scheme_id"));

        

        scheme.setSchemeName(rs.getString("scheme_Name"));

        

        scheme.setSchemeContent(rs.getString("scheme_Content"));

        

        scheme.setSchemeStartDate(rs.getString("scheme_Start_Date"));

        

        scheme.setSchemeEndDate(rs.getString("scheme_End_Date"));

        

        scheme.setUserId(rs.getString("scheme_user_id"));

        

        list.add(scheme);

       }

       

       

      } catch (SQLException e) {

       

       e.printStackTrace();

       

      }finally{

       

       DatabaseUtils.release(rs, pstm, conn);

      } 

      

      pn.setList(list);

      

      pn.setPageall(pageall);

      

      return pn;

      

     }

    package com.icss.oa.utils;

    import java.util.List;

    public class PageNum {

     private int pageall;

     

     private List list;

     

     private int pagecurrent;

     public int getPagecurrent() {

      return pagecurrent;

     }

     public void setPagecurrent(int pagecurrent) {

      this.pagecurrent = pagecurrent;

     }

     public int getPageall() {

      return pageall;

     }

     public void setPageall(int pageall) {

      this.pageall = pageall;

     }

     public List getList() {

      return list;

     }

     public void setList(List list) {

      this.list = list;

     }

     

     

    }

     

      ResultSet rs=null;

      

      PreparedStatement pstm=null;

      

      Connection conn=null;

      

      conn=ConnectionFactory.getConnection();

      

      try {

       

       String strQuery="delete from meet_scheme where scheme_id=? and scheme_user_id=?";

       

       pstm = conn.prepareStatement(strQuery,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

       

       pstm.setString(1, schemeId);

       

       pstm.setString(2, userid);

       

       rs=pstm.executeQuery();

       

      } catch (SQLException e) {

       

       e.printStackTrace();

       

      }finally{

       

       DatabaseUtils.release(rs, pstm, conn);

       

      } 

     

    <%@ page pageEncoding="gbk" import="com.icss.oa.entity.Scheme,java.util.List,com.icss.oa.utils.PageNum" %>

    <head>

    <link href='<%=session.getAttribute("basepath")+"inc/basic.css"%>' rel="stylesheet" type="text/css">

    </head>

    <body>

     <table border="1" id=PrintA class="table">

     <tr>

         <td>日程名称</td>

         <td>日程内容</td>

         <td>日程开始时间</td>

         <td>日程结束时间</td>

         <td>操 作</td>

         <td>操 作</td>

        </tr>

       <%

       PageNum pn=(PageNum)request.getAttribute("pn");

      

       List list=pn.getList();

      

       for(int i=0;i<list.size();i++){ %>

       <tr>

         <td><%=((Scheme)list.get(i)).getSchemeName()%></td>

         <td><%=((Scheme)list.get(i)).getSchemeContent()%></td>

         <td width="80"><%=((Scheme)list.get(i)).getSchemeStartDate()%></td>

         <td width="80"><%=((Scheme)list.get(i)).getSchemeStartDate()%></td>

         <td><a href="/meet/servlet/ActionServlet?actiontype=scheme&methodtype=delScheme&schemeId=<%=((Scheme)list.get(i)).getSchemeId()%>">注销</a></td>

         <td><a href="/meet/servlet/ActionServlet?actiontype=scheme&methodtype=initScheme&schemeId=<%=((Scheme)list.get(i)).getSchemeId()%>">修改</a></td>

       </tr>

       <% }%>

     </table>

    <% for(int j=1;j<=pn.getPageall();j++){

    if(pn.getPagecurrent()==j){%>

    第<%=j%>页

    <% }else{%>

    <a href="/meet/servlet/ActionServlet?actiontype=scheme&methodtype=showscheme&pc=<%=j%>">第<%=j%>页</a>

    <%

    }

    } %>

    </body>

    展开全文
  • oracle连接配置

    万次阅读 2007-01-26 14:14:00
    1、导入JDBC包2、注册oracle JDBC驱动程序3、打开数据库连接4、执行SQL DML语句在数据库表中获取、添加、修改和删除行 一、JDBC驱动程序 共有有4种1、Thin驱动程序 Thin驱动程序是所有驱动程序中资源消耗最小的,...
  • Tomcat+Oracle连接的例子

    千次阅读 2007-05-29 15:49:00
    我这有一个Tomcat+Oracle连接的例子,放上来和大家分享一下。Tomcat 5.5.17+Oracle 9.0.1.1.1 连接配置Author: Kenneth.Leaf@GalaxySoftDate: 7/25/2006Time: 10:20:57 PM环境:Windows 2000 Advanced Server...
  • 关于ORACLE连接

    千次阅读 2005-09-20 09:23:00
    到目前为目,JDBC2的连结只是一个接口,没有真正的实现,JDBC3正在开发中,据报已经支持连结,但JDBC3用了JNDI技术,连结的配置可以让一个高手都烦死. 目前第三方已经实现的连结当然是poolman,1.0版对一般用户来说...
  • Oracle查看连接

    2020-06-09 15:45:06
    Oracle如何查看当前有哪些用户连接到数据库 可以执行以下语句: select username,serial#, sid from v$session; —查询用户会话 alter system kill session 'serial#, sid ';—删除相关用户会话 建议以后台登陆删除...
  • http://msdn.microsoft.com/zh-cn/library/ms254502(VS.90).aspx OLE DB、ODBC...本节介绍用于 OLE DB、ODBC 和 Oracle 的 .NET Framework 数据提供程序的连接。OleDb 连接 OLE DB .NET Framework
  • Tomcat 6.0 配置oracle数据库连接

    千次阅读 2016-05-26 19:11:39
    在查阅了网上大量资料之后,终于成功在Tomcat中配置oracle数据库连接,现在整理下步骤。 第一步(拷贝) 下载oracle驱动包ojdbc14.jar,拷贝到TomCat6.0目录下的lib目录里。Ojdbc14.jar的位置为: G:\Oracle\...
  • oracle数据库连接查看 select username , count(*), machine from v$session where username is not null group by username, machine order by username; select sid, machine, LAST_CALL_ET, PROGRAM, prev_...
  • 共享在数据库中可以说是相当重要动力资源,关系着数据库的性能瓶颈。 什么是共享呢?  共享是内存结构中SGA(系统全局区)的一部分,包含了:库缓冲区、数据字典缓冲区、服务器结果缓冲区、预留,也是着...
  • oracle数据库连接查看

    千次阅读 2017-08-23 17:11:00
    DBA要定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。同时,对一些“挂死”的连接,可能会需要DBA手工进行清理。 以下的SQL语句列出当前数据库...
  • Tomcat Oracle数据库连接设置与使用

    千次阅读 2008-02-28 05:45:00
    Tomcat Oracle数据库连接设置与使用 使用Tomcat数据库连接的时候,在网上查了不少例子,这是本人做的一个Oracle的例子。 1.设置数据库的驱动 以Oracle的JDBC驱动设置为例: Oracle8i的驱动在/oracle/ora81/...
  • tomcat 6.0配置oracle数据库连接 tomcat 5.X与tomcat 6.x连接配置有所不同,这里只是记录tomcat 6.0的配置过程。    容器:tomcat 6.0    数据库:oracle 10g    操作步骤:    1、 D:\oracle...
  • Tomcat+Oracle配置连接的例子

    千次阅读 2014-02-26 17:05:52
    我这有一个Tomcat+Oracle连接的例子,放上来和大家分享一下。 Tomcat 5.5.17+Oracle 9.0.1.1.1 连接配置  Author: Kenneth.Leaf@GalaxySoft Date: 7/25/2006 Time: 10:20:57 PM 环境:  Windows...
  • Oracle资源管理器在HIS系统中的应用

    千次阅读 2014-03-20 17:02:15
    导致整个HIS系统的操作变慢甚至影响正常业务使用的情况,其实这是典型的服务器资源争用和等待的案例,如何合理的分配和管理有限的服务器资源,让更重要的业务更充分的利用资源,这是本文Oracle资源管理所实现的功能...
  • 问题描述   有一个很特殊的case,使用Agile PLM 9.3产品每隔2~3天,...检查Oracle Database,CPU, Memory,连接都没有任何问题。重新启动SOA,问题临时不会出现,但2~3天后,问题继续。     Oracle环境 Midd
  • Oracle资源管理器简介  Oracle资源管理器(Oracle Database Resource Manager,以下简称DBRM)管理数据库资源,为不同的会话分配不同的数据库资源。DBRM管理的资源主要包括CPU时间。下面分以下几个章节介绍:  ...
  • 这里连接的是oracle数据库。 JDBC是什么:JDBC是java数据库连接技术的简称,提供连接各种常用数据库的能力。 客户端发送请求给应用服务器,应用服务器通过JDBC连接到数据库服务器,查询数据库中的数据,返回一个结果...
  • Oracle 11g管理资源

    2017-09-25 12:06:56
    关于Oracle数据库资源管理器 Oracle数据库资源管理器(资源管理器)能够管理数据库中争夺系统和数据库资源的多个工作负载。 一 资源管理器为工作负载管理提供什么解决方案? 当操作系统来决定数据库...
  • oracle数据库连接的使用

    千次阅读 2013-11-23 14:23:26
    数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接正是针对这个问题提...
  • 在这种情况下,出现了使用数据库连接的方法,类似于线程池,初期创建一定数量的连接供应用程序使用,当使用完成后将其归还给连接而不是销毁,这样有效的提高了资源利用率,下面分享一种简单的创建连接的方法:...
  • 近日在使用Tomcat数据库连接的时候,在网上查了不少例子,这是本人做的一个Oracle的例子。1.设置数据库的驱动 以Oracle的JDBC驱动设置为例: Oracle8i的驱动在/oracle/ora81/jdbc/lib/目录下。名字为classes12....
  • java 实现proxool oracle数据库连接的使用本文针对已有项目(Spring+SpringMVC)框架,实现连接的使用:步骤1:由于是Maven项目,在pom.xml中添加proxool依赖的jar包,如下:<!-- ...
  • oracle数据库连接的使用 [引]

    万次阅读 2009-10-26 22:02:00
    数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接正是针对这个...
  • Oracle数据库资源管理

    千次阅读 2012-06-06 08:52:01
    一般来说,Oracle数据库都属于中大型的系统,这类系统的用户会话(Session),小则一两百,多则上千,这些用户会话要求Oracle数据库执行的任何指令都需要耗费系统资源,而系统资源毕竟是宝贵且有限的,一旦突然涌进...
  • 查看Oracle数据库资源状况

    千次阅读 2019-06-18 14:11:52
    对于Oracle数据库的资源状况,开发人员一般不怎么关注。但是有时候也会遇到,所以这里把相关的SQL做个笔记,方便查看。 ​​​​ 目录 1. 检查数据库基本状况 2. 检查Oracle相关资源的使用情况 3. 检查Oracle...
  • oracle数据库连接的一些参数配置

    千次阅读 2019-06-14 10:15:37
    4.minIdle:连接中最小的空闲的连接数,低于这个数量会被创建新的连接(默认为0,调整为5,该参数越接近maxIdle,性能越好,因为连接的创建和销毁,都是需要消耗资源的;但是不能太大,因为在机器很空闲的时候,也...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,375
精华内容 20,950
关键字:

oracle资源池