请问是否可以在表中存放文件? 我想将文本文件,声音文件存放到数据库中,但不知道应该怎么实现?是不是可以使用表中的某个字段来存放文件类型数据?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.vckbase.com/document/viewdoc.asp?id=252 谢谢各位!我用的DBMS是SQL SERVER,image类型怎么使用,比如我有一个文本文件要存放进来。 以下代码是将一个图形文件存入数据库,有的地方我也不明白 CString Sql; CFile fileImage; CFileStatus fileStatus; CImageSet * pImageSet = new CImageSet; try { pImageSet->Open(); } catch(CException* pE) { pE->ReportError(); pE->Delete(); return; } pImageSet->AddNew(); fileImage.Open(m_strFileName, CFile::modeRead); fileImage.GetStatus(fileStatus); pImageSet->m_Image.m_dwDataLength = fileStatus.m_size; HGLOBAL hGlobal = GlobalAlloc(GPTR, fileStatus.m_size); pImageSet->m_Image.m_hData = GlobalLock(hGlobal); fileImage.ReadHuge(pImageSet->m_Image.m_hData, fileStatus.m_size); pImageSet->SetFieldDirty(&pImageSet->m_Image); pImageSet->SetFieldNull(&pImageSet->m_Image, FALSE); pSheetImageSet->Update(); GlobalUnlock(hGlobal); pImageSet->Close(); delete pImageSet; 在SQLSERVER中将该字段的类型设为image类型(如果是图象的话)如:CREATE TABLE [dbo].[userphoto] ( [id] [int] IDENTITY (1, 1) NOT NULL , [username] [varchar] (50) NULL , [photo] [image] NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]使用的时候先要将图象或文本或声音文件转为一个二进制流类型然后将其通过ado的一些函数将其转化-存贮........部分代码如下: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类型的数据 http://www.csdn.net/develop/Read_Article.asp?Id=3901 文本文件存成TEXT类型(SQLSERVER中)其它存成二进制类型 请教个删除节点的问题 怎么在一个线程中建立socket连接? 从文本文件中读取数据(坐标点)计算面积,请问如何进行数据提取?? vs.net2005不会用msdn? 怎样在 对话框中调用视图的指针(多视图) 使用AfxMessageBox(),如何出现OK和Cancel两个按钮,并且返回这两种不同的选择值? 欲找出一个数组中出现次数最多的元素的值,该用什么STL算法? 谁有发送E-main的源代码 大虾,请帮忙. 邮件附件 急,在线等待,如何在95\98下,枚举系统中的所有进程啊? 关于拦截问题的讨论,高人指点!
CString Sql;
CFile fileImage;
CFileStatus fileStatus;
CImageSet * pImageSet = new CImageSet; try
{
pImageSet->Open();
}
catch(CException* pE)
{
pE->ReportError();
pE->Delete();
return;
}
pImageSet->AddNew();
fileImage.Open(m_strFileName, CFile::modeRead);
fileImage.GetStatus(fileStatus); pImageSet->m_Image.m_dwDataLength = fileStatus.m_size; HGLOBAL hGlobal = GlobalAlloc(GPTR, fileStatus.m_size);
pImageSet->m_Image.m_hData = GlobalLock(hGlobal); fileImage.ReadHuge(pImageSet->m_Image.m_hData, fileStatus.m_size); pImageSet->SetFieldDirty(&pImageSet->m_Image); pImageSet->SetFieldNull(&pImageSet->m_Image, FALSE); pSheetImageSet->Update(); GlobalUnlock(hGlobal); pImageSet->Close();
delete pImageSet;
CREATE TABLE [dbo].[userphoto] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[username] [varchar] (50) NULL ,
[photo] [image] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
使用的时候先要将图象或文本或声音文件转为一个二进制流类型
然后将其通过ado的一些函数将其转化-存贮........
部分代码如下:
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类型的数据
其它存成二进制类型