`
- 浏览:
121418 次
- 性别:
- 来自:
北京
-
转贴
- 说明1:首先所有的文件都是以二进制存储
-
2:二进制文件有.doc .xls .jpg
- 文本文件有 .txt .html .xml
-
- 先在oracle数据库中建一张表用与测试
-
- create table CDL_TEST
- (
-
SID VARCHAR2(20) not null,
-
IMG BLOB,
-
DOC CLOB,
- DATA NUMBER
- )
- -- 约束
-
- alter table CDL_TEST
- add constraint CDL_SID primary key (SID)
-
-
- 测试代码如下:
-
-
package DataBaseUtil;
-
import java.sql.*;
-
import java.util.Scanner;
-
import java.io.*;
-
import oracle.sql.BLOB;
-
-
class InitDB{
-
private static Connection con=null;
-
private static Statement stmt=null;
-
private static ResultSet rs=null;
- InitDB(){
-
try{
-
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
-
String url="jdbc:oracle:thin:@localhost:1521:ORCL";
-
String user="cdl";
-
String password="1";
- con= (Connection) DriverManager.getConnection(url,user,password);
- InitDB.setCon(con);
-
}catch(Exception e){
- e.printStackTrace();
- }
- }
-
-
public void closCon(){
-
try{
- con.close();
-
}catch(Exception e){
- e.printStackTrace();
- }
- }
-
public void stmt(){
-
try{
- con.close();
-
}catch(Exception e){
- e.printStackTrace();
- }
- }
-
public void rs(){
-
try{
- con.close();
-
}catch(Exception e){
- e.printStackTrace();
- }
- }
-
-
public static Connection getCon() {
-
return con;
- }
-
-
public static void setCon(Connection con) {
- InitDB.con = con;
- }
-
-
public static ResultSet getRs() {
-
return rs;
- }
-
-
public static void setRs(ResultSet rs) {
- InitDB.rs = rs;
- }
-
-
public static Statement getStmt() {
-
return stmt;
- }
-
-
public static void setStmt(Statement stmt) {
- InitDB.stmt = stmt;
- }
- }
-
-
-
-
-
class InsertBlobData{
-
private ResultSet rs=null;
-
private InitDB idb=null;
- InsertBlobData(){
-
idb=new InitDB();
- }
-
public void insertBlob(String sql1) throws SQLException{
- Connection con=idb.getCon();
-
try{
-
con.setAutoCommit(false);
-
BLOB blob = null;
-
PreparedStatement pstmt = con.prepareStatement("insert into cdl_test(sid,img) values(?,empty_blob())");
-
pstmt.setString(1,"100");
- pstmt.executeUpdate();
- pstmt.close();
- rs=con.createStatement().executeQuery(sql1);
-
while(rs.next()){
-
System.out.println("rs length is:");
-
oracle.sql.BLOB b=(oracle.sql.BLOB )rs.getBlob("img");
-
System.out.println("cloblength is:"+b.getLength());
-
File f=new File("d:\\img\\1.jpg");
-
System.out.println("file path is:"+f.getAbsolutePath());
-
BufferedInputStream in=new BufferedInputStream(new FileInputStream(f));
-
BufferedOutputStream out=new BufferedOutputStream(b.getBinaryOutputStream());
-
int c;
-
while ((c=in.read())!=-1) {
- out.write(c);
- }
- in.close();
- out.close();
- }
- con.commit();
-
}catch(Exception e){
-
con.rollback();
- e.printStackTrace();
- }
- }
- }
-
-
-
-
class InsertClobData{
-
private ResultSet rs=null;
-
private InitDB idb=null;
- InsertClobData(){
-
idb=new InitDB();
- }
-
public void insertClob(String sql1) throws SQLException{
- Connection con=idb.getCon();
-
try{
-
con.setAutoCommit(false);
-
BLOB blob = null;
-
PreparedStatement pstmt = con.prepareStatement("insert into cdl_test(sid,doc) values(?,empty_clob())");
-
pstmt.setString(1,"101");
- pstmt.executeUpdate();
- pstmt.close();
- rs=con.createStatement().executeQuery(sql1);
-
while(rs.next()){
-
System.out.println("sdfasdfas");
-
oracle.sql.CLOB cb=(oracle.sql.CLOB)rs.getClob("doc");
-
File f=new File("d:\\doc\\1.txt");
-
System.out.println("file path is:"+f.getAbsolutePath());
-
BufferedWriter out = new BufferedWriter(cb.getCharacterOutputStream());
-
BufferedReader in = new BufferedReader(new FileReader(f));
-
int c;
-
while ((c=in.read())!=-1) {
- out.write(c);
- }
- in.close();
- out.close();
- }
- con.commit();
-
}catch(Exception e){
-
con.rollback();
- e.printStackTrace();
- }
- }
- }
-
-
-
-
class ReadBlobData{
-
private ResultSet rs=null;
-
private InitDB idb=null;
- ReadBlobData(){
-
idb=new InitDB();
- }
-
public void getBlob(String sql2) throws SQLException{
- Connection con=idb.getCon();
-
con.setAutoCommit(false);
-
try{
-
System.out.println("sq2 is:"+sql2);
-
System.out.println("stmt is:"+con);
- rs=con.createStatement().executeQuery(sql2);
-
while(rs.next()){
-
System.out.println("rs length is:");
-
Blob b=(Blob)rs.getBlob("img");
-
File f=new File("D:\\saveimg\\1.jpg");
-
FileOutputStream fos=new FileOutputStream(f);
-
InputStream is=b.getBinaryStream();
-
byte[] data=new byte[1024];
-
while(is.read(data)!=-1){
- fos.write(data);
- }
- fos.close();
- is.close();
- }
-
con.commit();
-
}catch(Exception e){
- e.printStackTrace();
-
}finally{
-
- }
- }
- }
-
-
-
-
class ReadClobData{
-
private ResultSet rs=null;
-
private InitDB idb=null;
- ReadClobData(){
-
idb=new InitDB();
- }
-
public void getClob(String sql2) throws SQLException{
- Connection con=idb.getCon();
-
try{
-
con.setAutoCommit(false);
-
System.out.println("sq2 is:"+sql2);
- rs=con.createStatement().executeQuery(sql2);
-
while(rs.next()){
-
oracle.sql.CLOB clob=(oracle.sql.CLOB)rs.getClob("doc");
-
File f=new File("d:\\savedoc\\1.txt");
-
BufferedReader in = new BufferedReader(clob.getCharacterStream());
-
-
BufferedWriter out = new BufferedWriter(new FileWriter(f));
-
int c;
-
while ((c=in.read())!=-1) {
- out.write(c);
- }
- out.close();
- in.close();
- }
-
con.commit();
- rs.close();
-
}catch(Exception e){
- e.printStackTrace();
- con.rollback();
- }
- }
- }
-
public class TestBlob {
-
public static void main(String []args){
-
String sql1="select * from cdl_test for update";
-
String sql2="select * from cdl_test";
-
System.out.println("\t\t\t欢迎使用:");
-
System.out.println("1:插入图片");
-
System.out.println("2:插入文本");
-
System.out.println("3:读取图片");
-
System.out.println("4:读取文本");
-
System.out.println("5:退出");
-
System.out.println("请选择:")
-
while(true){
-
try{
-
Scanner sc=new Scanner(System.in);
-
int i=sc.nextInt();
-
System.out.println("sss:"+i);
-
switch(i){
-
case 1:
-
InsertBlobData isd=new InsertBlobData();
-
isd.insertBlob(sql1); break;
-
case 2:
-
InsertClobData icd=new InsertClobData();
-
icd.insertClob(sql1); break;
-
case 3:
-
ReadBlobData rb=new ReadBlobData();
-
rb.getBlob(sql2); break;
-
case 4:
-
ReadClobData rc=new ReadClobData();
-
rc.getClob(sql2); break;
-
case 5:
-
System.exit(0);
- }
-
}catch(Exception e){
- e.printStackTrace();
- }
- }
- }
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Oracle数据库系统支持这两种数据类型,用于存储大量文本数据和二进制数据。下面将详细介绍这两种数据类型以及如何在Oracle中使用它们存储和读取图片。 1. **CLOB数据类型**: `CLOB`数据类型用于存储大量的字符...
在能导入字符串的richtextbox编辑器中,用户不仅可以输入和编辑文本,还可以进行更复杂的操作,例如插入图片、超链接等。同时,这个编辑器还能处理源代码,意味着它可以识别并高亮显示不同的编程语言,为开发者提供...
"Java编程将TXT文件数据导入...通过使用 Java 语言编写程序,我们可以轻松地将 TXT 文件中的数据导入 Oracle 数据库,从而提高工作效率和数据处理能力。该程序的编写和应用可以广泛应用于数据处理、数据分析等领域。
"jsp+servlet+oracle上传图片到数据库(非路径)"这个主题涉及的是一个常见的Web应用开发技术,它利用JavaServer Pages (JSP)、Servlet以及Oracle数据库来实现图片的上传和展示,而不是仅仅存储图片的路径。...
网页在Oracle中存取图片是一项常见的技术操作,尤其在企业级应用中,为了高效管理和存储大量数据,数据库系统如Oracle经常被用作图片资源的存储地。以下将详细阐述这一主题,包括图片的存储方式、访问流程以及相关...
"Oracle导入导出图片及Excel"这个主题涉及到如何在Oracle环境中高效地处理非结构化的图片和Excel表格数据。由于没有提供源代码,我们将探讨一般性的方法和技术。 1. **Oracle BLOB类型**:Oracle数据库使用BLOB...
在Delphi编程环境中,将文本存入数据库是一项常见的任务,特别是在处理大量文本数据时,例如日志记录、用户输入或者数据分析。以下是一份详细的指南,介绍如何使用Delphi来实现这个功能。 首先,你需要选择一个...
在Oracle数据库中,当我们遇到需要存储超过4000个字符的文本数据时,使用CLOB(Character Large Object)类型便显得尤为重要。下面将详细介绍如何在C#环境下通过Oracle.NET接口实现将长于4000字符的字符串转化为CLOB...
虽然将图片存入数据库提供了一种集中存储和管理数据的方式,但这种方法也有一些潜在问题。例如,如果数据库中的图片数量庞大,可能会影响查询性能,因为数据库需要处理大量非结构化数据。此外,数据库可能不是理想的...
Oracle数据库作为其中的一款强大系统,不仅支持常见的数据类型,还提供了存储和检索图片的功能。本文将深入探讨如何在Oracle数据库中进行照片的读取与写入。 首先,我们需要了解如何将本地照片存入Oracle数据库。这...
本示例主要涉及的是如何将图片通过BASE64编码加密后存入数据库的Blob类型字段,并能从数据库中取出这些数据再还原成原始图片。以下是相关知识点的详细说明: 1. **BASE64编码**:BASE64是一种用于将二进制数据转换...
BLOB用于存储二进制数据,如图片、音频或视频文件,而CLOB和NCLOB则用于存储大文本信息。BFILE是特殊的外部LOB,数据存储在操作系统文件系统中。 在C++ Builder中处理LOB数据时,由于C++ Builder的MFC(Microsoft ...
PB5的MLE(多行编辑器)用于编辑和显示文本,文本可以通过读取、预处理、存入LONG字段、查询和展示。这个过程涉及到文本的读写、替换和存储,展示了Oracle在处理非结构化数据方面的灵活性。 3. **处理图象文件**:...
在 Oracle 中,CLOB(Character Large OBject)类型用于存储大量的文本数据,如文章、文档、图片等。CLOB 字段可以存储大量的 Unicode 字符串数据,并提供了高效的读写机制。 将 Image 类型数据导出到 Oracle 的 ...
一是直接将图片文件的二进制数据作为BLOB(Binary Large Object)类型存储,二是将图片转换为Base64编码字符串,然后存储为文本。在PB中,可以使用SQL语句或DBMS特定的函数来处理这种数据。 3. **DataWindow**:这...
Blob用于存储二进制数据,如图片、音频或视频文件,而Clob则用于存储字符数据,比如长文本。以下是如何使用Java处理Blob类型的图像数据的详细步骤: 1. **连接数据库** 使用JDBC(Java Database Connectivity)API...
在IT行业中,数据库管理和数据操作是至关重要的环节。Oracle数据库是一个功能强大的关系型数据库管理系统,广泛应用于企业级...通过阅读指定的博客链接,可以获取更多关于iBATIS和Oracle CLOB操作的实战经验和技巧。
在Java应用程序中通过JDBC与Oracle交互时,正确地读取和写入CLOB类型的数据变得尤为重要。本文将详细介绍如何使用Java对Oracle中的CLOB类型字段进行操作。 #### CLOB简介 CLOB是Oracle数据库用于存储大型文本数据...
虽然理论上可以将图片和声音直接存入数据库,但在实际项目中,通常只存储文件路径,以减少数据库负载,除非对数据的安全性有极高要求,才会考虑直接存储。 了解并正确选择这些数据类型对于设计高效且适应需求的...
通过将图片转换为二进制数据并存储在数据库中,可以实现数据的高效管理,同时保持程序的稳定性和性能。这个过程中的关键是理解如何使用TStream对象以及如何在数据库组件中正确处理BLOB字段。通过深入学习和实践,...