VC2010 ADO 写入二进制数据到数据库 下载二进制数据到文件

通过ADO把照片以二进制方式写入到数据库保存;

从下载二进制文件到文件

////////////////////数据库相关  头文件里面定义//////////////////////////////

CString m_strConnection; // 数据库连接字符串

CADODatabase m_Db; // 数据库连接

CADORecordset m_Rs; // 数据库记录集

//写入图片到数据库image类型字段

if(!m_Db.Open(m_strConnection)) // 打开数据库

{

MessageBox("打开数据库失败!");

return;

}

m_Rs = CADORecordset(&m_Db);// 创建记录集

//Image_Path从配置文件读入

CFile file;

int fileCount = CountDirectory(Image_Path);//通过传人路径,获取该目录下面的文件个数

for (int i=1;i<fileCount;i++)

{

CString filename;

filename.Format("image\\image%d.jpg",i);

if(!file.Open(filename,CFile::modeRead | CFile::typeBinary))

return;

int dwLo=file.GetLength();

BYTE *m_pImagBuffer=new BYTE[dwLo];

ZeroMemory(m_pImagBuffer,dwLo);

file.Read(m_pImagBuffer,dwLo);

file.Close();

// BOOL m_b = file.Open("1.dat",CFile::modeWrite | CFile::modeCreate |CFile::typeBinary);

// file.Write(m_pImagBuffer,dwLo);

// file.Close();

strQuery.Format("Select * From ImageTest");

m_Rs.Open(strQuery,CADORecordset::cadoOpenEnum::openQuery);

m_Rs.AddNew();

CString strTime;

SYSTEMTIME systm;

GetLocalTime(&systm);

strTime.Format("%4d-%02d-%02d %02d:%02d:%02d",\

systm.wYear, systm.wMonth, systm.wDay,\

systm.wHour, systm.wMinute, systm.wSecond);

m_Rs.SetFieldValue("Date",strTime);

m_Rs.AppendChunk("ImageData",m_pImagBuffer,dwLo);

m_Rs.Update();

m_Rs.Close();

delete []m_pImagBuffer;

}

m_Db.Close();

//读取数据库二进制文件保存到本地

int index=0;    //记录个数

if(!m_Db.Open(m_strConnection)) // 打开数据库

{

MessageBox("打开数据库失败!");

return;

}

m_Rs = CADORecordset(&m_Db);// 创建记录集

CString strFilePath;

//strFilePath = Image_Path + "\\BMP";

strFilePath = "OUT_BMP";

::CreateDirectory(strFilePath,NULL);   //创建目录

// CString strNameCount;

// int nRowCount;

// strNameCount.Format("SELECT COUNT(ImageData) FROM ImageTest");

//

// if (m_Rs.Open(strNameCount,CADORecordset::cadoOpenEnum::openQuery))

// m_Rs.GetFieldValue(0,nRowCount);   //获取记录个数

// m_Rs.Close();

strQuery.Format("Select ImageData From ImageTest");

if(m_Rs.Open(strQuery,CADORecordset::cadoOpenEnum::openQuery))

{

while(!(m_Rs.IsEOF()))

{

CString filename;

filename.Format("%s\\image%d.png",strFilePath,index);

m_ImgNameMap[index]=filename;    //把输出的所有名字放到容器里面

CADOFieldInfo fldInfo;

m_Rs.GetFieldInfo("ImageData",&fldInfo);

BYTE *m_pImagBuffer = new BYTE[fldInfo.m_lSize];

m_Rs.GetChunk("ImageData",m_pImagBuffer);

CFile outFile(filename,CFile::modeCreate | CFile::modeWrite);

outFile.Write(m_pImagBuffer,fldInfo.m_lSize);

outFile.Close();

m_Rs.MoveNext();

index++;

delete []m_pImagBuffer;

}

m_Rs.Close();

}

m_Db.Close();

软件实例截图:

软件实例下载地址:

http://download.csdn.net/detail/suifeng1984114/7835095

软件截图

时间: 2025-01-04 14:37:32

VC2010 ADO 写入二进制数据到数据库 下载二进制数据到文件的相关文章

[.ashx檔?泛型处理程序?]基础入门#5....ADO.NET 与 将DB里面的二进制图片还原 (范例下载 &amp; 大型控件的ImageField)

[.ashx檔?泛型处理程序?]基础入门#5....ADO.NET 与 将DB里面的二进制图片还原 (范例下载 & 大型控件的ImageField) http://www.dotblogs.com.tw/mis2000lab/archive/2014/05/19/ashx_beginner_05_db_picture_show_download.aspx 根据前面三篇文章的教学 完成后可以做出来  (请您务必依照顺序学习,不要只是找范例来Copy) [.ashx檔?泛型处理程序?]基础入门#1.

023医疗项目-模块二:药品目录的导入导出-从数据库中查出数据用XSSF导出excel并存放在虚拟目录最后下载(包括调试)

我们要实现的效果: 进入到这个页面后,输入要查询的条件,查询出药品表的数据,然后按下导出按钮 ,就会在服务器的一个目录下生成一个药品表的excel表格. 点击"导出"之后: 点击下载就能下载Excel表格,实现导出功能. 讲解如下: 还是分为三层: 1:Dao层 我们先看sql语句. 在PL/SQL写sql: select id, bm, mc, jx, gg, zhxs, scqymc, spmc,jyzt, zbjg, (select info from dictinfo wher

C# 文件与二进制互转数据库写入读出

//这个方法是浏览文件对象 private void button1_Click(object sender, EventArgs e) { //用户打开文件浏览 using (OpenFileDialog dialog = new OpenFileDialog()) { //只能单选一个文件 dialog.Multiselect = false; //选择一个文件 if (dialog.ShowDialog() == DialogResult.OK) { try { //把选择的文件路径给tx

ADO.NET之6-使用Command修改数据库中的数据---ShinePans

源代码: using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SQLTest { class Program { static void Main(string[] args) { ///连接数据库 st

java实现赋值excel模板,并在新文件中写入数据,并且下载

/** * 生成excel并下载 */ public void exportExcel(){ File newFile = createNewFile(); //File newFile = new File("d:/ss.xls"); //新文件写入数据,并下载***************************************************** InputStream is = null; HSSFWorkbook workbook = null; HSSFSh

通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

摘自:http://blog.csdn.net/mazhaojuan/article/details/8592015 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中  先看一下我要实现的功能界面:   这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面中有所体现,这里不再赘述,此篇文章主要介绍:我是如何通过js从前台获取数

SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)

读取Excle表返回一个集合: package com.shiliu.game.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Field; import java.lang.reflect

express 写入数据到数据库中

一.创建Schema var Schema = new mongoose.Schema({ user:String, txt:String, times:date } module.exports = Schema; 二.创建model var user = mongoose.model('smile',Schema); ////smile 为 数据库中的集合名     Schema 为导入的模块 module.exports = user; 三. 进入rotes→add.js 先导入model

海量数据查询关系型数据库存储大数据,要点就是:简单存储、分区分表、高效索引、批量写入

海量数据查询 https://www.cnblogs.com/nnhy/p/DbForBigData.html 相当一部分大数据分析处理的原始数据来自关系型数据库,处理结果也存放在关系型数据库中.原因在于超过99%的软件系统采用传统的关系型数据库,大家对它们很熟悉,用起来得心应手. 在我们正式的大数据团队,数仓(数据仓库Hive+HBase)的数据收集同样来自Oracle或MySql,处理后的统计结果和明细,尽管保存在Hive中,但也会定时推送到Oracle/MySql,供前台系统读取展示,生成