- 浏览: 1378085 次
- 性别:
- 来自: 江西
文章分类
- 全部博客 (287)
- oracle (30)
- Java (73)
- MySQL (16)
- Myeclipse/eclipse (12)
- javascript (15)
- JSP/Servlet (7)
- maven (14)
- AJAX (2)
- JQuery (9)
- tomcat (8)
- spring (21)
- Linux (28)
- PHP (9)
- UI (1)
- 编程错误及处理 (38)
- 多线程 (18)
- hibernate (10)
- Web Service (3)
- struts2 (6)
- log4j (3)
- SVN (4)
- DWR (1)
- lucene (1)
- 正则表达式 (4)
- jstl (2)
- SSL (3)
- POI (1)
- 网络编程 (1)
- 算法 (2)
- xml (4)
- 加密解密 (1)
- IO (7)
- jetty (2)
- 存储过程 (1)
- SQL Server (1)
- MongoDB (1)
- mybatis (1)
- ETL (1)
- Zookeeper (1)
- Hadoop (5)
- Redis (1)
- spring cloud (1)
最新评论
-
ron.luo:
牛逼,正解!
maven设定项目编码 -
lichaoqun:
java.sql.SQLException: Can't call commit when autocommit=true -
Xujian0000abcd:
Thanks...
Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the clas -
renyuan2ni:
[i][b][u]引用[list]
[*][img][flas ...
Manual close is not allowed over a Spring managed SqlSession -
851228082:
宋建勇 写道851228082 写道<!-- 文件拷贝时 ...
maven设定项目编码
package cn.com.songjy.test.db; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class MySQLText { private static final Log log = LogFactory.getLog(MySQLText.class); private static final String id = "2"; private static final BufferedInputStream bufferedInputStream = new BufferedInputStream( MySQLText.class.getClassLoader().getResourceAsStream( "cn/com/songjy/test/db/mysql.properties")); private static final Properties props = new Properties(); static { try { props.load(bufferedInputStream); Class.forName(props.getProperty("driver")); } catch (IOException e) { log.error(e.getMessage(), e); } catch (ClassNotFoundException e) { log.error(e.getMessage(), e); } finally { try { if (null != bufferedInputStream) bufferedInputStream.close(); } catch (IOException e) { log.error(e.getMessage(), e); } } } public Connection getConnection() throws SQLException { log.info(props.getProperty("url")); return DriverManager.getConnection(props.getProperty("url"), props.getProperty("user"), props.getProperty("password")); } // 使用JDBC保存大文本 public void save_text() throws SQLException, IOException { Connection connection = null; PreparedStatement preparedStatement = null; BufferedReader bufferedReader = null; try { connection = getConnection(); preparedStatement = connection .prepareStatement("INSERT INTO testclob(id,resume) VALUES(?,?)"); preparedStatement.setString(1, id); File txt = new File( "src/main/java/cn/com/songjy/test/db/MySQLText.java"); bufferedReader = new BufferedReader(new FileReader(txt)); // preparedStatement.setCharacterStream(2, reader, txt.length()); preparedStatement.setCharacterStream(2, bufferedReader); log.info(preparedStatement.executeUpdate() > 0 ? "保存文本成功" : "保存文本失败"); } finally { if (null != bufferedReader) bufferedReader.close(); if (null != preparedStatement) preparedStatement.close(); if (null != connection) connection.close(); } } // 使用JDBC查询大文本 public void query_text() throws SQLException, IOException { Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { connection = getConnection(); preparedStatement = connection .prepareStatement("SELECT id,resume FROM testclob WHERE id = ?"); preparedStatement.setString(1, id); resultSet = preparedStatement.executeQuery(); while (true == resultSet.next()) { BufferedReader bufferedReader = null; BufferedWriter bufferedWriter = null; try { bufferedReader = new BufferedReader( resultSet.getCharacterStream("resume")); bufferedWriter = new BufferedWriter( new FileWriter( "src/main/java/cn/com/songjy/test/db/MySQLText.txt")); char[] buffer = new char[512];// 每次读取512个字符 for (int len = 0; (len = bufferedReader.read(buffer)) > 0;) { bufferedWriter.write(buffer, 0, len); } } finally { if (null != bufferedWriter) bufferedWriter.close(); if (null != bufferedReader) bufferedReader.close(); } } } finally { if (null != resultSet) resultSet.close(); if (null != preparedStatement) preparedStatement.close(); if (null != connection) connection.close(); } } // JDBC保存二进制数据 public void save_binary_stream() throws SQLException, IOException { Connection connection = null; PreparedStatement preparedStatement = null; BufferedInputStream bufferedInputStream = null; try { File jpg = new File( "src/main/java/cn/com/songjy/test/db/Jellyfish.jpg"); bufferedInputStream = new BufferedInputStream(new FileInputStream( jpg)); connection = getConnection(); preparedStatement = connection .prepareStatement("INSERT INTO testblob(id, image) VALUES (?,?)"); preparedStatement.setString(1, id); // preparedStatement.setBinaryStream(2, inputStream, jpg.length()); preparedStatement.setBinaryStream(2, bufferedInputStream); log.info(preparedStatement.executeUpdate() > 0 ? "图片保存成功" : "图片保存失败"); } finally { if (null != bufferedInputStream) bufferedInputStream.close();// 记得关闭,否则可能导致该文件占用而影响其它操纵(删除等),可参阅//http://www.coder.xxx/archives/32.html if (null != preparedStatement) preparedStatement.close(); if (null != connection) connection.close(); } } // JDBC查询二进制数据 public void query_binary_stream() throws SQLException, IOException { Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { connection = getConnection(); preparedStatement = connection .prepareStatement("SELECT id, image FROM testblob WHERE id = ?"); preparedStatement.setString(1, id); resultSet = preparedStatement.executeQuery(); while (true == resultSet.next()) { BufferedOutputStream bufferedOutputStream = null; BufferedInputStream bufferedInputStream = null; try { bufferedInputStream = new BufferedInputStream( resultSet.getBinaryStream("image")); bufferedOutputStream = new BufferedOutputStream( new FileOutputStream( "src/main/java/cn/com/songjy/test/db/1.jpg")); byte[] buffer = new byte[1024];// 每次读取1k for (int len = 0; (len = bufferedInputStream.read(buffer)) > 0;) { bufferedOutputStream.write(buffer, 0, len); // bufferedOutputStream.flush();//关闭的时候会自动将缓存中的数据写入文件 } } finally { if (null != bufferedOutputStream) bufferedOutputStream.close(); if (null != bufferedInputStream) bufferedInputStream.close(); } } } finally { if (null != resultSet) resultSet.close(); if (null != preparedStatement) preparedStatement.close(); if (null != connection) connection.close(); } } public static void main(String[] args) throws SQLException, IOException { // new MySQLText().save_text(); // new MySQLText().query_text(); // new MySQLText().save_binary_stream(); new MySQLText().query_binary_stream(); } } /* * * create table testclob * * ( * * id varchar(40) primary key, * * resume text * * ); * * create table testblob * * ( * * id varchar(40) primary key, * * image MediumBlob * * ); */
备注:保存二进制文件时注意选择类型,详见mysql blob大小配置介绍
oracle存取二进制文件(图片)
JDBC 学习笔记(二)—— 大数据+存储过程+批处理+事务管理
可能会遇到的问题:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException
Java读文件的一些归纳总结
InputStream未关闭导致文件被占用从而引发的问题
BufferedInputStream与BufferedOutputStream的使用
public void resource() throws IOException { Resource resource = new UrlResource( "http://127.0.0.1:8008/monitor/file/navicat8_mysql_cs.exe"); System.out.println(resource.getFilename()); File f = new File(resource.getFilename()); System.out.println(f.length()); InputStream src_in = resource.getInputStream(); BufferedInputStream in = new BufferedInputStream(src_in); byte[] temp = new byte[1024]; BufferedOutputStream out = new BufferedOutputStream( new FileOutputStream(f)); while (-1 != (in.read(temp))) { out.write(temp); } out.flush(); out.close(); in.close(); src_in.close(); System.out.println(f.length()); }
发表评论
-
MYSQL server has gone away
2016-07-08 20:08 639在使用命令source导入SQL数据时报错如下: 造成此问 ... -
MySQL非标准SQL写法问题记录
2016-04-06 10:30 1426如下SQL: SELECT t.message_id, ... -
1071 - Specified key was too long; max key length is 767 bytes
2015-08-04 09:42 3342MySQL数据批量导入完毕后执行执行如下SQL(创建索引): ... -
1064 - You have an error in your SQL syntax; check the manual that corresponds
2015-08-03 16:53 5081错误信息: mysql> DROP INDEX idx ... -
Linux中安装MySQL
2014-03-19 18:11 3454参阅mysql在linux下安装 一、下载MySQL 二、 ... -
servlet使用commons-fileupload上传文件示例
2014-01-03 14:32 884private static final Log log = ... -
Java调用ping命令
2013-11-26 10:26 3702package cn.com.songjy; impor ... -
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException
2013-10-21 16:51 7195使用MySQL保存图片时出现如下错误信息: Exceptio ... -
Iterate over rows and cells(EXCEL文件的读取)
2013-09-13 14:13 4091package cn.com.songjy.test.exce ... -
利用Servlet使用数据流在jsp页面中显示硬盘中的图片
2012-12-21 09:57 4141ShowImageFromDiskServlet.java代码 ... -
MySQL存储过程详解
2012-08-21 11:51 996http://blog.sina.com.cn/s/blog_ ... -
MySQL having介绍
2012-05-30 18:28 1013在介绍GROUP BY 和 HAVING 子句前,我们必需先讲 ... -
MySQL 数据库怎样把一个表的数据插入到另一个表
2012-05-30 17:19 1879web开发中,我们经常需要将一个表的数据插入到另外一个表,有时 ... -
mysql正则表达式及应用
2012-05-10 17:40 3384mysql where子句的模式匹配 今天在应用中遇到了这样 ... -
mysql的group_concat方法和正则(REGEXP)的结合使用
2012-05-10 17:29 3204select (select group_concat(a.n ... -
Mysql合并查询结果
2012-05-10 14:14 2486本文通过实例介绍了MySQL中的group_concat函数的 ... -
字段中包含空格的查询疑问
2012-04-14 21:40 8mysql> select ab.uid ,ab.nam ... -
查询某个库中的某个表的结构
2012-02-21 14:32 843SELECT column_name, column_defa ... -
oracle存取二进制文件(图片)
2010-11-16 16:27 9270package cn.com.songjy.test.db; ... -
java下载网络图片
2010-11-16 14:24 2873package cn.com.songjy.test.db; ...
相关推荐
### PB存取超过32k的二进制文件的实例详解 #### 一、引言 在PowerBuilder(简称PB)开发中,处理大文件尤其是超过32KB大小的二进制文件时,经常会遇到一些挑战。这是因为PB默认对二进制数据的处理有一定的限制。...
"c#数据库操作二进制存取图片源码.rar"这个压缩包文件显然包含了一个示例项目,展示了如何在C#中将图片以二进制形式存储到数据库,并进行读取。这种做法通常用于存储无法直接作为文本的非结构化数据。 首先,我们来...
保存图片至数据库涉及读取图片文件,将其转换为字节数组,然后将该数组存储在数据库的二进制字段中。以下代码片段展示了如何实现这一过程: ```vbnet Dim openFileDialog1 As New OpenFileDialog() If ...
* MEDIUMBLOB:MEDIUMBLOB 类型是 MySQL 中的一种二进制字符串类型,长度范围从 0 到 16777215 bytes。 * LONGBLOB:LONGBLOB 类型是 MySQL 中的一种二进制字符串类型,长度范围从 0 到 4294967295 bytes。 文本...
2. **二进制文件操作**:`FileStream`类用于处理二进制文件,可以读取或写入任何类型的数据。`BinaryReader`和`BinaryWriter`是其配套的读写工具。 3. **文件流操作**:`FileStream`不仅用于二进制文件,还可以与...
图片在数据库中通常以二进制形式存储,而非直接以文件系统形式存储。接下来将深入探讨在SQL数据库中存取图片的概念、技术方法和实践操作。 ### 知识点一:图片存储的数据模型 首先需要明确的是,图片在数据库中是...
CLOB主要用来存储大文本数据,如长篇文章、XML文档或JSON字符串,而BLOB则用于存储大量的二进制数据,如图像、音频、视频文件或者任何非文本的大型数据。在DELPHI中,通常会使用ADO(ActiveX Data Objects)或DBX...
此时,需要调整MySQL配置,增加允许存储的文件大小,或者使用分块上传技术处理大文件。 总的来说,将公文档案存储在MySQL数据库中,能够实现高效的空间利用、便捷的文件管理和安全的访问控制。然而,这种方法对平台...
1. 用户选择或捕获图片后,Delphi 应用程序会读取图片文件并将其转换为二进制数据。 2. 使用 Delphi 的数据库组件(如 TSQLQuery)构建 SQL 插入语句,将二进制数据插入到 MySQL 的 BLOB 字段。 3. 当需要显示图片时...
在数据库中,图片通常以二进制数据的形式存储,可以使用Binary字段类型。 2. 数据库连接:VB支持多种数据库引擎,如Access、SQL Server、MySQL等。使用ADO(ActiveX Data Objects)库,可以创建数据库连接,执行SQL...
BLOB是一种特殊的数据库数据类型,用于存储大块的二进制数据,如图片、音频或视频文件。 1. **图片数据类型**:大多数关系型数据库系统,如MySQL、PostgreSQL和Oracle,都提供了BLOB或与其类似的二进制数据类型来...
在SQL Server中,大对象通常使用IMAGE数据类型来存储,它可以存储任意二进制数据,与MySQL的BLOB类似。与MySQL不同的是,SQL Server没有提供特定的文本大对象类型,而是使用VARBINARY(MAX)来处理大的文本数据。存取...
BLOB用于二进制大对象,CLOB用于字符大对象,NCLOB用于Unicode字符大对象。Oracle使用PL/SQL过程或Java的OracleCallableStatement来处理大对象。例如,使用PL/SQL的UTL_FILE包读写文件,或者在Java中使用...
在IT领域,数据库通常用于存储各种类型的数据,包括文本、数字以及二进制大对象(BLOB)。"数据库保存、读取图片"这个主题涉及到如何将图片这种非结构化的数据以有效的方式存入数据库,以及如何从数据库中检索并显示...
在IT领域,数据库存储非文本数据,如图片、音频或视频文件,是常见的需求。本话题聚焦于如何使用C#编程语言与SQL数据库配合,实现图片的存储和检索。C#提供了丰富的类库和方法来处理文件操作和数据库交互,而SQL...
- AppendChunk、GetChunk存取文本和图片二进制:解释了如何使用ADO对象的AppendChunk和GetChunk方法来处理大量文本和图片数据的存取。 - 使用ADODB.Stream数据:最后,作者提到了ADODB.Stream对象,这是处理二进制...
2. **图片存储**:当图片上传时,程序会读取图片文件的二进制数据,然后将其存储到数据库的BLOB字段中。这通常通过编程语言的数据库API完成,例如PHP的PDO,Java的JDBC,Python的sqlite3库等。 3. **数据库操作**:...
这是因为大多数关系型数据库系统,如MySQL、SQL Server或Oracle,不直接支持存储文件,而是以二进制大对象(BLOB,Binary Large Object)的形式存储非结构化数据,如图像。 2. **创建数据库表**:创建一个包含字段...