c++写入oracle数据库blob字段,读取blob到本地文件
来源:互联网 发布:js array unique 编辑:程序博客网 时间:2024/05/16 16:20
写入本地文件到数据库
void DlgImpRoadSection::OnOkBtnClicked(){#pragma region 验证CString tempStr;CString fileName;m_FilePath.GetWindowText(fileName);if (access((const char*)_bstr_t(fileName), 0) != 0){ads_alert(L"文件不存在!");return;}...#pragma endregion#pragma region 以二进制形式读文件。存入varBlobCFile file;if (file.Open(fileName, CFile::modeRead|CFile::typeBinary) == FALSE){return;}long fileLen = file.GetLength(); // 文件长度// 存放文件二进制流的指针byte *fileBuffer = new byte[fileLen + 1]; file.Read(fileBuffer, fileLen);file.Close();// 指定一个一维安全数组(safe array)的边界SAFEARRAYBOUND rgsabound[1]; rgsabound[0].lLbound = 0;rgsabound[0].cElements = fileLen;// 安全数组SAFEARRAY *safeArray; safeArray = SafeArrayCreate(VT_UI1, 1, rgsabound); for (long i = 0; i < fileLen; i++){SafeArrayPutElement (safeArray, &i, fileBuffer++); }// 存入数据库中的BLOB的类型数据。设置为BYTE类型的数组VARIANT varBLOB;varBLOB.vt = VT_ARRAY | VT_UI1;varBLOB.parray = safeArray; #pragma endregion#pragma region 插入记录CString sql = L"select * from TABLE_NAME where 1 = 0";_RecordsetPtr rs;rs.CreateInstance(__uuidof(Recordset));try{if (rs->Open(sql.GetBuffer(0), g_conn.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText) == S_FALSE){return;}GUID guid;CoCreateGuid(&guid);CString id;id.Format(L"%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X", guid.Data1, guid.Data2, guid.Data3, guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]);rs->AddNew();rs->PutCollect("ID", _variant_t(id));rs->PutCollect("...", ...);rs->PutCollect("CAD_FILE", _variant_t(""));rs->GetFields()->GetItem("FILE")->AppendChunk(varBLOB);if (rs->Update() == S_OK){...}else{...}}catch(...){...}rs = NULL;#pragma endregionCDialog::OnOK();}
读取数据库blob字段值,存到本地文件。
#pragma region 从数据库读取文件存到本地CString tempFile; // 要存储到本地文件名。_RecordsetPtr rs;rs.CreateInstance(__uuidof(Recordset));CString sql;sql.Format(L"select FILE from tablename where id = '%s'", id);try{if (rs->Open(sql.GetBuffer(0), g_conn.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText) == S_FALSE){return false;}if (rs->adoEOF){return false;}long dataSize = rs->GetFields()->GetItem("FILE")->ActualSize;if (dataSize < 0){return false;}_variant_t varBlob = rs->GetFields()->GetItem("FILE")->GetChunk(dataSize);;if(varBlob.vt == (VT_ARRAY | VT_UI1)) //判断数据类型是否正确{char *pBuf = NULL;SafeArrayAccessData(varBlob.parray, (void **)&pBuf); //得到指向数据的指针CFile cadFile;tempFile = appPath + "\\temp.dwg";;if (cadFile.Open(tempFile, CFile::modeCreate|CFile::modeWrite|CFile::typeBinary) == FALSE){return false;}cadFile.Write(pBuf, dataSize);cadFile.Close();SafeArrayUnaccessData (varBlob.parray);}}catch (...){return false;}#pragma endregion
- c++写入oracle数据库blob字段,读取blob到本地文件
- c++写入oracle数据库blob字段,读取blob到本地文件
- java 文件写入oracle数据库blob字段
- JAVA读取Oracle数据库BLOB字段
- JAVA读取Oracle数据库BLOB字段
- java读取oracle数据库中blob字段
- C# 读取和写入oracle的blob字段的方法
- C#写入和读取数据库blob字段代码
- 设置oracle中的blob字段,将xml文件写入到数据库中
- 读取数据库中BLOB字段
- 使用JDBC写入blob数据到数据库以及读取数据
- (一)上传图片至服务器,写入到数据库Blob字段中,以及从数据库读取Blob信息(iframe父子页面传值)
- (二)上传图片至服务器,写入到数据库Blob字段中,以及从数据库读取Blob信息(iframe父子页面传值)
- 上传图片至服务器,写入到数据库Blob字段中,以及从数据库读取Blob信息(iframe父子页面传值)(1)
- 上传图片至服务器,写入到数据库Blob字段中,以及从数据库读取Blob信息(iframe父子页面传值)(2)
- Oracle数据库BLOB字段操作
- Oracle数据库BLOB字段操作
- Oracle数据库BLOB字段操作
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- [持续更新]android stduio的一些小技巧
- iOS多线程编程之NSThread的使用
- window驱动开发环境
- 数组工具类Arrays
- c++写入oracle数据库blob字段,读取blob到本地文件
- spring mvc 与 jquery ajax
- How to install xrdp on Ubuntu 12.04 Precise Pangolin
- android手机杀毒
- jQueryMobile的(十九) 页面显示/隐藏事件(pagebeforeshow、pagebeforehide、pageshow、pagehide)
- 64位 win7下nltk 环境搭建
- Java高效计数器
- C++字符串逆序
- ADF中常用的代码