社区
数据库
帖子详情
如何存储自定义格式的图片文件到SQL中及如何用Vc来读取
1982xcc
2003-12-12 07:52:22
如题
...全文
135
7
打赏
收藏
如何存储自定义格式的图片文件到SQL中及如何用Vc来读取
如题
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
1982xcc
2003-12-14
打赏
举报
回复
请高手指点,急忙!
AkiraChing
2003-12-14
打赏
举报
回复
储存图片
rs.CreateInstance(__uuidof(Recordset));
rs->Open("相片",_variant_t((IDispatch *)m_pConn,true), adOpenKeyset,
adLockOptimistic, adCmdTable);
rs->AddNew();
_variant_t var;
COleDateTime tDate;
m_datePic.GetTime(tDate);
var.vt=VT_DATE;
var.date=tDate;
rs->GetFields()->GetItem("拍摄日期")->Value=var;
var.Clear();
var.vt=VT_BSTR;
var.bstrVal=strTheme.AllocSysString();
rs->GetFields()->GetItem("主题名称")->Value=var;
var.bstrVal=strId.AllocSysString();
rs->GetFields()->GetItem("照片 ID")->Value=var;
CFile file;
if( !file.Open( m_strPicfile, CFile::modeRead) )
return ;
DWORD uFilesize =(DWORD) file.GetLength();
char* pBuffer = new char[uFilesize + 1];
if(pBuffer!=NULL)
{
ZeroMemory(pBuffer,uFilesize + 1);
VERIFY(file.Read(pBuffer,uFilesize)==uFilesize);
VARIANT varImage;
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = uFilesize;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
for (long i = 0; i < (long)uFilesize; i++)
SafeArrayPutElement (psa, &i, pBuffer++);
varImage.vt = VT_ARRAY | VT_UI1;
varImage.parray = psa;
rs->GetFields()->GetItem("图片")->AppendChunk(varImage);
}
rs->Update();
pBuffer=pBuffer-uFilesize;
if(pBuffer)
{
delete [] pBuffer;
pBuffer=NULL;
}
MessageBox("添加数据成功!","提示",MB_OK|MB_ICONINFORMATION);
}
catch (_com_error e)
{
PrintComError(e);
}
if(rs->State)
rs->Close();
1982xcc
2003-12-13
打赏
举报
回复
"// 文件可以是任意格式,但是数据库中必须有文件的大小"
数据库中图片定义为image格式,如何指定其大小,我想完成一个通过文件列表框打开
选取一个图片,存储。从数据库读出 显示的功能,还请指教。
PS 数据库操作新手,还请将文件操作的代码完整些,谢谢
AkiraChing
2003-12-13
打赏
举报
回复
HGLOBAL hgImageMem = NULL;
LPVOID lpvImageMem = NULL;
long lImageSize = rs->GetFields()->GetItem("图片")->ActualSize;
if(lImageSize > 0)
{
_variant_t varImage;
varImage = rs->GetFields()->GetItem("图片")->GetChunk(lImageSize);
if(varImage.vt == (VT_ARRAY | VT_UI1))
{
hgImageMem = GlobalAlloc(GHND, lImageSize);
if(hgImageMem!=NULL)
{
lpvImageMem = GlobalLock( hgImageMem);
char *pBuffer= NULL;
SafeArrayAccessData(varImage.parray,(void **)&pBuffer);
CopyMemory(lpvImageMem,pBuffer,lImageSize);
SafeArrayUnaccessData (varImage.parray);
CFile file("a.jpg",CFile::modeWrite|CFile::modeCreate);
file.Write(lpvImageMem,lImageSize);
file.Close();
}
}
}
GlobalUnlock(hgImageMem);
lpvImageMem=NULL;
GlobalFree(hgImageMem);
nava
2003-12-12
打赏
举报
回复
#define FILE_MAX_LENGTH 5242880 // 5M
// 文件可以是任意格式,但是数据库中必须有文件的大小
HANDLE hFile;
char* strBuff = new char[FILE_MAX_LENGTH];
DWORD dwFileSize;
DWORD dwRead;
hFile = CreateFile("c:\\2.bmp", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
dwFileSize = GetFileSize(hFile, NULL);
if(dwFileSize != 0xFFFFFFFF)
{
if (!ReadFile(hFile, strBuff, dwFileSize, &dwRead, NULL))
return;
}
CloseHandle(hFile);
}
// 向数据库中写入数据,省去一些步骤应该没问题吧
rs.AppendChunk(_T("FILE"), strBuff);
rs.SetFieldValue(_T("FILELENGTH"), dwFileSize);
delete[] strBuff;
// 从数据库中读取
HANDLE hFile;
DWORD dwFileSize;
DWORD dwRead;
char* strBuff = new char[FILE_MAX_LENGTH];
rs.GetChunk(_T("FILE"), strBuff);
rs.GetFieldValue(_T("FILELENGTH"), dwFileSize);
hFile = CreateFile(_T("C:\\1.bmp"), GENERIC_READ|GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, 0, NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
if (!WriteFile(hFile, strBuff, dwFileSize, &dwRead, NULL))
return;
CloseHandle(hFile);
}
delete[] strBuff;
1982xcc
2003-12-12
打赏
举报
回复
是AppendChunk() 和 GetChunk ?
里面的解释少得可怜,有没有具体详细的用法说明呢?
smch
2003-12-12
打赏
举报
回复
GetTrunk
AppendTrunk
在SQL Server中的联机文档查
自动生成访问
sql
server数据库的
VC
代码
总结来说,这个压缩包提供了一种在
VC
环境下自动生成
SQL
Server数据库访问代码的解决方案,它基于三层架构,并可能利用文本
文件
来
存储
数据库信息,通过
VC
的项目
文件
进行编译构建。这种自动化方式能够帮助开发者快速...
vc
读取
大智慧实时行情,并将行情数据更新到
sql
server
综上所述,"
vc
读取
大智慧实时行情,并将行情数据更新到
sql
server"是一个涉及多个技术层面的综合项目,涵盖了编程、数据处理、数据库管理和网络通信等多个方面的知识。正确理解和应用这些知识点,将有助于构建一个...
VC
读取
系统控制面板及运行演示.rar
标题 "
VC
读取
系统控制面板及运行演示.rar" 提供了一个关于使用
VC
++(Visual C++)编程语言实现的功能,即
读取
Windows系统控制面板的内容并进行运行演示。这通常涉及到Windows API(应用程序接口)的使用,通过API...
vc
中通过解析mid/mif
文件
访问mapinfo数据
在
VC
++(Visual C++)开发环境中,MapInfo是一款广泛使用的桌面GIS(地理信息系统)软件,它使用特定的
文件
格式
来
存储
地图数据,包括mid(MapInfo Data)和mif(MapInfo Format)
文件
。mid
文件
存储
的是表格数据,而...
VC
创建写入DBF
文件
总的来说,通过
VC
创建写入DBF
文件
,需要理解DBF
文件
格式
,熟练运用
文件
I/O操作,并构建合适的数据结构和接口来抽象这个过程。提供的"DBFTest"可能是实现这一功能的代码示例,可以通过分析和学习这个示例,进一步了解...
数据库
4,018
社区成员
39,807
社区内容
发帖
与我相关
我的任务
数据库
VC/MFC 数据库
复制链接
扫一扫
分享
社区描述
VC/MFC 数据库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章