首页 > 代码库 > 往数据库中添加照片
往数据库中添加照片
作者:BY www.gudianxiaoshuo.com
本文由 代码助手软件 整理发布 内容与本软件无关更惬意的读、更舒心的写、更轻松的发布
秀色书文软件 可听、可读、可写、可知识挖掘、可标注,再加上史上最强大的纯文本配色功能, 瞬间使您的书文秀色起来。
往数据库中添加照片
pRecordSet.CreateInstance(__uuidof(Recordset)); strCmd.Format( _T("SELECT * FROM 班级表%d order by 学号 "), m_pParentStudentInfo->m_nClassID); pRecordSet->Open((_variant_t)strCmd,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); pRecordSet->AddNew(); pRecordSet->PutCollect(_T("学号"),(long)nXuehao); pRecordSet->PutCollect(_T("姓名"),(LPCTSTR)nameStr); pRecordSet->PutCollect(_T("地址"),(LPCTSTR)addStr); pRecordSet->PutCollect(_T("联系方式"),(LPCTSTR)lianxiStr); pRecordSet->PutCollect(_T("备注"),(LPCTSTR)beizhuStr); CFile f; CFileException e; if(f.Open(zhaoPianStr, CFile::modeRead | CFile::typeBinary, &e)) //打开了一个jpg文件 { int nSize = f.GetLength(); //先得到jpg文件长度 BYTE * pBuffer = new BYTE [nSize]; //按文件的大小在堆上申请一块内存 if (f.Read(pBuffer, nSize) > 0 ) //把jpg文件读到pBuffer(堆上申请一块内存) { BYTE *pBuf = pBuffer; ///下面这一大段是把pBuffer里的jpg数据放到库中 VARIANT varBLOB; SAFEARRAY *psa; SAFEARRAYBOUND rgsabound[1]; if(pBuf) { rgsabound[0].lLbound = 0; rgsabound[0].cElements = nSize; psa = SafeArrayCreate(VT_UI1, 1, rgsabound); for (long i = 0; i < (long)nSize; i++) SafeArrayPutElement (psa, &i, pBuf++); varBLOB.vt = VT_ARRAY | VT_UI1; varBLOB.parray = psa; pRecordSet->GetFields()->GetItem(_T("照片"))->AppendChunk(varBLOB); } delete []pBuffer; pBuf=NULL; } f.Close (); } pRecordSet->Update();
读取照片
CString xuehaoStr=m_XueShengList.GetItemText(nIndex,0); //选中行的第一列的文字 _CommandPtr spCmd; _RecordsetPtr pRecordSet; spCmd.CreateInstance(__uuidof(Command)); spCmd->ActiveConnection=m_pConnection; CString strCmd; strCmd.Format( _T("select * from 班级表%d where 学号=%d"), m_pParentStudentInfo->m_nClassID, _ttoi(xuehaoStr)); spCmd->CommandText=(LPCTSTR)strCmd; pRecordSet=spCmd->Execute (NULL,NULL,adCmdText); if (pRecordSet->adoEOF) //未找到此学号的学生 return; if(m_Pic.m_IPicture != NULL) m_Pic.FreePictureData(); long nSize=pRecordSet->GetFields()->GetItem(_T("照片"))->ActualSize; if(nSize>0) { _variant_t varBLOB; varBLOB=pRecordSet->GetFields()->GetItem(_T("照片"))->GetChunk(nSize); if (varBLOB.vt==(VT_ARRAY|VT_UI1)) { if (BYTE* pBuffer=new BYTE[nSize+1]) { char *pBuf=NULL; SafeArrayAccessData(varBLOB.parray,(void**)&pBuf); memcpy(pBuffer,pBuf,nSize); SafeArrayUnaccessData(varBLOB.parray); m_Pic.LoadPictureData(pBuffer,nSize); delete [] pBuffer; pBuf=NULL; //PICTURE控件 自动适应大小 m_Photo.GetClientRect (rc); m_Photo.ClientToScreen(rc); ScreenToClient(rc); long Width = 0; long Height = 0; m_Pic.m_IPicture->get_Width(&Width); m_Pic.m_IPicture->get_Height(&Height); float f=Width/(float)Height; long w=f*(rc.bottom-rc.top); m_Photo.SetWindowPos (NULL,rc.left,rc.top,w,rc.Height(), SWP_NOMOVE); m_Photo.GetClientRect (rc); CClientDC dc(&m_Photo); m_Pic.UpdateSizeOnDC (&dc); rc.left--; rc.top--; m_Pic.Show (&dc,rc); } } }
往数据库中添加照片
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。