`
no_bao
  • 浏览: 316749 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

java执行sql处理类,包括CLOB,Blob字段的处理

阅读更多
import java.io.CharArrayWriter;
import java.io.IOException;
import java.io.Reader;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class ExeSqlDAO {
private Log log = LogFactory.getLog(this.getClass().getName());

private int rows, cols;
/**
     * 执行数据库的更新操作
     *
     * @param sql SQL语句
     * @param con 数据库连接对象
     * @exception java.sql.SQLException
     */
    //do update
    public void update(String sql, Connection con) throws SQLException {
    log.info("JDBC SQL: "+sql);
            PreparedStatement pstmt = con.prepareStatement(sql);
            pstmt.executeUpdate();
            pstmt.close();


    }
    /**
     * 批量执行数据库操作
     *
     * @param sql
     * @param con
     * @throws SQLException
     */
    public void muchUpdate(String[] sql, Connection con) throws SQLException {
    for (int i=0;i<sql.length;i++){
    if (sql[i]!=null&&sql[i].length()>0&&!sql[i].equals("")){
    update(sql[i],con);
    }
    }

}
    /**
     * 执行查询数据库操作
     *
     * @param sql SQL语句
     * @param con 数据库连接对象
     * @return Result对象
     * @exception java.sql.SQLException
     */
    //do select
    public Resultobj queryExecute(String sql, Connection con) throws SQLException {
            Statement stmt = null;
            Resultobj result = new Resultobj();
            rows = 0;
            stmt = con.createStatement();
            log.info("JDBC SQL: "+sql);
            ResultSet rs = stmt.executeQuery(sql);
            ResultSetMetaData rsmd = rs.getMetaData();
            cols = rsmd.getColumnCount();
            String s[] = new String[cols];
            for (int i = 1; i <= cols; i++) {
                    s[i - 1] = rsmd.getColumnLabel(i);
            }
            result.add(s);
            rows++;
          if(rs==null){
          System.out.println("#############");
          }
            while (rs.next()) {
                    s = new String[cols];
                    for (int i = 1; i <= cols; i++) {
                            s[i - 1] = helper(rs, rsmd.getColumnType(i), i);
                           
                    }
                    result.add(s);
                    rows++;
            }

            result.setCols(cols);
            result.setRows(rows);

            rs.close();
            stmt.close();
            return (result);

    }

/**
     * 执行查询数据库操作
     * @param sql SQL语句
     * @param con 数据库连接对象
     * @param maxRow 取得最大记录个数
     * @return Result对象
     * @exception java.sql.SQLException
     */
    //do select
    public Resultobj queryByMaxRow(String sql, Connection con,int intMaxRows) throws SQLException {

            Statement stmt = null;
            Resultobj result = new Resultobj();
            rows = 0;
            stmt = con.createStatement();
            stmt.setMaxRows(intMaxRows);
            log.info("JDBC SQL: "+sql);
            ResultSet rs = stmt.executeQuery(sql);
            ResultSetMetaData rsmd = rs.getMetaData();
            cols = rsmd.getColumnCount();
            String s[] = new String[cols];
            for (int i = 1; i <= cols; i++) {
                    s[i - 1] = rsmd.getColumnLabel(i);
            }
            result.add(s);
            rows++;

            while (rs.next()) {
                    s = new String[cols];
                    for (int i = 1; i <= cols; i++) {
                            s[i - 1] = helper(rs, rsmd.getColumnType(i), i);
                          
                    }
                    result.add(s);
                    rows++;
            }
            result.setCols(cols);
            result.setRows(rows);
            //System.out.print("cols"+cols);
            //System.out.print("rows"+rows);
            rs.close();
            stmt.close();
            return (result);
    }
    /**
     * 对记录中的字段的类型转换
     * @param rs
     * @param dataType
     * @param col
     * @return
     * @throws SQLException
     */
    public String helper(ResultSet rs, int dataType, int col) throws SQLException {
            String retValue = null;
            Integer intObj;
            // ask for data depending on the datatype
            switch (dataType) {

                    case Types.DATE :
                            java.sql.Date date = rs.getDate(col);
                            if (date != null)
                                    retValue = date.toString();
                            break;
                    case Types.TIME :
                            java.sql.Time time = rs.getTime(col);
                            if (time != null)
                                    retValue = time.toString();
                            break;
                    case Types.TIMESTAMP :
                            java.sql.Timestamp timestamp = rs.getTimestamp(col);
                            if (timestamp != null)
                                    retValue = timestamp.toString();
                            break;
                    case Types.CHAR :
                    case Types.VARCHAR :
                    case Types.LONGVARCHAR :
                            retValue = rs.getString(col);
                            break;
                    case Types.NUMERIC :
                    case Types.DECIMAL ://zhanpeng 修改了不建议使用的api
                            java.math.BigDecimal numeric = rs.getBigDecimal(col);
                            if (numeric != null)
                                    retValue = numeric.toString();
                            break;
                    case Types.BIT :
                            boolean bit = rs.getBoolean(col);
                            Boolean boolObj = new Boolean(bit);
                            retValue = boolObj.toString();
                            break;
                    case Types.TINYINT :
                            byte tinyint = rs.getByte(col);
                            intObj = new Integer(tinyint);
                            retValue = intObj.toString();
                            break;
                    case Types.SMALLINT :
                            short smallint = rs.getShort(col);
                            intObj = new Integer(smallint);
                            retValue = intObj.toString();
                            break;
                    case Types.INTEGER :
                            int integer = rs.getInt(col);
                            intObj = new Integer(integer);
                            retValue = intObj.toString();
                            break;
                    case Types.BIGINT :
                            long bigint = rs.getLong(col);
                            Long longObj = new Long(bigint);
                            retValue = longObj.toString();
                            break;
                    case Types.REAL :
                            float real = rs.getFloat(col);
                            Float floatObj = new Float(real);
                            retValue = floatObj.toString();
                            break;
                    case Types.FLOAT :
                    case Types.DOUBLE :
                            double longreal = rs.getDouble(col);
                            Double doubleObj = new Double(longreal);
                            retValue = doubleObj.toString();
                            break;
                    case Types.BINARY :
                    case Types.VARBINARY :
                    case Types.LONGVARBINARY :
                            byte[] binary = rs.getBytes(col);
                            if (binary != null)
                                    retValue = new String(binary);
                            break;
                    case Types.CLOB :
                   
                    if(rs.getClob(col)!=null){
                    try {
Clob cBlob =(Clob)rs.getClob(col);
retValue=readClob(cBlob);
} catch (IOException e) {

}
                    }
                        break;       
            }
            if (retValue==null) {
            retValue = "";
            }
            return retValue;
    }
    //处理Clob字段
    public  String readClob(Clob cBlob)throws java.sql.SQLException, java.io.IOException {
    Reader r = cBlob.getCharacterStream();
    char[] b = new char[1024 * 3];
    int i = 0;
    CharArrayWriter caw = new CharArrayWriter();
    while ((i = r.read(b)) > 0) {
    caw.write(b, 0, i);
    }
   
    b = caw.toCharArray();
    String result = new String(b);
    return result;
    }

public Resultobj queryExecute (ResultSet rs) throws SQLException{
   
    Resultobj result = new Resultobj();
    ResultSetMetaData rsmd = rs.getMetaData();
    int rows = 0;
    int cols = rsmd.getColumnCount();
    String s[] = new String[cols];
    for(int i = 1;i<=cols;i++){
    s[i-1] = rsmd.getColumnLabel(i);
    }
    result.add(s);
    rows++;
    while(rs.next()){
    s = new String[cols];
    for(int i =1;i<=cols;i++){
    s[i-1]=helper(rs,rsmd.getColumnType(i),i);
    }
    result.add(s);
    rows++;
    }
    result.setCols(cols);
    result.setRows(rows);
    return result;
    }
}
分享到:
评论

相关推荐

    delphi读写BLOB字段

    delphi读写BLOB字段delphi读写BLOB字段delphi读写BLOB字段delphi读写BLOB字段delphi读写BLOB字段delphi读写BLOB字段delphi读写BLOB字段delphi读写BLOB字段delphi读写BLOB字段delphi读写BLOB字段delphi读写BLOB字段...

    DELPHI的CLOB和BLOB存取处理.zip_DELPHI的CLOB和BLOB存取处理_hallzgz

    - CLOB字段可通过TField对象的AsWideString属性读取或设置,BLOB字段通过AsBlob属性。 - 读取大对象时,可以使用Stream对象,比如TMemoryStream,通过TField对象的LoadFromStream和SaveToStream方法实现数据的读写...

    Oracle导出Clob,Blob工具

    - 选择表和字段:用户可以指定需要导出的表和包含Clob或Blob的字段。 - 配置导出选项:例如,是否只导出特定记录,如何处理大字段(如是否转存到文件系统),以及导出格式等。 - 执行导出:工具将读取数据库中的大字...

    sql server中的image类型的数据导出到oracle的clob字段中

    为了将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中,我们需要使用Java 语言和 JDBC 驱动程序。下面是一个示例代码,演示如何将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中: ...

    Hibernate操作Oarcle中Clob、Blob字段小结

    总之,理解并熟练掌握Hibernate对Oracle中的Clob和Blob字段的操作,是Java开发人员在处理大数据时必不可少的技能,这有助于确保数据的正确存储和高效访问。通过阅读和分析提供的源码,我们可以更深入地理解其底层...

    java中(注解符)处理Clob(blob)类型

    Java 中处理 Clob 和 Blob 类型的注解配置 Java 中处理 Clob 和 Blob 类型的注解配置是一种常见的处理大规模数据的方法。Clob(Character Large OBject)类型和 Blob(Binary Large OBject)类型是数据库中两种常用...

    批量导出ORACLE数据库BLOB字段生成图片

    Oracle数据库在存储大对象...总之,批量导出Oracle数据库中的BLOB字段生成图片涉及到了数据库连接、SQL查询、BLOB数据处理和文件I/O等多个技术环节。掌握这些知识点对于管理和维护包含二进制数据的数据库系统至关重要。

    判断blob字段是否为空

    在关系型数据库中,如Oracle、MySQL、SQL Server等,BLOB字段提供了一种高效的方式,用于处理和存储大数据量的非结构化信息。 ### 判断BLOB字段是否为空的必要性 在实际应用中,判断BLOB字段是否为空对于数据完整...

    clob-blob.rar_blob and clob_clob_java CLOB_java oracle cl_oracle

    对于CLOB和BLOB字段,Oracle JDBC驱动提供了`oracle.jdbc.driver.OracleClob`和`oracle.jdbc.driver.OracleBlob`类,它们实现了Java的标准接口`java.sql.Clob`和`java.sql.Blob`。这两个接口提供了读取和写入大数据...

    oracle blob 字段 读写 delphi

    - 对于DBExpress,可以使用TOracleQuery组件的SQL属性执行查询,然后在OnBeforeOpen事件中处理BLOB字段,通过TOracleBlobField对象访问BLOB数据。 - 对于ADO,使用TADODBCommand对象的Execute方法执行查询,通过...

    Oracle如何对CLOB行字段来执行全文检索

    Oracle CLOB 行字段全文检索实现方法 Oracle 数据库中,CLOB 行字段是一种常用的数据类型,用于存储大文本数据。然而,在 Oracle8i 版本之前,对大字段 CLOB 仍然不支持在 where 子句直接的 Like 操作。这使得...

    JAVA对clob的操作

    在获取java.sql.Blob对象后,需要强制转换为oracle.sql.BLOB对象,以便使用getBinaryOutputStream()方法将数据写入BLOB字段。最后,使用OutputStream.write()方法将数据写入BLOB字段,并执行con.commit()方法提交...

    数据库读取clob字段

    2. **执行查询语句**:使用SQL语句查询包含CLOB字段的记录。 3. **处理CLOB对象**:获取结果集中的CLOB对象,并对其进行读取或操作。 4. **关闭资源**:最后确保关闭所有的数据库连接和释放相关的资源。 #### 示例...

    oracle数据库的clob大字段在jdbc中的处理方式

    在Java中,当我们需要通过JDBC(Java Database Connectivity)接口与Oracle数据库交互时,处理CLOB字段可能会遇到一些挑战。这篇文档将详细阐述如何在JDBC中有效地读取和操作Oracle数据库的CLOB字段,并将其转换为...

    BLOB和CLOB的区别以及在ORALCE中的插入和查询操作

    它们都是Oracle数据库中重要的字段类型,用于处理大数据量的文本或二进制文件。了解BLOB和CLOB的区别以及如何在Oracle中进行插入和查询操作对于数据库开发者和管理员来说至关重要。 首先,我们来看BLOB和CLOB的主要...

    oracle(blob转换为clob)

    在某些情况下,可能需要将BLOB类型的数据转换为CLOB类型,例如,在处理文本数据时,如果数据被错误地存储为BLOB,或者需要将二进制数据中的可读文本部分提取出来进行处理。本文将详细介绍如何使用Oracle内置函数和...

    读取oracle数据库中clob字段的值

    在处理Oracle数据库时,经常会遇到需要读取CLOB(Character Large Object)类型字段的情况。CLOB主要用于存储大量的文本数据,如文章、文档等内容。由于CLOB类型的数据量可能非常大,因此在读取时需要特别注意性能和...

    图片存入Oracle中,用clob和blob两种方式

    例如,可以创建一个`IMAGES`表,包含`ID`(主键)、`IMAGE_CLOB`(CLOB类型)和`IMAGE_BLOB`(BLOB类型)字段。 - **图片转二进制/字符串**:对图片进行读取,如果是使用`CLOB`,需要将图片转换为Base64字符串;...

    java将图片写入数据库,并读出来(blob clob)

    以下是如何使用Java处理Blob类型的图像数据的详细步骤: 1. **连接数据库** 使用JDBC(Java Database Connectivity)API建立与数据库的连接。首先,需要引入数据库驱动,例如MySQL、Oracle或PostgreSQL的驱动。...

Global site tag (gtag.js) - Google Analytics