`
JavaFans
  • 浏览: 89613 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

操作数据库的Blob数据 (文件, 图片等)

阅读更多
使用场景:
    数据库里面直接使用blob类型保存图片,文件等二进制文件,如何对这些数据进行插入,读取?

1. 插入: TSQL可以使用Openrowset,Bulk, 例如:
CREATE TABLE [SBLOB] (
      [CabData] [image] NULL 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

INSERT INTO [SBLOB] ([CabData])
      SELECT 
            BulkColumn FROM OPENROWSET(
                  Bulk 'C:\MyCab.zip', SINGLE_BLOB) AS BLOB

2. 读取:将数据库值读取为文件
    在SQL Server 2000和之前,可以使用TextCopy命令。
但是微软在SQL Server 2005及以后,不再有这个命令。因此比较麻烦。
但是如果用.net可以很方便的实现这个功能。
sample code:
int IndexBlobContents = 0;
sqlconn.ConnectionString = "Server=" + ServerName + ";UID=" + UID + ";Pwd=" + Pwd + ";Database=" + DBName;
sqlconn.Open();

Blobsize = 10000000;// Initalize the BlobSize
cmd = new SqlCommand("SELECT " + Fldnames + " FROM " + TbName + " " + Cndt, sqlconn);
sqlDr = cmd.ExecuteReader();
while (sqlDr.Read())
{
    //dirname + filename
    ExtractFileName = ExtractPath + sqlDr[1].ToString();
    startIndex = 0; // Reset the starting byte for the new BLOB.
    outBuffer = new byte[Blobsize];
    if (File.Exists(@ExtractFileName))
    {
        File.Delete(@ExtractFileName);
    }

    // Create a file to hold the output.
    fs = new FileStream(@ExtractFileName, FileMode.OpenOrCreate, FileAccess.Write); 
    bw = new BinaryWriter(fs);

    // Read bytes into outByte[] and retain the number of bytes returned.
    blob = sqlDr.GetBytes(IndexBlobContents, startIndex, outBuffer, 0, Blobsize); 
    while (blob == Blobsize) // Continue while there are bytes beyond the size of the buffer.
    {
        bw.Write(outBuffer);
        bw.Flush();
        startIndex += Blobsize;
        blob = sqlDr.GetBytes(IndexBlobContents, startIndex, outBuffer, 0, Blobsize);
    }

    // Write the remaining buffer.
    bw.Write(outBuffer, 0, (int)blob);
    bw.Flush();
    bw.Close();
    fs.Close();
}
sqlDr.Close();
0
0
分享到:
评论

相关推荐

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

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

    批量导出ORACLE数据库BLOB字段生成文件

    本教程将详细讲解如何批量导出Oracle数据库中的BLOB字段并生成文件,适用于需要定期或一次性处理大量图片或其他BLOB数据的场景。 首先,确保你已经在本地安装了Oracle客户端。Oracle客户端提供了SQL*Plus和其他工具...

    从mysql数据库中批量下载Blob图片到本地

    总结起来,批量下载MySQL数据库中Blob类型的图片至本地,需要理解Blob数据类型,熟悉Java的JDBC操作,以及掌握文件I/O操作。通过以上步骤,你可以有效地完成这一任务,确保图片数据的完整性和可访问性。在实际项目中...

    关于在SQL Server数据库系统中存取BLOB数据的探讨.pdf

    BLOB数据是指非结构化的大型二进制数据,例如图片、音频、视频等。这种数据类型的特点是长度不确定,最大可达2GB。这使得BLOB数据的存储和处理变得非常困难。 笔者在开发设备管理信息系统中,使用了SQL Server...

    java,Blob字段操作,将图片或者文件保存到数据库中.zip

    在Java编程中,Blob(Binary Large Object)是用于存储大量二进制数据的数据类型,常被用在数据库中保存图片、文件等非文本信息。本教程将深入探讨如何使用Java进行Blob字段的操作,以实现将图片或文件保存到数据库...

    利用VB存取数据库中BLOB数据

    这会将数据库中的BLOB数据写入到一个文件中。 6. 关闭连接:在完成所有操作后,记得关闭数据库连接以释放资源。 ```vb conn.Close Set conn = Nothing ``` 以上就是利用VB存取数据库中BLOB数据的基本过程。在实际...

    图片BASE64加密保存到数据库Blob类型中(放入数据库,并取出生成图片)

    2. **Blob类型**:Blob是Binary Large Object的缩写,是数据库管理系统中用于存储大量二进制数据的字段类型,例如图片、音频、视频等。Blob字段允许我们存储非结构化的数据,与普通的数值、字符串等字段不同。 3. *...

    java 存数据库 blob文件的示例

    Blob类型适用于存储图片、音频、视频等非结构化数据。本示例将详细解释如何使用Java向SQL Server数据库中插入Blob类型的文件。 首先,确保你已经安装了JDBC驱动程序,对于SQL Server,通常是Microsoft的`mssql-jdbc...

    Blob数据下载到本地

    本篇文章将详细讲解如何从Oracle数据库中下载Blob数据并将其转化为图片文件保存到本地。 首先,我们需要了解Blob数据是如何存储在数据库中的。Blob数据类型可以存储最多4GB的数据,并且它不包含任何关于数据内容的...

    jsp操作mysql数据库的blob字段

    在IT领域,数据库管理...以上就是使用JSP操作MySQL数据库Blob字段的关键知识点,涵盖了从文件读取、数据库操作到文件输出的完整流程。理解这些概念和步骤对于任何需要在Web应用中存储和检索大文件的开发者都至关重要。

    JAVA中SQLlite数据库BLOB数据类型的存取.docx

    JAVA 中 SQLlite 数据库 BLOB 数据类型的存取是指在 JAVA 语言中使用 SQLlite 数据库来存储和读取大型二进制对象(BLOB),以便实现文件存储和读取的功能。本文将详细介绍如何使用 JAVA 语言来实现 SQLlite 数据库...

    vc6读取数据库blob大二制对像

    在VC6(Visual C++ 6.0)中进行数据库操作时,经常遇到需要处理Blob(Binary Large Object)类型的数据,这种数据类型通常用于存储大块的二进制数据,如图片、文档或音频文件等。Blob在ACCESS、MSSQL 2005和MSSQL ...

    java中sqllite数据库blob数据类型的存取.docx

    ### Java中SQLite数据库BLOB数据类型的存取 #### 背景与问题描述 在Java中操作SQLite数据库时,BLOB(Binary Large Object)类型的数据处理是较为常见的需求之一,尤其是在需要存储图片、文档等二进制文件的情况下。...

    在PowerBuilder中操作BLOB数据的技巧

    但是用通常的数据窗口技术无法将 BLOB 类型数据加入到数据库中,也不能将数据库中相应字段的数据提取出来,即使在程序中直接使用 UPDATE 和 SELECT 等 SQL 语句也是无法对 BLOB 类型数据进行操作的。 在 Power...

    kettle通过java代码将数据库blob 字段抽取到本地文件

    kettle通过java代码将数据库blob 字段抽取到本地文件

    Delphi将图片以二进制方式存储在数据库BLOB字段中.rar

    在"Delphi将图片以二进制方式存储在数据库BLOB字段中"的示例代码中,位于"useBlob"目录下的文件应该包含了以上所述的完整过程。通过分析和学习这段代码,你可以了解到如何在实际项目中应用这些技术。这不仅涉及到...

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

    Blob用于存储二进制数据,如图片、音频或视频文件,而Clob则用于存储字符数据,比如长文本。以下是如何使用Java处理Blob类型的图像数据的详细步骤: 1. **连接数据库** 使用JDBC(Java Database Connectivity)API...

    如何将DB2数据库中的大对象(BLOB,CLOB)数据类型复制到Oracle数据库中

    本例中,我们讨论如何将DB2数据库中的BLOB数据类型复制到Oracle数据库。 1. **BLOB与CLOB数据类型**: BLOB(Binary Large Object)存储二进制大对象,如图像、音频或视频文件。CLOB(Character Large Object)...

    pb中从数据库读出blob,然后用word打开

    在探讨如何在PB(PowerBuilder)环境中从数据库读取BLOB数据并利用Word进行处理之前,我们先简要回顾一下BLOB(Binary Large Object)的基本概念。BLOB是一种用于存储大量二进制数据的数据类型,如图像、音频、视频...

    基于.NET数据库BLOB数据处理技术在MIS开发中的应用.pdf

    本文以SQL Server数据库和***开发环境为例,探讨了.NET数据库BLOB数据处理技术的应用,并提出了有效的解决方案。 1. 关键技术和概念解析 文章首先介绍了BLOB数据的概念,BLOB是存储在数据库中的一种大容量二进制...

Global site tag (gtag.js) - Google Analytics