org.gjt.mm.mysql.Driver的数据库类

  1. package pubcls; 
  2.  
  3. import java.sql.*; 
  4.  
  5. /** 
  6.  * MySql 简单操作类 
  7.  * @author itblt 
  8.  */ 
  9. public class Mysql 
  10.     public Connection liveCon = null; 
  11.     public int dbWaitTime = 3600; 
  12.     public String dbLang = ""; 
  13.     public String errMessage = ""; 
  14.  
  15.     private String linkUrl = ""; 
  16.     private String linkDb = ""; 
  17.     private String linkUser = ""; 
  18.     private String linkPwd = ""; 
  19.  
  20.     /** 
  21.      * 设置默认参数 
  22.      */ 
  23.     private void setDefault() { 
  24.         this.linkUrl = "jdbc:mysql://localhost:3306/"; 
  25.         this.linkDb = "test"; 
  26.         this.linkUser = "root"; 
  27.         this.linkPwd = ""; 
  28.         this.dbLang = "utf8"; 
  29.     } 
  30.  
  31.     /** 
  32.      * 用默认参数初始化 
  33.      */ 
  34.     public Mysql() { 
  35.         this.setDefault(); 
  36.     } 
  37.  
  38.     /** 
  39.      * 指定数据库及编码进行初始化 
  40.      * @parem String sdb 
  41.      * 数据库名 
  42.      * @parem String dblang 
  43.      * 编码(通常是utf8/gbk) 
  44.      * 
  45.      */ 
  46.     public Mysql(String sdb, String dblang) { 
  47.         this.setDefault(); 
  48.         this.linkDb = sdb; 
  49.         this.dbLang = dblang; 
  50.     } 
  51.  
  52.     /** 
  53.      * 用完整的参数初始化 
  54.      * @parem String surl 
  55.      * 连接网址(jdbc:mysql://IP:端口/): jdbc:mysql://localhost:3306/ 
  56.      * @parem String sdb 
  57.      * 数据库名 
  58.      * @parem String suser 
  59.      * 用户名 
  60.      * @parem String spwd 
  61.      * 密码 
  62.      * @parem String dblang 
  63.      * 数据库编码 
  64.      */ 
  65.     public Mysql(String surl, String sdb, String suser, String spwd, String dblang) { 
  66.         this.linkUrl = surl; 
  67.         this.linkDb = sdb; 
  68.         this.linkUser = suser; 
  69.         this.linkPwd = spwd; 
  70.         this.dbLang = dblang; 
  71.     } 
  72.  
  73.    /** 
  74.     * 获得链接 
  75.     */ 
  76.     public Connection getConnection() throws SQLException, 
  77.             java.lang.ClassNotFoundException 
  78.     { 
  79.         this.liveCon = this.getConnection(this.linkUrl, this.linkDb, this.linkUser, this.linkPwd, this.dbLang); 
  80.         return this.liveCon; 
  81.     } 
  82.  
  83.     /** 
  84.      * 用指定参数获取链接 
  85.      * @parem String surl 
  86.      * 连接网址(jdbc:mysql://IP:端口/): jdbc:mysql://localhost:3306/ 
  87.      * @parem String sdb 
  88.      * 数据库名 
  89.      * @parem String suser 
  90.      * 用户名 
  91.      * @parem String spwd 
  92.      * 密码 
  93.      * @parem String dblang 
  94.      * 数据库编码 
  95.      * @return Connection 
  96.      */ 
  97.     public Connection getConnection(String surl, String sdb, String suser, String spwd, String dblang) throws SQLException, 
  98.             java.lang.ClassNotFoundException 
  99.     { 
  100.         this.linkUrl = surl; 
  101.         this.linkDb = sdb; 
  102.         this.linkUser = suser; 
  103.         this.linkPwd = spwd; 
  104.         this.dbLang = dblang; 
  105.  
  106.         Class.forName("org.gjt.mm.mysql.Driver"); 
  107.         this.liveCon = DriverManager.getConnection(surl+sdb, suser, spwd); 
  108.         this.preQuery(); 
  109.         return this.liveCon; 
  110.     } 
  111.      
  112.     /** 
  113.      * mysql转义 
  114.      * @return String 
  115.      */ 
  116.     public static String QuoteStr(String str) 
  117.     { 
  118.         String[] searchs = {"", "n", "r", "26", "t", "\", """, "'"}; 
  119.         String[] replaces = {"\0", "\n", "\r", "\Z" , "\t", "\\", "\"", "\'"}; 
  120.         for(int i=0; i < searchs.length; i++) 
  121.         { 
  122.             str = str.replace(searchs[i], replaces[i]); 
  123.         } 
  124.         return str; 
  125.     }  
  126.       
  127.  
  128.     /** 
  129.      * 测试链接 
  130.      * @return boolean 
  131.      */ 
  132.     private boolean testCon() throws SQLException 
  133.     { 
  134.         if(this.liveCon==null || this.liveCon.isClosed() ) 
  135.         { 
  136.             try 
  137.             { 
  138.                 this.getConnection(); 
  139.                 return true; 
  140.             }catch(ClassNotFoundException e) 
  141.             { 
  142.                 return false; 
  143.             } 
  144.             catch(SQLException e2) 
  145.             { 
  146.                 this.errMessage = e2.getMessage(); 
  147.                 return false; 
  148.             } 
  149.         } 
  150.         return true; 
  151.     } 
  152.  
  153.     /** 
  154.      * 执行写入语句 
  155.      * @parem string query 
  156.      * SQL 写入类操作 
  157.      * @return int 
  158.      */ 
  159.     public int execUpdate(String query) throws SQLException 
  160.     { 
  161.         if(!this.testCon()) 
  162.         { 
  163.             return -1; 
  164.         } 
  165.         Statement sql_statement = this.liveCon.createStatement(); 
  166.         int result = sql_statement.executeUpdate(query); 
  167.         sql_statement.close(); 
  168.         return result; 
  169.     } 
  170.  
  171.     /** 
  172.      * 执行insert语句并返回上次插入的主链id 
  173.      * @parem string 
  174.      * sql SQL语句 
  175.      * @return int 
  176.      */ 
  177.     public long execInsert(String query) throws SQLException 
  178.     { 
  179.         if(!this.testCon()) 
  180.         { 
  181.             return -1; 
  182.         } 
  183.         Statement sql_statement = this.liveCon.createStatement(); 
  184.         long result = sql_statement.executeUpdate(query); 
  185.         if(result>0) 
  186.         { 
  187.             sql_statement = this.getStatement(" Select LAST_INSERT_ID(); "); 
  188.             ResultSet rs = sql_statement.getResultSet(); 
  189.             rs.next(); 
  190.             result = rs.getLong(0); 
  191.         } 
  192.         sql_statement.close(); 
  193.         return result; 
  194.     } 
  195.  
  196.     /** 
  197.      * 获得一个记录集 
  198.      * @parem String query 
  199.      * 查询用的SQL语句 
  200.      * @return ResultSet 
  201.      */ 
  202.      public ResultSet getResultSet(String query) throws SQLException 
  203.      { 
  204.         if(!this.testCon()) 
  205.         { 
  206.             return null; 
  207.         } 
  208.         Statement sql_statement = this.getStatement(query); 
  209.         ResultSet result = sql_statement.getResultSet(); 
  210.         return result; 
  211.      } 
  212.  
  213.      /** 
  214.      * 获得一个可用于更新操作的记录集 
  215.      * @parem String query 
  216.      * 查询用的SQL语句 
  217.      * @return ResultSet 
  218.      */ 
  219.      public ResultSet getResultSetUpdate(String query) throws SQLException 
  220.      { 
  221.         if(!this.testCon()) 
  222.         { 
  223.             return null; 
  224.         } 
  225.         Statement sql_statement = this.liveCon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 
  226.         sql_statement.executeQuery(query); 
  227.         ResultSet result = sql_statement.getResultSet(); 
  228.         return result; 
  229.      } 
  230.  
  231.     /** 
  232.      * 获得一个Statement 
  233.      * @parem String query 
  234.      * 查询sql 
  235.      * @return Statement 
  236.      */ 
  237.      public Statement getStatement(String query) throws SQLException 
  238.      { 
  239.         if(!this.testCon()) 
  240.         { 
  241.             return null; 
  242.         } 
  243.         Statement sql_statement = this.liveCon.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); 
  244.         sql_statement.executeQuery(query); 
  245.         return sql_statement; 
  246.      } 
  247.  
  248.      /** 
  249.      * 选择数据库 
  250.      */ 
  251.      public void selectDb(String dbname) throws SQLException 
  252.      { 
  253.         this.testCon(); 
  254.         this.execUpdate(" use `"+ dbname +"`; "); 
  255.      } 
  256.  
  257.      /** 
  258.      * 预处理 
  259.      */ 
  260.      private void preQuery() throws SQLException 
  261.      { 
  262.         this.execUpdate(" SET NAMES '"+ this.dbLang +"', character_set_client=binary, sql_mode='', wait_timeout="+ this.dbWaitTime +", interactive_timeout="+ this.dbWaitTime +" ; "); 
  263.      } 
  264.  
  265.    /** 
  266.     * 关闭链接 
  267.     */ 
  268.     public void close() throws SQLException 
  269.     { 
  270.         if(this.liveCon != null && !this.liveCon.isClosed() ) 
  271.         { 
  272.             this.liveCon.close(); 
  273.         } 
  274.         this.liveCon = null; 
  275.     } 
  276.  
  277.    /** 
  278.     * 析放资源 
  279.     */ 
  280.     public void finalize() { 
  281.         try { 
  282.             this.close(); 
  283.         } catch(SQLException e) { 
  284.             e = null; 
  285.         } 
  286.     } 
  287.  
  288. }//end class 
时间: 2024-10-29 02:18:54

org.gjt.mm.mysql.Driver的数据库类的相关文章

org.gjt.mm.mysql.Driver

  org.gjt.mm.mysql.Driver是com.mysql.jdbc.Driver的前身,如果你的项目中用到的是org.gjt.mm.mysql.Driver驱动,只是为了兼容性.和用com.mysql.jdbc.Driver没区别. 但是现在的项目建议使用com.mysql.jdbc.Driver.下面是测试代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 p

Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)

js|mysql|oracle|window|数据|数据库  Jsp 环境目前最流行的是 Tomcat5.0.Tomcat5.0 自己包含一个 Web 服务器,如果是测试,就没必要把 Tomcat 与 IIS 或 Apache 集成起来.在 Tomcat 自带的 Web 服务器下可以进行 Jsp 测试.    安装 Tomcat5.0 前需要安装 JDK(如果是 Windows server 2003 就必须安装 JDK,因为 Windows server 2003 是不带 JVM 的-Wind

同时支持三个MySQL+SQLite+PDO的PHP数据库类

  PHP学习教程文章简介: 同时支持三个MySQL+SQLite+PDO的PHP数据库类使用方法: // mysql connect $db = new SQL(mysql:host=localhost;database=21andy_blog;, 21andy.com_user, 21andy.com_password); // PDO SQLite3 connect $db = new SQL(pdo:database=/21andy.com/21andy.s 同时支持三个MySQL+SQ

MySQL数据库类的定义

俗话说"好的开始是成功的一半",而PHP+MySQL项目中数据库的操作是重点之一,能否简化数据库操作程序的编写,就成了影响工作效率的关键之一. 所以小阳并不是一开始就做页面,而是先建立一个"dbclass.php"文件,开始编写操作MySQL数据库的类"dbClass".即在"dbclass.php"中编写以下程序: $db_username="myusername"; //连接数据库的用户名 $db_pa

一款简单实用的php操作mysql数据库类_php技巧

本文实例讲述了一款简单实用的php操作mysql数据库类.分享给大家供大家参考.具体如下: 复制代码 代码如下: /* 本款数据库连接类,他会自动加载sql防注入功能,过滤一些敏感的sql查询关键词,同时还可以增加判断字段 show table status的性质与show table类 获取数据库所有表名等.*/ @ini_set('mysql.trace_mode','off'); class mysql {  public $dblink;  public $pconnect;  priv

MySQL Driver 5.1.X与6.X日期兼容性问题

1.引言 最近在一个新项目里尝试使用mysql-connector-java-6.0.5.jar,但是从MaxCompute(原名ODPS)中导入MySQL的数据在控制台中看到是正常的,从Java应用里读取的却是相差13或14小时的.甚至SQL里限定了数据的时间在某一天,应用查出来的数据还能是不在那天的.这就很奇怪了,本着求根问底,踩坑识坑的精神,好好地研究了一把. 首先看从http://search.maven.org中可以大概的看到MySQL Driver的发布历史: 5.1.X和6.X版本

codeigniter自带数据库类使用方法说明

 在 CodeIgniter 中,使用数据库是非常频繁的事情.你可以使用框架自带的数据库类,就能便捷地进行数据库操作 初始化数据库类   依据你的数据库配置载入并初始化数据库类:   代码如下: this->load->database();     被载入之后你可以在任何地方使用它.   以对象形式返回查询结果    代码如下: $query = $this->db->query('SELECT name, title, email FROM my_table');   fore

codeigniter自带数据库类使用方法说明_php实例

初始化数据库类 依据你的数据库配置载入并初始化数据库类: 复制代码 代码如下: this->load->database(); 被载入之后你可以在任何地方使用它. 以对象形式返回查询结果 复制代码 代码如下: $query = $this->db->query('SELECT name, title, email FROM my_table'); foreach ($query->result() as $row){    echo $row->title;    ec

mysql driver的bug的深入分析

1 问题描述: 下面是应用上线后的线程个数的曲线图:   通过观察线程数:从0.2k增加到1.4k,然后突然又变成0.2k. 所有增加的线程均为Damon的线程. 有如下几个疑问:    1:为什么线程数会一直增加,出现了线程泄露?    2:在某个时间点线程数突然降了1.2k,why? 1.1 线程泄露排查    通过jstack打印栈信息,发现大部分的线程描述如下.(省略了部分栈信息) "MySQL  Statement Cancellation Timer" #2952daemo