往數(shù)據(jù)庫中添加照片
來源:程序員人生 發(fā)布時間:2015-01-18 10:14:55 閱讀次數(shù):4214次
作者:BY
www.gudianxiaoshuo.com
本文由 代碼助手軟件 整理發(fā)布 內(nèi)容與本軟件無關(guān)
更愜意的讀、更舒心的寫、更輕松的發(fā)布
秀色書文軟件 可聽、可讀、可寫、可知識發(fā)掘、可標(biāo)注,再加上史上最強大的純文本配色功能, 瞬間使您的書文秀色起來。
往數(shù)據(jù)庫中添加照片
pRecordSet.CreateInstance(__uuidof(Recordset));
strCmd.Format(
_T("SELECT * FROM 班級表%d order by 學(xué)號 "),
m_pParentStudentInfo->m_nClassID);
pRecordSet->Open((_variant_t)strCmd,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
pRecordSet->AddNew();
pRecordSet->PutCollect(_T("學(xué)號"),(long)nXuehao);
pRecordSet->PutCollect(_T("姓名"),(LPCTSTR)nameStr);
pRecordSet->PutCollect(_T("地址"),(LPCTSTR)addStr);
pRecordSet->PutCollect(_T("聯(lián)系方式"),(LPCTSTR)lianxiStr);
pRecordSet->PutCollect(_T("備注"),(LPCTSTR)beizhuStr);
CFile f;
CFileException e;
if(f.Open(zhaoPianStr, CFile::modeRead | CFile::typeBinary, &e)) //打開了1個jpg文件
{
int nSize = f.GetLength(); //先得到j(luò)pg文件長度
BYTE * pBuffer = new BYTE [nSize]; //按文件的大小在堆上申請1塊內(nèi)存
if (f.Read(pBuffer, nSize) > 0 ) //把jpg文件讀到pBuffer(堆上申請1塊內(nèi)存)
{
BYTE *pBuf = pBuffer; ///下面這1大段是把pBuffer里的jpg數(shù)據(jù)放到庫中
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); //選中行的第1列的文字
_CommandPtr spCmd;
_RecordsetPtr pRecordSet;
spCmd.CreateInstance
(__uuidof
(Command
));
spCmd->ActiveConnection
=m_pConnection;
CString strCmd;
strCmd.Format
(
_T
("select * from 班級表%d where 學(xué)號=%d"),
m_pParentStudentInfo->m_nClassID,
_ttoi
(xuehaoStr
));
spCmd->CommandText
=(LPCTSTR
)strCmd;
pRecordSet
=spCmd->Execute
(NULL,
NULL,adCmdText
);
if (pRecordSet->adoEOF
) //未找到此學(xué)號的學(xué)生
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
);
SafeArrayUn
accessData
(varBLOB.parray
);
m_Pic.LoadPictureData
(pBuffer,nSize
);
delete [] pBuffer;
pBuf
=NULL;
//PICTURE控件 自動適應(yīng)大小
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);
}
}
}
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈