向数据库中插入图片(高手速进,在线等啊)

zhouhaoIT2005 2011-02-17 01:48:01
一个菜单表menus 字段 pluid,pluno,pluname....photo,dsc 其中photo 为图片字段,如何通过在进行数据插入的时候,同时将数据记录包括图片分别维护到数据库中,插入后,如何提取,请详细说明,谢谢!
...全文
125 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gucunlin 2011-03-07
  • 打赏
  • 举报
回复
http://hi.baidu.com/cunlin/blog/item/243880516528498f8d5430de.html

看看这个
lgzheb2022 2011-03-07
  • 打赏
  • 举报
回复
可以用流操作
void CDemoDlg::OnWrite()
{
//创建文件对话框
CString strFilter="二进制文件(*.*)|*.*||";
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, strFilter);
dlg.m_ofn.lpstrTitle = _T("打开二进制文件");

if(dlg.DoModal() == IDOK)
{
//获得文件路径
CString strFileName = dlg.GetPathName();

//打开文件
CFile file;
if (!file.Open(strFileName, CFile::modeRead))
{
AfxMessageBox(_T("文件打开失败。"), MB_ICONINFORMATION);
return;
}

//获得文件名
CString strName = file.GetFileTitle();

//获得数据大小
UINT nLength = file.GetLength();

//分配缓冲区
BYTE* pChunk = new BYTE[nLength];

//读文件
file.Read(pChunk, nLength);

//写数据库
m_pRecordset->AddNew();
m_pRecordset->PutCollect(_variant_t(_T("NAME")),
_variant_t(strName));
SetFieldChunk(_T("Data"), pChunk, nLength);
m_pRecordset->Update();
m_pRecordset->MoveLast();

//释放缓冲区
delete []pChunk;

//关闭文件
file.Close();

//刷新
SetDlgItemText(IDC_NAME, strName);

AfxMessageBox(_T("文件写入完成。"));
}
}

给你提供个例子
肆水東澤 2011-02-17
  • 打赏
  • 举报
回复
哎,我没在家,家里有源码,现成的程序
基本就用流来操作,或者用TPicture类对象来操作
Waiting4you 2011-02-17
  • 打赏
  • 举报
回复
用TBlobField或TBlobStream呗,如:
TBlobField * pField=(TBlobField *)Table1->FieldByName("photo");
if ((ClientDataSet1->State != dsInsert) && 
(ClientDataSet1->State != dsEdit))
ClientDataSet1->Insert();

TMemoryStream *pMS = new TMemoryStream;
try
{
Image1->Picture->Bitmap->SaveToStream(pMS);
pField->LoadFromStream(pMS);
}
__finally
{
delete pMS;
}
ClientDataSet1->Post();

以上代码CTRL+C、CTRL+V自BCB帮助。
zhouhaoIT2005 2011-02-17
  • 打赏
  • 举报
回复
奇怪了,咋没人关注啊,高手都哪里去了?

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧