一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

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

时间:2010-01-22 编辑:简简单单 来源:一聚教程网

  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 

热门栏目