国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專(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訪問(wèn)數(shù)據(jù)庫(kù)

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

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

MFC中用ADO訪問(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訪問(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")

講一下這句話什么意思,就是導(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訪問(wèn)數(shù)據(jù)庫(kù)

MFC中用ADO訪問(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
推薦度:
標(biāo)簽: 個(gè)人 操作 訪問(wèn)
  • 熱門(mén)焦點(diǎn)

最新推薦

猜你喜歡

熱門(mén)推薦

專(zhuān)題
Top
主站蜘蛛池模板: 亚洲欧美国产精品 | 美女视频黄a视频全免费网站色 | 啪网站| 欧美色欧美亚洲另类 | 一区二区三区免费在线观看 | 精品综合一区二区三区 | 欧美亚洲综合在线 | 欧美精品第一页 | 国产日韩欧美精品 | 久久久久成人精品一区二区 | 精品欧美一区二区在线观看欧美熟 | 在线永久免费观看的毛片 | 精品国产一区二区三区麻豆小说 | 国产一区二区精品久久凹凸 | 国产在线视频资源 | 欧美日韩中文在线 | 久久精品福利 | 亚洲视频一区二区 | 伊人精品久久久大香线蕉99 | 911亚洲精品国内自产 | 国产精品美女久久久久网站 | 国产一区二区三区精品视频 | 欧美日韩精品一区二区三区高清视频 | 国产欧美日本在线 | 欧美爱爱图 | 好骚综合在线 | 三级网站免费播放国语 | 欧美亚洲免费 | 另类亚洲色图 | 国产精品高清在线观看 | 精品在线免费视频 | 国产欧美综合在线观看第七页 | 国产成人综合久久精品亚洲 | 日韩欧美在线免费观看 | 中文字幕第一页亚洲 | 日韩 亚洲 欧美 中文 高清 | 国内精品久久久久久中文字幕 | 老色99久久九九精品尤物 | 日本一区二区三区视频在线观看 | 欧美日韩亚洲国产 | 高清国产美女一级a毛片 |