社区
数据库
帖子详情
who can help me???
free20012001
2003-08-20 08:44:04
我急需了解vc中对二进制文件进行读写等操作的内容,以及关于二进制文件如何与ACCESS等数据库之间进行数据存储和通信的知识,二进制文件是以结构的形式给出的。但有关这方面的vc书籍很少,请有经验的朋友提供一下资料,或推荐一下有哪些好书籍可以有这方面的内容,网站也行,文章也行!多谢多谢!
...全文
14
5
打赏
收藏
who can help me???
我急需了解vc中对二进制文件进行读写等操作的内容,以及关于二进制文件如何与ACCESS等数据库之间进行数据存储和通信的知识,二进制文件是以结构的形式给出的。但有关这方面的vc书籍很少,请有经验的朋友提供一下资料,或推荐一下有哪些好书籍可以有这方面的内容,网站也行,文章也行!多谢多谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
spwnihao
2003-10-10
打赏
举报
回复
[转贴]
3.1 BLOB数据的保存
BLOB类型的数据无法用普通的方式进行存储,我们需要使用AppendChunk函数,AppendChunk包含在Field对象中,原型如下:
HRESULT AppendChunk (const _variant_t & Data );
从函数原型中可以看到关键的问题是我们需把二进制数据赋值给VARIANT类型的变量,下面我们给出具体的代码并作简单的分析:
///假设m_pBMPBuffer指针指向一块长度为m_nFileLen的二进制数据,并且已经成功打开了记录集对象m_pRecordset///
char *pBuf = m_pBMPBuffer;
VARIANT varBLOB;
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1];
m_pRecordset->AddNew(); ///添加新记录
m_pRecordset->PutCollect("username",_variant_t("小李")); ///为新记录填充username字段
m_pRecordset->PutCollect("old",_variant_t((long)28); ///填充old字段
if(pBuf)
{
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = m_nFileLen;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound); ///创建SAFEARRAY对象
for (long i = 0; i < (long)m_nFileLen; i++)
SafeArrayPutElement (psa, &i, pBuf++); ///将pBuf指向的二进制数据保存到SAFEARRAY对象psa中
varBLOB.vt = VT_ARRAY | VT_UI1; ///将varBLOB的类型设置为BYTE类型的数组
varBLOB.parray = psa; ///为varBLOB变量赋值
m_pRecordset->GetFields()->GetItem("photo")->AppendChunk(varBLOB);///加入BLOB类型的数据
}
m_pRecordset->Update(); ///保存我们的数据到库中
至此我们的数据已经成功地保存到了数据库中,接下来我们所要做的工作便是将该数据提取出来,让我们继续吧!
3.2 BLOB数据的读取
对应于保存数据时我们所使用的AppendChunk函数,读取数据应该使用GetChunk函数,GetChunk的原型如下:
_variant_t GetChunk (long Length );
给出数据的长度后GetChunk将返回包含数据的VARIANT类型变量,然后我们可以利用SafeArrayAccessData函数得到VARIANT变量中指向数据的char *类型的指针,以方便我们的处理,具体代码如下:
long lDataSize = m_pRecordset->GetFields()->GetItem("photo")->ActualSize;///得到数据的长度
if(lDataSize > 0)
{
_variant_t varBLOB;
varBLOB = m_pRecordset->GetFields()->GetItem("photo")->GetChunk(lDataSize);
if(varBLOB.vt == (VT_ARRAY | VT_UI1)) ///判断数据类型是否正确
{
char *pBuf = NULL;
SafeArrayAccessData(varBLOB.parray,(void **)&pBuf); ///得到指向数据的指针
/*****在这里我们可以对pBuf中的数据进行处理*****/
SafeArrayUnaccessData (varBLOB.parray);
}
}
以上我们成功实现了BLOB数据在数据库中的存取,为了让大家有现成的例子可以参考,本文提供了示例工程,在示例工程中我们在数据库中保存图像数据,并可以对这些图像进行浏览、修改,该例子还涉及到如何用char *指向的BMP文件数据创建BITMAP对象然后显示出来。
free20012001
2003-10-10
打赏
举报
回复
非常感谢您的回答,请问您的转贴来源于何处?感觉讲的不错,是哪本书上的?能否推荐一下?
wflyfox
2003-08-29
打赏
举报
回复
从文件中读入记录,把它的几个字段存入变量中
写数据库就行了
free20012001
2003-08-21
打赏
举报
回复
二进制文件是以结构的形式给出的,例如:
sruct _dbrecord
{//姓名
char name[20];
//学号
int number;
//班级
char clno[20];
//数学成绩
int math;
//语文成绩
int chinese;
};
怎样将其以一条一条的记录形式导入到access数据库中呢?您能具体给我举个例子吗?如果可以,请您尽快回复我,好吗?多谢多谢!
hdsunwind
2003-08-20
打赏
举报
回复
对二进制文件进行?????
用CFile类,或直接用fopen、fread、fwrite等不就行了!!
python机器学习-乳腺癌细胞挖掘
管理过欧美日中印巴西等国外药典数据库,马丁代尔数据库,FDA溶解度数据库,临床试验数据库,WHO药物预警等数据库。 课程概述 此课程讲述如何运用python的sklearn快速建立机器学习模型。课程结合美国威斯康辛乳腺癌...
就是搞不掂啊 。。
后天就要交C语言课程设计了。。 一个小小的超市收银管理系统,难死一群人了。。 咋就是搞不掂啊 ?! Who can
help
me ??-------Who 啊????
I want to study english
These days, I always want me to study english very well, though I spent two hours to study every day, but I didnt find my english has improve, who can
help
me???
每日TED "How to find person who can
help
you get ahead at work"
How to find person who can
help
you get ahead at work" The roundtable was a very commonly used phrase on Wall Street to describe the year-end evaluative process for analysis, associate, vice...
how to get the GLCM image ?
i have a grey image , now i want to get the GLCM Contrast image , GLCM Homogeneity image like behind image example showing in the next : who can
help
me ?
数据库
4,011
社区成员
39,816
社区内容
发帖
与我相关
我的任务
数据库
VC/MFC 数据库
复制链接
扫一扫
分享
社区描述
VC/MFC 数据库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章