<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專(zhuān)題視頻專(zhuān)題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專(zhuān)題1關(guān)鍵字專(zhuān)題50關(guān)鍵字專(zhuān)題500關(guān)鍵字專(zhuān)題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專(zhuān)題關(guān)鍵字專(zhuān)題tag2tag3文章專(zhuān)題文章專(zhuān)題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專(zhuān)題3
        問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
        當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

        MFC中用ADO訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)

        來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 08:11:43
        文檔

        MFC中用ADO訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)

        MFC中用ADO訪(fǎng)問(wèn)數(shù)據(jù)庫(kù):個(gè)人覺(jué)得,數(shù)據(jù)庫(kù)操作連接和操作上手很快,但是那些類(lèi)型總是會(huì)讓你頭疼 目前我還沒(méi)搞清楚用怎么從T-SQL 的decimal技術(shù)到MFC中相應(yīng)的數(shù)據(jù)。 將一下數(shù)據(jù)庫(kù)連接的步驟 一:加載動(dòng)態(tài)鏈接庫(kù) #import C:\Program Files\Common Files\System
        推薦度:
        導(dǎo)讀MFC中用ADO訪(fǎng)問(wèn)數(shù)據(jù)庫(kù):個(gè)人覺(jué)得,數(shù)據(jù)庫(kù)操作連接和操作上手很快,但是那些類(lèi)型總是會(huì)讓你頭疼 目前我還沒(méi)搞清楚用怎么從T-SQL 的decimal技術(shù)到MFC中相應(yīng)的數(shù)據(jù)。 將一下數(shù)據(jù)庫(kù)連接的步驟 一:加載動(dòng)態(tài)鏈接庫(kù) #import C:\Program Files\Common Files\System

        個(gè)人覺(jué)得,數(shù)據(jù)庫(kù)操作連接和操作上手很快,但是那些類(lèi)型總是會(huì)讓你頭疼 目前我還沒(méi)搞清楚用怎么從T-SQL 的decimal技術(shù)到MFC中相應(yīng)的數(shù)據(jù)?? 將一下數(shù)據(jù)庫(kù)連接的步驟 一:加載動(dòng)態(tài)鏈接庫(kù) #import C:\Program Files\Common Files\System\ADO\msado15.dll \ no

        個(gè)人覺(jué)得,數(shù)據(jù)庫(kù)操作連接和操作上手很快,但是那些類(lèi)型總是會(huì)讓你頭疼

        目前我還沒(méi)搞清楚用怎么從T-SQL 的decimal技術(shù)到MFC中相應(yīng)的數(shù)據(jù)??


        將一下數(shù)據(jù)庫(kù)連接的步驟


        一:加載動(dòng)態(tài)鏈接庫(kù)

        #import "C:\Program Files\Common Files\System\ADO\msado15.dll" \
        no_namespace rename("EOF", "EndOfFile")

        講一下這句話(huà)什么意思,就是導(dǎo)入動(dòng)態(tài)鏈接庫(kù),否則你的那個(gè)什么ptrConn,ptrRecord連接指針,都會(huì)在編譯的時(shí)候報(bào)錯(cuò)

        第二個(gè)rename,EOF替換成,EndOfFile是為了在從記錄集Recordset取出來(lái)時(shí)候,判斷是否到達(dá)了結(jié)尾

        如果是到達(dá)了結(jié)尾,那么就會(huì)返回非VARIANT_FALSE


        二:聲明連接指針和記錄集

        _ConnectionPtr ptrConn; // 定義Connection對(duì)象
        _RecordsetPtr ptrRecord;

        三:創(chuàng)建連接

        CoInitialize(NULL); //不要忘記了,否則指針全部為空,無(wú)效

        try//打開(kāi)連接
        	{
        
        	// 創(chuàng)建一個(gè)連接實(shí)體
        	ptrConn.CreateInstance(__uuidof(Connection));
        	// 設(shè)定連接等待的最大秒數(shù),默認(rèn)是15秒
        	ptrConn->ConnectionTimeout = 20;
        	// 打開(kāi)連接
         ptrConn->Open("driver={SQL server};server=127.0.0.1;uid=laicb;pwd=616458;database=DBCourse", 
        	"",//登錄用戶(hù)名
        	"",//登錄密碼
        	adConnectUnspecified);//打開(kāi)連接
        	}
        	catch(_com_error &e)--捕獲異常
        	{
        	CString str;
        	CString strTemp;
        	str.Format(TEXT("Error:\n"));
        	strTemp.Format(TEXT("Code = %08lx\n"), e.Error());
        	str+="\n";
        	str+=strTemp;
        	
        	strTemp.Format(TEXT("Meaning = %s\n"), e.ErrorMessage());
        	str+="\n";
        	str+=strTemp;
        
        	strTemp.Format(TEXT("Source = %s\n"), (wchar_t*) e.Source());
        	str+="\n";
        	str+=strTemp;
        
        	strTemp.Format(TEXT("Description = %s\n"), (wchar_t*) e.Description());
        	str+="\n";
        	str+=strTemp;
        	MessageBox(str);
        	}
        
        四:打開(kāi)記錄集,初始化記錄集
        try
        	{
        	//_RecordsetPtr ptrRS; // recordset 對(duì)象
        	// 創(chuàng)建recordset 對(duì)象實(shí)體
        
        	ptrRecord.CreateInstance(__uuidof(Recordset));//有些時(shí)候如果記錄級(jí)背使用過(guò)了,可能需要重新創(chuàng)建實(shí)例,然后再打開(kāi)
        	ptrRecord->Open("select * from dbo.StaffInfo",///為什么把這里的數(shù)據(jù)庫(kù)改成dbo.StaffRecord時(shí)候,列表框就顯示全為空
        	ptrConn.GetInterfacePtr(),
        	adOpenKeyset, //注意在VB說(shuō)明文檔時(shí)候,首字母a是大寫(xiě)的,在C++中應(yīng)該小寫(xiě)
        	adLockBatchOptimistic, 
        	adCmdText);
        	//int j= ptrRecord->RecordCount;
        	//或者
        	//ptrRS = ptrConn ->Execute(m_ strSql,NULL, adCmdText);
        
        	}
        	catch(_com_error &e)
        	{
        	CString str;
        	CString strTemp;
        	str.Format(TEXT("Error:\n"));
        	strTemp.Format(TEXT("Code = %08lx\n"), e.Error());
        	str+="\n";
        	str+=strTemp;
        	
        	strTemp.Format(TEXT("Meaning = %s\n"), e.ErrorMessage());
        	str+="\n";
        	str+=strTemp;
        
        	strTemp.Format(TEXT("Source = %s\n"), (wchar_t*) e.Source());
        	str+="\n";
        	str+=strTemp;
        
        	strTemp.Format(TEXT("Description = %s\n"), (wchar_t*) e.Description());
        	str+="\n";
        	str+=strTemp;
        	MessageBox(str);
        	}
        五,執(zhí)行語(yǔ)句
        	try
        	{
        	ptrConn->Execute("select * from dbo.Login",NULL,adCmdText);
        	ptrRecord->MoveFirst();//加了這句這會(huì)就可以取出數(shù)據(jù)了,可能是上一個(gè)父親指針已經(jīng)把其移動(dòng)到最后了
        	int i= ptrRecord->RecordCount;//如果把游標(biāo)從動(dòng)態(tài)到記錄集,那么這個(gè)參數(shù)就有用
        	while(ptrRecord->EndOfFile==VARIANT_FALSE)
        	{	
        	_variant_t va;
        	_variant_t str;
        	va.vt=VT_I4;
        	va.lVal=0;
        	str = ptrRecord->Fields->GetItem(va)->Value;
        	CString strGetID((wchar_t*)(_bstr_t)str);
        	str = ptrRecord->Fields->GetItem(short(1))->Value;
        	CString strGetSerect((wchar_t*)(_bstr_t)str);
        	strGetID.TrimRight();
        	strGetSerect.TrimRight();
        	right=ptrRecord->Fields->GetItem(short(2))->Value.intVal;
        	if(strGetID==strID&&strGetSerect==strSerect)
        	{
        	isadmin=true;
        	}
        	ptrRecord->MoveNext();
        	}
        	}
        	catch(_com_error &e)
        	{
        	CString str;
        	CString strTemp;
        	str.Format(TEXT("Error:\n"));
        	strTemp.Format(TEXT("Code = %08lx\n"), e.Error());
        	str+="\n";
        	str+=strTemp;
        	
        	strTemp.Format(TEXT("Meaning = %s\n"), e.ErrorMessage());
        	str+="\n";
        	str+=strTemp;
        
        	strTemp.Format(TEXT("Source = %s\n"), (wchar_t*) e.Source());
        	str+="\n";
        	str+=strTemp;
        
        	strTemp.Format(TEXT("Description = %s\n"), (wchar_t*) e.Description());
        	str+="\n";
        	str+=strTemp;
        	AfxMessageBox(str);
        	}
        Connection::Execute來(lái)執(zhí)行SQL語(yǔ)句,如果有返回結(jié)果的,那么就返回Recordset,如果無(wú)需返回的就可以直接執(zhí)行

        取出查詢(xún)結(jié)果是

         ptrRecord->Fields->GetItem(va)->Value;
         ptrRecord->Fields->GetItem(va)->Name;
        va是
        _variant_t va;
        va.vt=VT_I4;
        va.lVal=0;
        也可以這樣
         ptrRecord->Fields->GetItem(short(0))->Name;
        返回結(jié)果是
        while(ptrRecord->EndOfFile==VARIANT_FALSE)
        取出結(jié)果集
        ptrRecord->MoveNext();
        有些時(shí)候,如果你的結(jié)果集已經(jīng)被全部取出來(lái)的時(shí)候,也就是你的結(jié)果集已經(jīng)到了非VARIANT_FALSE
        這時(shí)候你就需要重新創(chuàng)建實(shí)例,然后打開(kāi),
        ptrRecord.CreateInstance(__uuidof(Recordset));//有些時(shí)候如果記錄級(jí)背使用過(guò)了,可能需要重新創(chuàng)建實(shí)例,然后再打開(kāi)
        	ptrRecord->Open("select * from dbo.StaffInfo",///為什么把這里的數(shù)據(jù)庫(kù)改成dbo.StaffRecord時(shí)候,列表框就顯示全為空
        	ptrConn.GetInterfacePtr(),
        	adOpenKeyset, //注意在VB說(shuō)明文檔時(shí)候,首字母a是大寫(xiě)的,在C++中應(yīng)該小寫(xiě)
        	adLockBatchOptimistic, 
        	adCmdText);
        這樣你才能重新使用,不然好像MoveFirst,么有用啊
        另外如果你結(jié)果集在某處調(diào)用了close,那么你再次使用的時(shí)候一定要執(zhí)行上面這段語(yǔ)句,否則會(huì)報(bào)說(shuō)記錄集已經(jīng)關(guān)閉了,wufa使用

        六:Command對(duì)象的使用

        try
        {
        // Create Connection Object (1.5 Version)
        Conn1.CreateInstance( __uuidof( Connection ) );
        Conn1->ConnectionString = bstrConnect;
        Conn1->Open( bstrEmpty, bstrEmpty, bstrEmpty, -1 );
        // Create Command Object
        Cmd1.CreateInstance( __uuidof( Command ) );
        Cmd1->ActiveConnection = Conn1;
        Cmd1->CommandText = _bstr_t("SELECT * FROM mytable WHERE age< ?");

        然后執(zhí)行就可以了cmd1->Execute就OK了


        結(jié)束:

        一些釋放操作,置空操作


        聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MFC中用ADO訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)

        MFC中用ADO訪(fǎng)問(wèn)數(shù)據(jù)庫(kù):個(gè)人覺(jué)得,數(shù)據(jù)庫(kù)操作連接和操作上手很快,但是那些類(lèi)型總是會(huì)讓你頭疼 目前我還沒(méi)搞清楚用怎么從T-SQL 的decimal技術(shù)到MFC中相應(yīng)的數(shù)據(jù)。 將一下數(shù)據(jù)庫(kù)連接的步驟 一:加載動(dòng)態(tài)鏈接庫(kù) #import C:\Program Files\Common Files\System
        推薦度:
        • 熱門(mén)焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門(mén)推薦

        專(zhuān)題
        Top
        主站蜘蛛池模板: 亚洲综合自拍成人| 100部毛片免费全部播放完整| 亚洲视频在线免费观看| 国产伦一区二区三区免费| 亚洲精品视频在线观看免费| 国产免费一区二区三区不卡 | 亚洲中文字幕无码av在线| 日本精品久久久久久久久免费| 免费看韩国黄a片在线观看| 久久久久亚洲Av无码专| 花蝴蝶免费视频在线观看高清版| 亚洲伊人成无码综合网 | 18gay台湾男同亚洲男同| 免费人成激情视频在线观看冫| 精品亚洲一区二区三区在线播放| 亚洲欧美乱色情图片| 免费观看美女用震蛋喷水的视频| 亚洲天天做日日做天天欢毛片| 亚洲精品偷拍视频免费观看| 成人免费男女视频网站慢动作| 亚洲国产成人久久三区| 2015日韩永久免费视频播放| 久久久亚洲精品国产| 国产情侣久久久久aⅴ免费| 国产亚洲人成网站在线观看不卡| 国产精品免费一区二区三区| 中文字幕在线亚洲精品 | 国产黄色免费网站| 久久久久久夜精品精品免费啦| 国产91在线免费| 欧洲乱码伦视频免费国产 | 69精品免费视频| 国产91在线|亚洲| 全亚洲最新黄色特级网站| 国产精品免费久久久久电影网| 婷婷精品国产亚洲AV麻豆不片| 最近免费中文字幕大全| 一区二区三区免费看| 亚洲电影在线免费观看| 国产免费AV片无码永久免费| 久久免费精品视频|