- 浏览: 316754 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
poterliu:
太棒了,这正是我要的效果
带复选框(checkbox)的下拉列表 -
no_bao:
<div class="quote_title ...
java使用Map进行分组统计 -
a164906480:
不好意思啊,不少东西,我用的时候就是转int的时候光报异常。 ...
java使用Map进行分组统计 -
a164906480:
<pre name="code" c ...
java使用Map进行分组统计 -
a164906480:
问一下你后面的数是怎么加的吗
java使用Map进行分组统计
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;
}
}
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;
}
}
发表评论
-
xml验证二----java根据xsd验证xml
2013-11-07 09:47 2437xml 转换 xsd 参考 http://51876 ... -
xml验证之----xml转换为xsd(trang.jar)
2013-11-07 09:43 73751、执行环境 Trang的执行环境:JRE1.4+ ... -
swfUpload火狐浏览器firefox不显示上传按钮
2013-10-29 11:01 5242问题描述: 使用swfUpload ... -
Multipart/form-data POST文件上传详解
2013-09-03 18:00 9475Multipart/form-data POST文件上传详解 ... -
增加tomcat并发量
2013-08-01 17:44 5927tomcat默认的连接是线程阻塞的,即protocol配置为 ... -
Tomcat并发数优化的方法总结
2013-08-01 14:07 10731,让Tomcat6 中支持Java语言的特性 NIO( N ... -
java使用Map进行分组统计
2013-07-09 14:43 6689用java读取txt文本,并根据ip段分组合计|后面的值,即i ... -
JDBC事务的保存点处理
2013-05-10 09:55 1717JDBC事务的保存点处理 ... -
<s:iterator> 标签补齐循环固定行数
2013-03-21 16:22 2110比如有一公告列表 每页展现 5条 如果不足5条 ... -
在tomcat的catalina.sh文件中添加了jconsole检测内存配置
2013-01-21 10:32 2554在tomcat的catalina.sh文件中添 ... -
java随机数
2013-01-21 10:23 966public static String getRandom ... -
MyEclipse优化技巧
2012-11-02 11:01 956MyEclipse优化技巧 第一步: ... -
Quartz使用指南(七)-----Spring中使用Quartz进行作业调度
2012-10-22 09:10 18541 Spring中使用Qu ... -
Quartz使用指南(六)-----监听器及存储
2012-10-22 09:10 17121 触发器的监听器和作业的监听器(Trigge ... -
Quartz使用指南(五)-----Cron触发器(CronTrigger)
2012-10-22 09:09 2103<!--[if !supportLists]--> ... -
Quartz使用指南(四)-----触发器(Triggers)
2012-10-19 18:04 31814 触发器(Triggers) 与Job相比,Trig ... -
Quartz使用指南(三)-----标识符、 作业和作业详情(Identifiers&Jobs&JobDetails)
2012-10-19 17:54 1539标识 ... -
Quartz使用指南(二)-----作业和触发器Job&Trigger
2012-10-19 17:49 1833我们可以使Scheduler简单地执行一个实现了Job接 ... -
Quartz使用指南(一)-----Quartz简介
2012-10-19 17:47 2031<!--[endif]--> ... -
Quartz在Spring中集群 Quartz引用外部数据源
2012-10-19 17:40 2667转载于 http://www.iteye.com/topic ...
相关推荐
delphi读写BLOB字段delphi读写BLOB字段delphi读写BLOB字段delphi读写BLOB字段delphi读写BLOB字段delphi读写BLOB字段delphi读写BLOB字段delphi读写BLOB字段delphi读写BLOB字段delphi读写BLOB字段delphi读写BLOB字段...
- CLOB字段可通过TField对象的AsWideString属性读取或设置,BLOB字段通过AsBlob属性。 - 读取大对象时,可以使用Stream对象,比如TMemoryStream,通过TField对象的LoadFromStream和SaveToStream方法实现数据的读写...
- 选择表和字段:用户可以指定需要导出的表和包含Clob或Blob的字段。 - 配置导出选项:例如,是否只导出特定记录,如何处理大字段(如是否转存到文件系统),以及导出格式等。 - 执行导出:工具将读取数据库中的大字...
为了将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中,我们需要使用Java 语言和 JDBC 驱动程序。下面是一个示例代码,演示如何将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中: ...
总之,理解并熟练掌握Hibernate对Oracle中的Clob和Blob字段的操作,是Java开发人员在处理大数据时必不可少的技能,这有助于确保数据的正确存储和高效访问。通过阅读和分析提供的源码,我们可以更深入地理解其底层...
Java 中处理 Clob 和 Blob 类型的注解配置 Java 中处理 Clob 和 Blob 类型的注解配置是一种常见的处理大规模数据的方法。Clob(Character Large OBject)类型和 Blob(Binary Large OBject)类型是数据库中两种常用...
Oracle数据库在存储大对象...总之,批量导出Oracle数据库中的BLOB字段生成图片涉及到了数据库连接、SQL查询、BLOB数据处理和文件I/O等多个技术环节。掌握这些知识点对于管理和维护包含二进制数据的数据库系统至关重要。
在关系型数据库中,如Oracle、MySQL、SQL Server等,BLOB字段提供了一种高效的方式,用于处理和存储大数据量的非结构化信息。 ### 判断BLOB字段是否为空的必要性 在实际应用中,判断BLOB字段是否为空对于数据完整...
对于CLOB和BLOB字段,Oracle JDBC驱动提供了`oracle.jdbc.driver.OracleClob`和`oracle.jdbc.driver.OracleBlob`类,它们实现了Java的标准接口`java.sql.Clob`和`java.sql.Blob`。这两个接口提供了读取和写入大数据...
- 对于DBExpress,可以使用TOracleQuery组件的SQL属性执行查询,然后在OnBeforeOpen事件中处理BLOB字段,通过TOracleBlobField对象访问BLOB数据。 - 对于ADO,使用TADODBCommand对象的Execute方法执行查询,通过...
Oracle CLOB 行字段全文检索实现方法 Oracle 数据库中,CLOB 行字段是一种常用的数据类型,用于存储大文本数据。然而,在 Oracle8i 版本之前,对大字段 CLOB 仍然不支持在 where 子句直接的 Like 操作。这使得...
在获取java.sql.Blob对象后,需要强制转换为oracle.sql.BLOB对象,以便使用getBinaryOutputStream()方法将数据写入BLOB字段。最后,使用OutputStream.write()方法将数据写入BLOB字段,并执行con.commit()方法提交...
2. **执行查询语句**:使用SQL语句查询包含CLOB字段的记录。 3. **处理CLOB对象**:获取结果集中的CLOB对象,并对其进行读取或操作。 4. **关闭资源**:最后确保关闭所有的数据库连接和释放相关的资源。 #### 示例...
在Java中,当我们需要通过JDBC(Java Database Connectivity)接口与Oracle数据库交互时,处理CLOB字段可能会遇到一些挑战。这篇文档将详细阐述如何在JDBC中有效地读取和操作Oracle数据库的CLOB字段,并将其转换为...
它们都是Oracle数据库中重要的字段类型,用于处理大数据量的文本或二进制文件。了解BLOB和CLOB的区别以及如何在Oracle中进行插入和查询操作对于数据库开发者和管理员来说至关重要。 首先,我们来看BLOB和CLOB的主要...
在某些情况下,可能需要将BLOB类型的数据转换为CLOB类型,例如,在处理文本数据时,如果数据被错误地存储为BLOB,或者需要将二进制数据中的可读文本部分提取出来进行处理。本文将详细介绍如何使用Oracle内置函数和...
在处理Oracle数据库时,经常会遇到需要读取CLOB(Character Large Object)类型字段的情况。CLOB主要用于存储大量的文本数据,如文章、文档等内容。由于CLOB类型的数据量可能非常大,因此在读取时需要特别注意性能和...
例如,可以创建一个`IMAGES`表,包含`ID`(主键)、`IMAGE_CLOB`(CLOB类型)和`IMAGE_BLOB`(BLOB类型)字段。 - **图片转二进制/字符串**:对图片进行读取,如果是使用`CLOB`,需要将图片转换为Base64字符串;...
以下是如何使用Java处理Blob类型的图像数据的详细步骤: 1. **连接数据库** 使用JDBC(Java Database Connectivity)API建立与数据库的连接。首先,需要引入数据库驱动,例如MySQL、Oracle或PostgreSQL的驱动。...