麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > Access > 正文

用MFC + ADO 把jpg圖象文件放入ACCESS庫中

2020-03-24 18:36:12
字體:
來源:轉載
供稿:網友
源碼下載網上好象這個例子還沒有樣,如果你用VC做一個人事部管理系統,不可能沒有人員照片吧!能找到的例子中都是用BMP,不敢用! 這個例子用到了VC6.0和access2002(html' target='_blank'>officeXP),涉及到ADO的用法,文件對話框的使用,一個CPicture類和一個buffer緩沖區。 一、我的ADO用法整理 1. stdafx.h頭文件中加入:#import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF","adoEOF")
2. 應用程序初始化中加入:AfxOleInit();
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///創建Connection對象
if(SUCCEEDED(hr))
{
hr = m_pConnection- Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=wy.mdb","","",adModeUnknown);///連接數據庫
///上面一句中連接字串中的Provider是針對ACCESS2000環境的,對于ACCESS97,需要改為:Provider=Microsoft.Jet.OLEDB.3.51;
}
}
catch(_com_error e)///捕捉異常
{
CString errormessage;
errormessage.Format("打開 wy.mdb 數據庫失敗!/r/n錯誤信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///顯示錯誤信息
}
3. 應用程序EXIT中加入:if (m_pConnection- State)
m_pConnection- Close();
4. 應用程序中加入:_ConnectionPtr m_pConnection;
5. 對話框類中加入:_RecordsetPtr m_pRecordset;
6. 注意使用:extern CWYApp theApp;
7. 使用紀錄集:try
{
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset- Open("SELECT * FROM 客戶 ORDER BY 客戶id",
_variant_t((IDispatch*)theApp.m_pConnection,true),
adOpenStatic,adLockOptimistic,adCmdText);
}
catch(_com_error e)///捕捉異常
{
AfxMessageBox("讀取數據庫失敗!");///顯示錯誤信息
}
CPicture類(它能夠顯示JPG.GIF等等圖片,詳情請看CPicture.h頭文件)
CPicture.h CPicture.cpp 二、流程圖你一看便知: ADO作用在buffer內存和ACCESS2002數據庫之間,而CPicture作用在buffer內存和顯示窗口之間. 三、將jpg存入庫并顯示void COneDlg::OnButton1()
{
CFile f;
CString FilePathName;
CFileException e;
CFileDialog dlg(TRUE,NULL,NULL,0,"jpg Files (*.jpg)|*.jpg||",this);
if(dlg.DoModal()==IDOK)
{
FilePathName=dlg.GetPathName();
if(m_Pic.m_IPicture != NULL) m_Pic.FreePictureData(); // Important - Avoid Leaks...
if(f.Open(FilePathName, 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];

m_pRecordset- AddNew();

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;
m_pRecordset- GetFields()- GetItem("j")- AppendChunk(varBLOB);
}
m_pRecordset- Update();

(m_Pic.LoadPictureData(pBuffer, nSize));//接作調用函數讀pBuffer的jpg數據準備顯示
delete [] pBuffer; //刪掉堆上申請的那一塊內存
pBuf=0; //以防二次亂用
}
f.Close();
}
CClientDC dc(this);
m_Pic.UpdateSizeOnDC( dc); // Get Picture Dimentions In Pixels
m_Pic.Show( dc, CRect(200,0,200+m_Pic.m_Width,m_Pic.m_Height) );//顯示出來看看
}
}
.......
完整的例子中有較多的中文說明,對你有用嗎!?,有什么不妥之處請高手指教
本文作者:html教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人免费区 | 久久精品在线免费观看 | 鲁丝片一区二区三区免费入口 | 欧美黄色性视频 | 久久久久久久久久亚洲精品 | 精品国产一级毛片 | 久草在线视频新 | 免费黄色在线观看网站 | 黄色成人短视频 | 欧美成人小视频 | 久久久一区二区三区四区 | 日本最新免费二区三区 | 久久亚洲春色中文字幕久久 | 一级免费特黄视频 | 国产视频软件在线 | 永久免费黄色大片 | 午夜久久电影 | 国产三级a三级三级 | 高颜值美女啪啪 | 91av日韩 | 午夜精品小视频 | 99亚洲伊人久久精品影院红桃 | 他也色在线视频 | 91情侣偷在线精品国产 | 一区二区三区欧美在线观看 | 久久久一区二区三区精品 | 国产午夜亚洲精品午夜鲁丝片 | 91社区电影 | 久久久久久亚洲国产精品 | 49vvv| 操嫩草 | 最新精品在线 | 91欧美视频| 久久草草影视免费网 | 激情视频在线播放 | 日本免费一区二区三区四区 | 中国a毛片 | 久草在线看片 | 久久羞羞视频 | 1024亚洲天堂 | 免费高清一级欧美片在线观看 |