锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
]]>
]]>
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
2)鍐嶅湪Test.h澧炲姞涓嬮潰鍑犱釜鍙橀噺(protected)
_ConnectionPtr m_pConnection;//connection object's pointer
_CommandPtr m_pCommand; //command object's pointer
_ParameterPtr m_pParameter; //Parameter object's pointer
_RecordsetPtr m_pRecordset;
3)鍐嶄慨鏀筎est.cpp涓殑InitInstance() 闃呰鍏ㄦ枃
]]>
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
2)鍐嶅湪Test.h澧炲姞涓嬮潰鍑犱釜鍙橀噺(protected)
_ConnectionPtr m_pConnection;//connection object's pointer
_CommandPtr m_pCommand; //command object's pointer
_ParameterPtr m_pParameter; //Parameter object's pointer
_RecordsetPtr m_pRecordset;
3)鍐嶄慨鏀筎est.cpp涓殑InitInstance() 闃呰鍏ㄦ枃
]]>
銆銆褰撶劧 Join 濡備綍灝嗕笉鍚岀殑鏁版嵁搴撶殑璧勬枡緇撳悎, 榪樿鐪嬩綘濡備綍浣跨敤瀹? 涓鍏辨湁鍥涚涓嶅悓鐨?Join 鐨勬柟寮? 鍦ㄨ繖綃囨枃绔犱腑鎴戜滑灝嗕負(fù)浣犱粙緇?Inner Join 鍙?Outer Join 浠ュ強(qiáng)鍏跺簲鐢?
闃呰鍏ㄦ枃
]]>
3.鏉′歡鍒ゆ柇(IF...ELSE)
4.澶氬垎鏀垽鏂?case...when...then...else...end錛?
5.寰幆(while)
6.鍔ㄦ佸畾涔夋父鏍?
7.閬嶅巻娓告爣
8.鑾峰緱娓告爣琛屾暟
9.浜嬪姟澶勭悊
10.瀛楃涓茶繛鎺?
11.鍒涘緩涓存椂琛ㄥ瓨鍌ㄥ閮ㄦ暟鎹〃
12.瀛樺偍榪囩▼鐨勮皟鐢ㄥ強(qiáng)榪斿洖鍊?
13.Update璇彞甯歌閿欒鎬葷粨
14.Insert璇彞甯歌璇硶閿欒鎬葷粨 闃呰鍏ㄦ枃
]]>
闃呰鍏ㄦ枃
]]>寤虹珛涓涓猰fc瀵硅瘽妗嗗伐紼嬶紝涓鍒囬兘榛樿鐒跺悗瀹屾垚錛屾帴涓嬬収鎴戠殑鏂規(guī)硶鍋氬惂錛屼竴瀹氬彲浠ョ殑錛?br>
娉細(xì)*****浠h〃浣犳墍寤虹珛鐨勫伐紼嬪悕縐?br>
鍏堝湪stdafx.h涓鍏?import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
鍔犲叆澶存枃浠?br>
#include "icrsint.h"
#include "adoid.h"
鐒跺悗榪涜涓嬮潰鐨勪功鍐?蹇呴』瑕佸垵濮嬪寲COM 鍗?:CoInitialize(NULL);
榪樿鍔犲叆鎴愬憳鍙橀噺
_RecordsetPtr pRec;
_ConnectionPtr pCon;
//========== ============//
BOOL C*****App::InitInstance()
{
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
AfxEnableControlContainer();
CString str;
::CoInitialize(NULL); //鍒濆鍖朿om 蹇呴』涓篘ULL
str.Format("Provider=sqloledb;Network Library=DBMSSOCN;Initial Catalog=Test;User ID=sa;Password=1234;Data Source=192.168.0.20,1433");
pCon.CreateInstance(__uuidof(Connection));
try
{
pCon->Open(_bstr_t(str),"","",adModeUnknown);
}
catch(_com_error e)
{
MessageBox(NULL,"榪炴帴鏁版嵁搴撳け璐ワ紒","璀﹀憡",MB_OK|MB_ICONHAND);
return FALSE;
}
}
//========== ============//
鍦–****App涓坊鍔犳墽琛宻ql璇彞鐨勬柟娉?br>
bool C*****App::OpenSQL(CString &strRec)
{
pRec.CreateInstance(__uuidof(Recordset));
if ( pRec->State )// 濡傛灉璁板綍闆嗘墦寮鐨勮瘽錛屾妸瀹冨叧浜?/span>
pRec->Close();
try
{// 姝e父鐨凷QL璇彞
pRec->Open(_variant_t(strRec),pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
return true;
}
catch(_com_error e)
{
MessageBox(NULL,"榪炴帴琛ㄥ嚭閿欙紒","璀﹀憡",MB_OK|MB_ICONHAND);
return false;
}
}
鍦ㄩ鍑虹殑鏃跺欏叧闂暟鎹簱榪炴帴
//========== ============//
//==========灝忕嫯瀛愯惤钀?===========//
int C****App::ExitInstance()
{
try
{ // 鍏抽棴鏁版嵁搴?/span>
if ( pCon->State )
pCon->Close();
pCon.Release();
}
catch(_com_error e)
{
}
::CoUninitialize();
return CWinApp::ExitInstance();
}
]]>
bit 鏁版嵁綾誨瀷鏄暣鍨嬶紝鍏跺煎彧鑳芥槸0銆?鎴栫┖鍊箋傝繖縐嶆暟鎹被鍨嬬敤浜庡瓨鍌ㄥ彧鏈変袱縐嶅彲鑳藉肩殑鏁版嵁錛屽Yes 鎴朜o銆乀rue 鎴朏a lse 銆丱n 鎴朞ff
int 鏁版嵁綾誨瀷鍙互瀛樺偍浠? 231(-2147483648)鍒?31 (2147483 647)涔嬮棿鐨勬暣鏁般傚瓨鍌ㄥ埌鏁版嵁搴撶殑鍑犱箮鎵鏈夋暟鍊煎瀷鐨勬暟鎹兘鍙互鐢ㄨ繖縐嶆暟鎹被鍨嬨傝繖縐嶆暟鎹被鍨嬪湪鏁版嵁搴撻噷鍗犵敤4涓瓧鑺?
smallint 鏁版嵁綾誨瀷鍙互瀛樺偍浠? 215(-32768)鍒?15(32767)涔嬮棿鐨勬暣鏁般傝繖縐嶆暟鎹被鍨嬪瀛樺偍涓浜涘父闄愬畾鍦ㄧ壒瀹氳寖鍥村唴鐨勬暟鍊煎瀷鏁版嵁闈炲父鏈夌敤銆傝繖縐嶆暟鎹被鍨嬪湪鏁版嵁搴撻噷鍗犵敤2 瀛楄妭絀洪棿
tinyint 鏁版嵁綾誨瀷鑳藉瓨鍌ㄤ粠0鍒?55 涔嬮棿鐨勬暣鏁般傚畠鍦ㄤ綘鍙墦綆楀瓨鍌ㄦ湁闄愭暟鐩殑鏁板兼椂寰堟湁鐢ㄣ?榪欑鏁版嵁綾誨瀷鍦ㄦ暟鎹簱涓崰鐢? 涓瓧鑺?
numeric鏁版嵁綾誨瀷涓巇ecimal 鍨嬬浉鍚?
decimal 鏁版嵁綾誨瀷鑳界敤鏉ュ瓨鍌ㄤ粠-1038-1鍒?038-1鐨勫浐瀹氱簿搴﹀拰鑼冨洿鐨勬暟鍊煎瀷鏁版嵁銆備嬌鐢ㄨ繖縐嶆暟鎹被鍨嬫椂錛屽繀欏繪寚瀹氳寖鍥村拰綺懼害銆?鑼冨洿鏄皬鏁扮偣宸﹀彸鎵鑳藉瓨鍌ㄧ殑鏁板瓧鐨勬諱綅鏁般傜簿搴︽槸灝忔暟鐐瑰彸杈瑰瓨鍌ㄧ殑鏁板瓧鐨勪綅鏁?
money 鏁版嵁綾誨瀷鐢ㄦ潵琛ㄧず閽卞拰璐у竵鍊箋傝繖縐嶆暟鎹被鍨嬭兘瀛樺偍浠?9220浜垮埌9220 浜夸箣闂寸殑鏁版嵁錛岀簿紜埌璐у竵鍗曚綅鐨勪竾鍒嗕箣涓
smallmoney 鏁版嵁綾誨瀷鐢ㄦ潵琛ㄧず閽卞拰璐у竵鍊箋傝繖縐嶆暟鎹被鍨嬭兘瀛樺偍浠?214748.3648 鍒?14748.3647 涔嬮棿鐨勬暟鎹紝綺劇‘鍒拌揣甯佸崟浣嶇殑涓囧垎涔嬩竴
float 鏁版嵁綾誨瀷鏄竴縐嶈繎浼兼暟鍊肩被鍨嬶紝渚涙誕鐐規(guī)暟浣跨敤銆傝嫻偣鏁版槸榪戜技鐨勶紝鏄洜涓哄湪鍏惰寖鍥村唴涓嶆槸鎵鏈夌殑鏁伴兘鑳界簿紜〃紺恒傛誕鐐規(guī)暟鍙互鏄粠-1.79E+308鍒?.79E+308 涔嬮棿鐨勪換鎰忔暟
real 鏁版嵁綾誨瀷鍍忔誕鐐規(guī)暟涓鏍鳳紝鏄繎浼兼暟鍊肩被鍨嬨傚畠鍙互琛ㄧず鏁板煎湪-3.40E+38鍒?.40E+38涔嬮棿鐨勬誕鐐規(guī)暟
datetime鏁版嵁綾誨瀷鐢ㄦ潵琛ㄧず鏃ユ湡鍜屾椂闂淬傝繖縐嶆暟鎹被鍨嬪瓨鍌ㄤ粠1753騫?鏈?鏃ュ埌9999騫?2鏈? 1鏃ラ棿鎵鏈夌殑鏃ユ湡鍜屾椂闂存暟鎹紝 綺劇‘鍒頒笁鐧懼垎涔嬩竴縐掓垨3.33姣
smalldatetime 鏁版嵁綾誨瀷鐢ㄦ潵琛ㄧず浠?900騫?鏈?鏃ュ埌2079騫?鏈?鏃ラ棿鐨勬棩鏈熷拰鏃墮棿錛岀簿紜埌涓鍒嗛挓
cursor 鏁版嵁綾誨瀷鏄竴縐嶇壒孌婄殑鏁版嵁綾誨瀷錛屽畠鍖呭惈涓涓娓告爣鐨勫紩鐢ㄣ傝繖縐嶆暟鎹被鍨嬬敤鍦ㄥ瓨鍌ㄨ繃紼嬩腑錛岃屼笖鍒涘緩琛ㄦ椂涓嶈兘鐢?
timestamp 鏁版嵁綾誨瀷鏄竴縐嶇壒孌婄殑鏁版嵁綾誨瀷錛岀敤鏉ュ垱寤轟竴涓暟鎹簱鑼冨洿鍐呯殑鍞竴鏁扮爜銆?涓涓〃涓彧鑳芥湁涓涓猼imestamp鍒椼傛瘡嬈℃彃鍏ユ垨淇敼涓琛屾椂錛宼imestamp鍒楃殑鍊奸兘浼?xì)鏀瑰彉銆傚敖綆″畠鐨勫悕瀛椾腑鏈?#8220;time”錛?浣唗imestamp鍒椾笉鏄漢浠彲璇嗗埆鐨勬棩鏈熴傚湪涓涓暟鎹簱閲岋紝timestamp鍊兼槸鍞竴鐨?
Uniqueidentifier鏁版嵁綾誨瀷鐢ㄦ潵瀛樺偍涓涓叏灞鍞竴鏍囪瘑絎︼紝鍗矴UID銆侴UID紜疄鏄叏灞鍞竴鐨勩傝繖涓暟鍑犱箮娌℃湁鏈轟細(xì)鍦ㄥ彟涓涓郴緇熶腑琚噸寤恒傚彲浠ヤ嬌鐢∟EWID 鍑芥暟鎴栬漿鎹竴涓瓧絎︿覆涓哄敮涓鏍囪瘑絎︽潵鍒濆鍖栧叿鏈夊敮涓鏍囪瘑絎︾殑鍒?
char鏁版嵁綾誨瀷鐢ㄦ潵瀛樺偍鎸囧畾闀垮害鐨勫畾闀塊潪緇熶竴緙栫爜鍨嬬殑鏁版嵁銆傚綋瀹氫箟涓鍒椾負(fù)姝ょ被鍨嬫椂錛屼綘蹇呴』鎸囧畾鍒楅暱銆傚綋浣犳昏兘鐭ラ亾瑕佸瓨鍌ㄧ殑鏁版嵁鐨勯暱搴︽椂錛屾鏁版嵁綾誨瀷寰堟湁鐢ㄣ備緥濡傦紝褰撲綘鎸夐偖鏀跨紪鐮佸姞4涓瓧絎︽牸寮忔潵瀛樺偍鏁版嵁鏃訛紝浣犵煡閬撴昏鐢ㄥ埌10涓瓧絎︺傛鏁版嵁綾誨瀷鐨勫垪瀹芥渶澶т負(fù)8000 涓瓧絎?
varchar鏁版嵁綾誨瀷錛屽悓char綾誨瀷涓鏍鳳紝鐢ㄦ潵瀛樺偍闈炵粺涓緙栫爜鍨嬪瓧絎︽暟鎹備笌char 鍨嬩笉涓鏍鳳紝姝ゆ暟鎹被鍨嬩負(fù)鍙橀暱銆傚綋瀹氫箟涓鍒椾負(fù)璇ユ暟鎹被鍨嬫椂錛屼綘瑕佹寚瀹氳鍒楃殑鏈澶ч暱搴︺?瀹冧笌char鏁版嵁綾誨瀷鏈澶х殑鍖哄埆鏄紝瀛樺偍鐨勯暱搴︿笉鏄垪闀匡紝鑰屾槸鏁版嵁鐨勯暱搴?
text 鏁版嵁綾誨瀷鐢ㄦ潵瀛樺偍澶ч噺鐨勯潪緇熶竴緙栫爜鍨嬪瓧絎︽暟鎹傝繖縐嶆暟鎹被鍨嬫渶澶氬彲浠ユ湁231-1鎴?0浜夸釜瀛楃
nchar 鏁版嵁綾誨瀷鐢ㄦ潵瀛樺偍瀹氶暱緇熶竴緙栫爜瀛楃鍨嬫暟鎹傜粺涓緙栫爜鐢ㄥ弻瀛楄妭緇撴瀯鏉ュ瓨鍌ㄦ瘡涓瓧絎︼紝鑰屼笉鏄敤鍗曞瓧鑺?鏅氭枃鏈腑鐨勬儏鍐?銆傚畠鍏佽澶ч噺鐨勬墿灞曞瓧絎︺傛鏁版嵁綾誨瀷鑳藉瓨鍌?000縐嶅瓧絎︼紝浣跨敤鐨勫瓧鑺傜┖闂翠笂澧炲姞浜?jiǎn)涓鍊?
nvarchar 鏁版嵁綾誨瀷鐢ㄤ綔鍙橀暱鐨勭粺涓緙栫爜瀛楃鍨嬫暟鎹傛鏁版嵁綾誨瀷鑳藉瓨鍌?000縐嶅瓧絎︼紝浣跨敤鐨勫瓧鑺傜┖闂村鍔犱簡(jiǎn)涓鍊?
ntext 鏁版嵁綾誨瀷鐢ㄦ潵瀛樺偍澶ч噺鐨勭粺涓緙栫爜瀛楃鍨嬫暟鎹傝繖縐嶆暟鎹被鍨嬭兘瀛樺偍230 -1鎴栧皢榪?0浜夸釜瀛楃錛屼笖浣跨敤鐨勫瓧鑺傜┖闂村鍔犱簡(jiǎn)涓鍊?
binary鏁版嵁綾誨瀷鐢ㄦ潵瀛樺偍鍙揪8000 瀛楄妭闀跨殑瀹氶暱鐨勪簩榪涘埗鏁版嵁銆傚綋杈撳叆琛ㄧ殑鍐呭鎺ヨ繎鐩稿悓鐨勯暱搴︽椂錛屼綘搴旇浣跨敤榪欑鏁版嵁綾誨瀷
varbinary 鏁版嵁綾誨瀷鐢ㄦ潵瀛樺偍鍙揪8000 瀛楄妭闀跨殑鍙橀暱鐨勪簩榪涘埗鏁版嵁銆傚綋杈撳叆琛ㄧ殑鍐呭澶у皬鍙彉鏃訛紝浣犲簲璇ヤ嬌鐢ㄨ繖縐嶆暟鎹被鍨?
image 鏁版嵁綾誨瀷鐢ㄦ潵瀛樺偍鍙橀暱鐨勪簩榪涘埗鏁版嵁錛屾渶澶у彲杈?31-1鎴栧ぇ綰?0浜垮瓧鑺?
]]>
1. 鍦ㄨ繘鍏ユ棰樹(shù)箣鍓嶏紝鍏堣鐐瑰埆鐨勶紝濡備綍鍦╒C涓繛鎺ybase鏁版嵁搴擄紝
榪炴帴瀛楃紿滀負(fù)錛?/p>
_bstr_t strCnn(\"Driver={Sybase System 11};Srvr=RRRRR;Uid=RRR_Mao_bb1;Pwd=user2\");
榪欓噷錛孯RRRR鏄暟鎹簱鐨勫悕縐幫紝宸茬粡鍦⊿ybase->sdedit涓瀹氬ソ浜?/p>
RRR_Mao_bb1 鍜?user2鍒嗗埆鏄敤鎴峰悕鍜屽瘑鐮?/p>
涓嶈繃浣跨敤榪欑鍩轟簬ODBC鐨勮繛鎺ヤ嬌鐢ㄤ竴孌墊椂闂翠互鍚庯紝灝卞嚭鐜伴棶棰樹(shù)簡(jiǎn)錛屽嚭鐜頒簡(jiǎn)“Catastrophic failure”鐨勯敊璇紝寰蔣鐨勮В閲婃槸 http://support.microsoft.com/kb/243349/en-us
2. 涓轟簡(jiǎn)浣挎垜浠殑璋冪敤瀛樺偍榪囩▼鐨勪緥瀛愭湁鏇村鐨勯氱敤鎬э紝鎴戝緩浜?jiǎn)鏈夎緭鍏ュ弬鏁板Q屾湁杈撳嚭鍙傛暟錛屾湁涓涓繑鍥炶褰曢泦錛屾湁涓涓繑鍥炲肩殑瀛樺偍榪囩▼錛屽涓?/p>
CREATE PROCEDURE sp_1 (
@pin1 int ,
@pin2 CHAR(10),
@pout1 int OUTPUT,
@pout2 CHAR(10) OUTPUT
)
AS
BEGIN
declare @retval int
select @pout1 = @pin1 + 100
select @pout2 = left( ltrim(rtrim(@pin2)) + \'123\' , 10)
select Num,Name,Date
from TABLE1
select @retval = 1236
return @retval
END
瀵逛簬榪欎釜SP鏉ヨ錛屼粬榪欎簺涓弬鏁版槸
@RETURN_VALUE(int ,榪斿洖鍊?
@pin1 ( int ,杈撳叆 )
@pin2 ( char(10) ,杈撳叆 )
@pout1 (int ,杈撳叆/杈撳嚭)
@pout1 ( char(10) , 杈撳叆/杈撳嚭)
@RETURN_VALUE鏄0涓弬鏁幫紝@pin1鏄1涓紝渚濇綾繪帹
浠ヤ笂淇℃伅鍙互鍦⊿QL 鐨勬煡璇㈠垎鏋愬櫒涓湅鍒幫紝娉ㄦ剰錛?font color=#ff0000>榪欎簺鍙傛暟鐨勯『搴忓緢閲嶈
3.璋冪敤鐨勫墠鏈熷噯澶?/p>
榪欏氨涓嶅璇翠簡(jiǎn)錛屼粈涔坕mport 搴撻樋錛屽緩绔嬭繛鎺ラ樋錛屼粈涔堢殑錛屼笉澶氳浜?jiǎn)锛?/p>
榪欎簺鍦?u> VC涓嬌鐢ˋDO榪涜鏁版嵁搴撳紑鍙戠殑涓浜涜祫鏂欑殑鏁寸悊 涓湁浜?jiǎn)闃悩q?/p>
鍋囧畾榪炴帴鏄痯Conn
娉ㄦ剰錛岃繖閲岃鎶妏Conn璁懼畾鎴恆dUseClient鍨媅Page]
pConn->CursorLocation =adUseClient;
涓嬮潰鎴戣璐村叿浣撶殑浠g爜浜?jiǎn)锛屼皋Z簡(jiǎn)綺劇畝鎵璐寸殑浠g爜錛屾垜鎶婃墍鏈夌殑鎹曡幏寮傚父閮芥病璐村嚭鏉?try catch)
4.浣跨敤Refresh鐨勬柟娉曟潵璋冪敤
鍏堝畾涔変竴浜涘彉閲?/p>
_CommandPtr pCmd = NULL;
_RecordsetPtr pRecordset = NULL;
鍒濊瘯鍖栦粬浠紝
pCmd.CreateInstance(__uuidof(Command));
pRecordset.CreateInstance(_uuidof(Recordset));
pCmd->ActiveConnection = pConn;
pCmd->CommandType = adCmdStoredProc;
pCmd->CommandText=_bstr_t(_T(\"sp_1\")); //SP Name
鐒跺悗緇欓偅浜沬nput鍙傛暟璧嬪?/p>
pCmd->Parameters->Refresh();
pCmd->Parameters->Item[_variant_t(_bstr_t(\"@pin1\") )]->Value=_variant_t(3);
pCmd->Parameters->Item[_variant_t(_bstr_t(\"@pin2\") )]->Value=_variant_t(\"DD\");
榪欎釜refresh涓瀹氳鏈夛紝
璋僑P
pRecordset = pCmd->Execute(NULL,NULL,adCmdStoredProc);
int retVal = -1;
_variant_t VretVal ;
//GetRetVal
VretVal = pCmd->Parameters->GetItem(short(0))->Value;
retVal = VretVal.lVal;
Info.Format(_T(\"The Return Value is : %d\"),retVal);
MessageBox(Info);
//output1
VretVal = pCmd->Parameters->GetItem(short(3))->Value;
retVal = VretVal.lVal;
Info.Format(_T(\"The output1 Value is : %d\"),retVal);
MessageBox(Info);
//@pout2
VretVal = pCmd->Parameters->GetItem(short(4))->Value;
Info= (LPCTSTR)_bstr_t(VretVal);
CString info1;
info1.Format(_T(\"The output2 Value is : %s\"),Info);
MessageBox(info1);
//鍙栬褰曢泦閲岄潰鐨勫唴瀹?/p>
if (pRecordset->adoBOF && pRecordset->adoEOF)
{
MessageBox(\"娌℃湁絎﹀悎鏉′歡鐨勮褰曞瓨鍦?\",\"鎻愮ず\");
if(pRecordset != NULL && pRecordset->State)
{
pRecordset->Close();
pRecordset = NULL;
pCmd.Detach();
return;
}
pRecordset->MoveFirst();
for(;!pRecordset->adoEOF;pRecordset->MoveNext())
{
VRectVal = pRecordset->GetCollect(_T(\"Name\"));
StrVal = (LPCTSTR)_bstr_t(VRectVal);
m_list.AddString(StrVal);
}
if(pRecordset != NULL && pRecordset->State)
{
pRecordset->Close();
pRecordset = NULL; [Page]
}
鏈鍚巔Cmd.Detach();
鍦ㄨ繖閲岋紝鏈変竴鐐硅娉ㄦ剰鐨勬槸
VretVal = pCmd->Parameters->GetItem(short(4))->Value;
榪欓噷鐨?錛屽氨鏄摢涓猳utput鍙傛暟鐨刬ndex錛屽氨鏄垜鍦?涓鐨勫弬鏁扮殑欏哄簭
榪欓噷浣跨敤浜?jiǎn)Refresh錛岃繖鏄竴涓緢閲嶈鐨勫嚱鏁幫紝鎴戝皢鍦ㄤ笅闈粙緇嶄竴涓嬪畠錛屾垜瑕佸厛璐村嚭鍙︿竴縐嶏紝涓嶄嬌鐢≧efresh鐨勫姙娉曪紝
5 .浣跨敤闈濺efresh鐨勬柟娉曟潵璋冪敤
鍏堝畾涔夊彉閲?/p>
_CommandPtr pCmd = NULL;
_RecordsetPtr pRecordset = NULL;
_ParameterPtr retParam = NULL;
_ParameterPtr inParam1 = NULL;
_ParameterPtr inParam2 = NULL;
_ParameterPtr outParam1 = NULL;
_ParameterPtr outParam2 = NULL;
鍒濊瘯鍖?/p>
pCmd.CreateInstance(__uuidof(Command));
pRecordset.CreateInstance(_uuidof(Recordset));
retParam.CreateInstance(__uuidof(Parameter));
//鍏朵粬鐨凱arameterPtr 涔熷垵璇曞寲
pCmd->ActiveConnection = pConn;
pCmd->CommandType = adCmdStoredProc;
pCmd->CommandText=_bstr_t(_T(\"sp_1\")); //SP Name
retParam = pCmd ->CreateParameter(_bstr_t(\"Return\"),
adInteger,
adParamReturnValue,
sizeof(int));
pCmd->Parameters->Append(retParam);
inParam1 = pCmd ->CreateParameter(_bstr_t(\"InParam1\"),
adInteger,
adParamInput,
sizeof(int));
inParam1->Value = _variant_t(3);
pCmd->Parameters->Append(inParam1);
inParam2 = pCmd ->CreateParameter(_bstr_t(\"InParam2\"),
adChar,
adParamInput,[Page]
10);
inParam2->Value = _variant_t(_T(\"DD1\"));
pCmd->Parameters->Append(inParam2);
outParam1 = pCmd ->CreateParameter(_bstr_t(\"OutParam1\"),
adInteger,
adParamOutput,
sizeof(int));
pCmd->Parameters->Append(outParam1);
outParam2 = pCmd ->CreateParameter(_bstr_t(\"OutParam2\"),
adChar,
adParamOutput,
10);
pCmd->Parameters->Append(outParam2);
榪欓噷涓嶇敤refresh鐨勫姙娉曪紝鏄敤Parameter鏉ワ紝榪欓噷瑕佹敞鎰忕殑鏄紝榪欎釜add鐨勯『搴忚鍜屽弬鏁扮殑index欏哄簭瑕佷竴鑷?/p>
涓嬮潰灝辨槸璋冪敤浜?/p>
pRecordset = pCmd->Execute(NULL,NULL,adCmdStoredProc);
鐒跺悗鍙栭偅浜況eturn鍊奸樋錛宱utput鍊奸樋浠涔堢殑
榪欓噷鏈変竴涓尯鍒紝灝辨槸鐢ㄨ繖縐嶅姙娉?/p>
鍙互鏈変笁縐嶅姙娉曟潵鍙栬繖浜涜繑鍥炲煎拰output鍙傛暟
VretVal = pCmd->Parameters->GetItem(_bstr_t(\"Return\"))->Value;
VretVal = pCmd->Parameters->GetItem(short(0))->Value;
VretVal = retParam->Value;
閮芥槸涓鏍風(fēng)殑
6. 鍏充簬Refresh
鍏充簬榪欎釜鍑芥暟錛屼綔鐢ㄦ槸
Command 瀵硅薄鍘婚噸鏂扮儲(chǔ)鍙栬鎿嶄綔鐨勫瓨鍌ㄨ繃紼嬫墍鏈夋湁鍏沖弬鏁扮殑淇℃伅錛屽茍涓旀竻絀哄湪refresh涔嬪墠鑾峰彇鐨勫弬鏁頒俊鎭?nbsp;
鎵浠ヤ竴浣嗚皟鐢ㄥ畠浠ュ悗錛屽氨鍙互鑾峰彇SP鐨勯偅浜涗俊鎭紝閭d簺鍙傛暟鐨勪俊鎭紝鍙互閫氳繃pCmd->Parameters->Item[_variant_t(_bstr_t(\"@pin1\") )]->Value=_variant_t(3); 榪欐牱鐨勬柟寮忔潵璁劇疆鍙傛暟
濡傛灉瑕佷嬌鐢≒arameter鐨勫姙娉曠殑璇濓紝灝變笉瑕佺敤refresh浜?jiǎn)锛屼簨瀹炰笂锛屽鏋滃厛鎶姌q欎簺鍙傛暟鐨勫艱緗ソ浜?jiǎn)锛屽?nbsp; inParam2->Value = _variant_t(_T(\"DD1\"));錛屼竴鏃efresh鍚庯紝榪欎簺鍙傛暟灝辨病鏈夋剰涔変簡(jiǎn)銆?/p>
7.鍏充簬pConn->CursorLocation =adUseClient;
璁劇疆榪欎釜涓滆タ錛屽鏋滀笉璁劇疆娓告爣涓篴dUseClient錛岄偅涔堟垜鍦ㄥ彇return鍜宱utput鍙傛暟鐨勬椂鍊欙紝蹇呴』鍦ㄦ垜鎶婅褰曢泦鍏抽棴浠ュ悗鎵嶈兘鍙栵紝灝辨槸璇達(dá)紝蹇呴』鍏堝彇璁板綍闆嗭紝鐒跺悗鍏抽棴瀹冿紝鏈鍚庡啀鍙杛eturn鍜宱utput鍙傛暟錛屽鏋滄垜鍦ㄥ叧闂褰曢泦涔嬪墠灝卞彇return鍜宱utput鐨勫鹼紝閭d箞灝變笉鑳藉彇鍒版紜殑鍊鹼紝璁炬垚adUseClient灝眔k浜?jiǎn)锛?/p>
鍙﹀鏈変竴鐐瑰氨鏄紝Execute 鏂規(guī)硶榪斿洖鐨勬父鏍囩戶鎵胯璁劇疆銆俁ecordset 灝嗚嚜鍔ㄤ粠涓庝箣鍏寵仈鐨勮繛鎺ヤ腑緇ф壙璇ヨ緗傛垜鎶妏Conn璁炬垚adUseClient錛岄偅涔堟渶鍚庯紝鎴戠殑璁板綍闆嗕篃鏄痑dUseClient鐨勪簡(jiǎn)[Page]