类 SQLHelper


  • public final class SQLHelper
    extends java.lang.Object
    配合team.bangbang.common.data.RecordData使用实现数据库的增删改功能,并且能够
    实现单条记录的查询和多条记录的查询,多条记录查询的时候能够根据参数选择是否
    进行分页处理,查询结果自动按照字段名和字段值的对应关系保存到
    team.bangbang.common.data.RecordData实例中。
    此外,本类也提供了一个常规的JDBC操作,即直接执行SQL语句实现增删改功能。
    版本:
    1.0 2009-05-31
    作者:
    帮帮组
    • 构造器概要

      构造器 
      构造器 说明
      SQLHelper()
      使用team.bangbang.common.database.DBManager提供的默认数据库连接
      构造数据库操作实例
      SQLHelper​(java.lang.String alias)
      使用team.bangbang.common.database.DBManager提供的指定数据库连接
      构造数据库操作实例。
      SQLHelper​(java.sql.Connection conn)
      使用指定的数据库连接构造数据库操作器
    • 方法概要

      所有方法 静态方法 实例方法 具体方法 
      修饰符和类型 方法 说明
      void close()
      关闭数据库连接和存储过程调用句柄
      void commit()
      执行commit操作,仅当commit模式为false时有效。
      java.sql.Connection connection()  
      int delete​(RecordData ds)
      根据数据容器中包含的指定信息删除记录。
      int executeUpdate​(java.lang.String strSql)
      执行SQL语句,用于记录的增删改
      java.lang.String formatDateField​(java.lang.String fieldName)
      使用日期函数将DATE、DATETIME类型的字段进行格式化,格式化为yyyy-MM-dd的字符串
      java.lang.String getAlias()  
      boolean getAutoCommit()
      获得commit模式
      java.lang.String getDatabaseName()
      获得数据库产品的名称,可能的结果有:Oracle、MySQL
      static java.lang.String getDBDateValue​(java.lang.String dbName, java.util.Date dt)
      得到数据库的日期类型数据值
      java.lang.String getDBDateValue​(java.util.Date dt)
      得到数据库的日期类型数据值
      static java.lang.String getDBTimeValue​(java.lang.String dbName, java.util.Date dt)
      得到数据库的日期时间类型数据值
      java.lang.String getDBTimeValue​(java.util.Date dt)
      得到数据库的日期时间类型数据值
      int getRecordCount​(java.lang.String strSql)
      通过构造SELECT COUNT(FirstField) FROM ...
      int insert​(RecordData ds)
      根据数据中的数据向数据库插入一条记录。
      int insert​(RecordData ds, boolean autoPK)
      根据数据中的数据向数据库插入一条记录。
      void queryMultipleData​(java.lang.String strSql, RecordData data, boolean blFilter)
      执行SELECT查询操作,并把字段名和对应的查询结果自动匹配保存到数据容器中
      查询结果可以为多条记录。
      void querySingleData​(java.lang.String strSql, RecordData data)
      执行SELECT查询操作,并把字段名和对应的查询结果自动匹配保存到数据容器中 。
      void rollback()
      数据回滚,仅当commit模式为false时有效
      void setAutoCommit​(boolean autoCommit)
      设置commit模式
      int update​(RecordData ds)
      根据数据容器中包含的指定信息修改一条记录。
      • 从类继承的方法 java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 构造器详细资料

      • SQLHelper

        public SQLHelper()
        使用team.bangbang.common.database.DBManager提供的默认数据库连接
        构造数据库操作实例
      • SQLHelper

        public SQLHelper​(java.lang.String alias)
        使用team.bangbang.common.database.DBManager提供的指定数据库连接
        构造数据库操作实例。
        数据库通过别名进行指定。
        参数:
        alias - 数据库别名,参见config.properties文件中的数据库配置
      • SQLHelper

        public SQLHelper​(java.sql.Connection conn)
        使用指定的数据库连接构造数据库操作器
        参数:
        conn - 数据库连接
    • 方法详细资料

      • getAlias

        public java.lang.String getAlias()
        返回:
        当前数据库连接在config.properties中配置的数据库别名
      • connection

        public java.sql.Connection connection()
        返回:
        数据库连接
      • getDatabaseName

        public java.lang.String getDatabaseName()
        获得数据库产品的名称,可能的结果有:Oracle、MySQL
        返回:
        数据库名称
      • setAutoCommit

        public void setAutoCommit​(boolean autoCommit)
                           throws java.sql.SQLException
        设置commit模式
        参数:
        autoCommit - commit模式
        抛出:
        java.sql.SQLException - SQL异常
      • getAutoCommit

        public boolean getAutoCommit()
                              throws java.sql.SQLException
        获得commit模式
        返回:
        commit模式
        抛出:
        java.sql.SQLException - SQL异常
      • commit

        public void commit()
                    throws java.sql.SQLException
        执行commit操作,仅当commit模式为false时有效。
        抛出:
        java.sql.SQLException - SQL异常
      • rollback

        public void rollback()
                      throws java.sql.SQLException
        数据回滚,仅当commit模式为false时有效
        抛出:
        java.sql.SQLException - SQL异常
      • close

        public void close()
                   throws java.sql.SQLException
        关闭数据库连接和存储过程调用句柄
        抛出:
        java.sql.SQLException - SQL异常
      • querySingleData

        public void querySingleData​(java.lang.String strSql,
                                    RecordData data)
                             throws java.sql.SQLException
        执行SELECT查询操作,并把字段名和对应的查询结果自动匹配保存到数据容器中 。
        查询结果仅保存一条记录,如果查询结果为多条记录,则保存第一条记录。
        参数:
        strSql - SELECT语句
        data - 数据容器
        抛出:
        java.sql.SQLException - SQL异常
      • queryMultipleData

        public void queryMultipleData​(java.lang.String strSql,
                                      RecordData data,
                                      boolean blFilter)
                               throws java.sql.SQLException
        执行SELECT查询操作,并把字段名和对应的查询结果自动匹配保存到数据容器中
        查询结果可以为多条记录。同时保存到数据容器中的还有记录的总条数。
        本方法中分页操作使用了JDBC通用操作,通用性强,但性能较差。如果需要针对
        具体数据库提供高性能实现,则需要对在此处修改分页相关代码。
        参数:
        strSql - SELECT语句
        data - 数据容器
        blFilter - 是否需要分页 true: 需要分页 false: 不需要分页
        抛出:
        java.sql.SQLException - SQL异常
      • getRecordCount

        public int getRecordCount​(java.lang.String strSql)
                           throws java.sql.SQLException
        通过构造SELECT COUNT(FirstField) FROM ... 语句得到指定SQL语句
        查询产生的记录条数
        参数:
        strSql - 指定SQL语句
        返回:
        记录总条数
        抛出:
        java.sql.SQLException - SQL异常
      • delete

        public int delete​(RecordData ds)
                   throws java.sql.SQLException
        根据数据容器中包含的指定信息删除记录。 数据容器中必须提供的信息有,
        数据库表名和条件限定数据。 本方法根据数据容器的数据进行SQL条件拼合,
        而不使用数据容器的subWhere限定条件。因此本方法 仅适用于单表操作。
        参数:
        ds - 数据容器
        返回:
        删除结果 -1: 删除动作没有影响到任何记录
        其它:删除掉的记录条数
        抛出:
        java.sql.SQLException - SQL异常
      • insert

        public int insert​(RecordData ds)
                   throws java.sql.SQLException
        根据数据中的数据向数据库插入一条记录。 执行本方法之前,必须确定已经通过
        RecordData.setSingleData(Table_Field_Name, Field_Value)向数据
        容器中添加相关字段的值。
        本方法会自动调用SQLHelper.getSQLValue()方法来拼接SQL语句,
        然后执行数据库的插入操作。所有在数据容器中不存在的字段-字段值,
        都将会在执行插入过程中设置为null或者默认值。
        参数:
        ds - 数据容器
        返回:
        -1: 插入失败
        1: 插入成功
        抛出:
        java.sql.SQLException - SQL异常
      • insert

        public int insert​(RecordData ds,
                          boolean autoPK)
                   throws java.sql.SQLException
        根据数据中的数据向数据库插入一条记录。 执行本方法之前,必须确定已经通过
        RecordData.setSingleData(Table_Field_Name, Field_Value)向数据
        容器中添加相关 字段的值。本方法会自动调用SQLHelper.getSQLValue()
        方法来拼接SQL语句,然后执行数据库的插入操作。
        所有在数据容器中不存在的字段-字段值, 都将会在执行插入过程中设置为null
        或者默认值。
        参数:
        ds - 数据容器
        autoPK - 自动产生关键字段的值
        返回:
        -1: 插入失败 1: 插入成功
        抛出:
        java.sql.SQLException - SQL异常
      • update

        public int update​(RecordData ds)
                   throws java.sql.SQLException
        根据数据容器中包含的指定信息修改一条记录。数据容器中必须提供的信息有,
        数据库表名和条件限定语句 执行本方法之前,必须确定已经通过
        RecordData.setSingleData(Table_Field_Name, Field_Value)向 数据容
        器中添加相关 字段的值。本方法会自动调用SQLHelper.getSQLValue()
        方法来拼接SQL语句,然后执行 数据库的修改操作。
        所有在数据容器中不存在的字段-字段值,都将会在执行修改过程中维持不变。
        参数:
        ds - 数据容器
        返回:
        -1: 修改失败 1: 修改成功
        抛出:
        java.sql.SQLException - SQL异常
      • executeUpdate

        public int executeUpdate​(java.lang.String strSql)
                          throws java.sql.SQLException
        执行SQL语句,用于记录的增删改
        参数:
        strSql - SQL语句
        返回:
        影响到的记录条数,如果返回值为-1,则没有任何记录受到影响
        抛出:
        java.sql.SQLException - SQL异常
      • getDBDateValue

        public java.lang.String getDBDateValue​(java.util.Date dt)
        得到数据库的日期类型数据值
        参数:
        dt - 日期
        返回:
        日期类型数据值
      • getDBDateValue

        public static java.lang.String getDBDateValue​(java.lang.String dbName,
                                                      java.util.Date dt)
        得到数据库的日期类型数据值
        参数:
        dbName - 数据库名称
        dt - 日期
        返回:
        日期类型数据值
      • getDBTimeValue

        public java.lang.String getDBTimeValue​(java.util.Date dt)
        得到数据库的日期时间类型数据值
        参数:
        dt - 日期时间
        返回:
        日期时间类型数据值
      • getDBTimeValue

        public static java.lang.String getDBTimeValue​(java.lang.String dbName,
                                                      java.util.Date dt)
        得到数据库的日期时间类型数据值
        参数:
        dbName - 数据库名称
        dt - 日期时间
        返回:
        日期时间类型数据值
      • formatDateField

        public java.lang.String formatDateField​(java.lang.String fieldName)
        使用日期函数将DATE、DATETIME类型的字段进行格式化,格式化为yyyy-MM-dd的字符串
        参数:
        fieldName - 字段名称
        返回:
        字段格式化函数