锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美一区二区三区四区在线观看地址 ,亚洲专区欧美专区,蜜臀久久99精品久久久久久9http://m.shnenglu.com/ivenher/articles/16638.html鐖遍キ鐩?/dc:creator>鐖遍キ鐩?/author>Wed, 20 Dec 2006 03:24:00 GMThttp://m.shnenglu.com/ivenher/articles/16638.htmlhttp://m.shnenglu.com/ivenher/comments/16638.htmlhttp://m.shnenglu.com/ivenher/articles/16638.html#Feedback0http://m.shnenglu.com/ivenher/comments/commentRss/16638.htmlhttp://m.shnenglu.com/ivenher/services/trackbacks/16638.html鍘熸柟娉曞涓嬶細
case聽VT_DECIMAL:聽
聽聽聽聽聽聽聽聽聽聽聽聽聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
double聽val聽=聽var.decVal.Lo32;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽val聽
*=聽(var.decVal.sign聽==128)?-1聽:聽1;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽val聽
/=聽pow(10,聽var.decVal.scale);聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽CString聽strFormat;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽strFormat.Format(
"%d",聽var.decVal.scale);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽strFormat聽
="%."+strFormat+"f";
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽strValue.Format(strFormat,聽val);

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
break;
聽聽聽聽聽聽聽聽聽聽聽聽聽}


杞繃澶氭娌″嚭浠涔堜簨灝辮涓鴻繖孌典唬鐮佸彲浠ョ敤銆傜粨鏋滈棶棰樺氨鍑哄湪榪欐浠g爜銆?br />

///闂鎵鍦?/span>
double聽val聽=聽var.decVal.Lo32;

//搴旀敼涓郝?/span>
double聽val=var.decVal.Lo64;

褰撴暟鎹緝澶ф椂鏁版嵁琚埅鏂紝鐏靛紓浜嬩歡灝卞嚭鐜頒簡銆?

]]>
璋冪敤瀛樺偍榪囩▼http://m.shnenglu.com/ivenher/articles/9655.html鐖遍キ鐩?/dc:creator>鐖遍キ鐩?/author>Mon, 10 Jul 2006 11:34:00 GMThttp://m.shnenglu.com/ivenher/articles/9655.htmlhttp://m.shnenglu.com/ivenher/comments/9655.htmlhttp://m.shnenglu.com/ivenher/articles/9655.html#Feedback1http://m.shnenglu.com/ivenher/comments/commentRss/9655.htmlhttp://m.shnenglu.com/ivenher/services/trackbacks/9655.html聽聽ptrCmd->CommandType = adCmdStoredProc;
聽聽ptrCmd->Execute(NULL,NULL,adCmdStoredProc);

]]>
Visual C++ ADO鏁版嵁搴撶紪紼嬪叆闂紙涓嬶級http://m.shnenglu.com/ivenher/articles/2294.html鐖遍キ鐩?/dc:creator>鐖遍キ鐩?/author>Fri, 30 Dec 2005 10:32:00 GMThttp://m.shnenglu.com/ivenher/articles/2294.htmlhttp://m.shnenglu.com/ivenher/comments/2294.htmlhttp://m.shnenglu.com/ivenher/articles/2294.html#Feedback0http://m.shnenglu.com/ivenher/comments/commentRss/2294.htmlhttp://m.shnenglu.com/ivenher/services/trackbacks/2294.html10銆侀偊瀹氭暟鎹?BR>
銆銆瀹氫箟涓涓粦瀹氱被錛屽皢鍏舵垚鍛樺彉閲忕粦瀹氬埌涓涓寚瀹氱殑璁板綍闆嗭紝浠ユ柟渚夸簬璁塊棶璁板綍闆嗙殑瀛楁鍊箋?BR>
銆銆(1). 浠嶤ADORecordBinding媧劇敓鍑轟竴涓被錛?BR>
class CCustomRs : public CADORecordBinding
{
BEGIN_ADO_BINDING(CCustomRs)
ADO_VARIABLE_LENGTH_ENTRY2(3, adVarChar, m_szau_fname,
sizeof(m_szau_fname), lau_fnameStatus, false)
ADO_VARIABLE_LENGTH_ENTRY2(2, adVarChar, m_szau_lname,
sizeof(m_szau_lname), lau_lnameStatus, false)
ADO_VARIABLE_LENGTH_ENTRY2(4, adVarChar, m_szphone,
sizeof(m_szphone), lphoneStatus, true)
END_ADO_BINDING()

public:
CHAR m_szau_fname[22];
ULONG lau_fnameStatus;
CHAR m_szau_lname[42];
ULONG lau_lnameStatus;
CHAR m_szphone[14];
ULONG lphoneStatus;
};

銆銆鍏朵腑灝嗚緇戝畾鐨勫瓧孌典笌鍙橀噺鍚嶇敤BEGIN_ADO_BINDING瀹忓叧鑱旇搗鏉ャ傛瘡涓瓧孌靛搴斾簬涓や釜鍙橀噺錛屼竴涓瓨鏀懼瓧孌電殑鍊鹼紝鍙︿竴涓瓨鏀懼瓧孌電殑鐘舵併傚瓧孌電敤浠?寮濮嬬殑搴忓彿琛ㄧず錛屽1錛?錛?絳夌瓑銆?BR>
銆銆鐗瑰埆瑕佹敞鎰忕殑鏄細濡傛灉瑕佺粦瀹氱殑瀛楁鏄瓧絎︿覆綾誨瀷錛屽垯瀵瑰簲鐨勫瓧絎︽暟緇勭殑鍏冪礌涓暟涓瀹氳姣斿瓧孌甸暱搴﹀ぇ2錛堟瘮濡俶_szau_fname[22]錛屽叾緇戝畾鐨勫瓧孌礱u_fname鐨勯暱搴﹀疄闄呮槸20錛夛紝涓嶈繖鏍風粦瀹氬氨浼氬け璐ャ傛垜鍒嗘瀽澶氬嚭鐨?鍙兘鏄負浜嗗瓨鏀懼瓧絎︿覆緇撳熬鐨勭┖瀛楃null鍜孊STR瀛楃涓插紑澶寸殑涓涓瓧錛堣〃紺築STR鐨勯暱搴︼級銆傝繖涓棶棰樺浜庡垵瀛﹁呮潵璇村彲鑳芥槸涓涓剰鎯充笉鍒扮殑闂銆?BR>
銆銆CADORecordBinding綾葷殑瀹氫箟鍦╥crsint.h鏂囦歡閲岋紝鍐呭鏄細

class CADORecordBinding
{
public:
STDMETHOD_(const ADO_BINDING_ENTRY*, GetADOBindingEntries) (VOID) PURE;
};

BEGIN_ADO_BINDING瀹忕殑瀹氫箟涔熷湪icrsint.h鏂囦歡閲岋紝鍐呭鏄細
#define BEGIN_ADO_BINDING(cls) public: \
typedef cls ADORowClass; \
const ADO_BINDING_ENTRY* STDMETHODCALLTYPE GetADOBindingEntries() { \
static const ADO_BINDING_ENTRY rgADOBindingEntries[] = {

ADO_VARIABLE_LENGTH_ENTRY2瀹忕殑瀹氫箟涔熷湪icrsint.h鏂囦歡閲岋細
#define ADO_VARIABLE_LENGTH_ENTRY2(Ordinal, DataType, Buffer, Size, Status, Modify)\
{Ordinal, \
DataType, \
0, \
0, \
Size, \
offsetof(ADORowClass, Buffer), \
offsetof(ADORowClass, Status), \
0, \
classoffset(CADORecordBinding, ADORowClass), \
Modify},

#define END_ADO_BINDING瀹忕殑瀹氫箟涔熷湪icrsint.h鏂囦歡閲岋細
#define END_ADO_BINDING() {0, adEmpty, 0, 0, 0, 0, 0, 0, 0, FALSE}};\
return rgADOBindingEntries;}

銆銆銆(2). 緇戝畾

_RecordsetPtr Rs1;
IADORecordBinding *picRs=NULL;
CCustomRs rs;
......
Rs1->QueryInterface(__uuidof(IADORecordBinding),
(LPVOID*)&picRs));
picRs->BindToRecordset(&rs);

銆銆媧劇敓鍑虹殑綾誨繀欏婚氳繃IADORecordBinding鎺ュ彛鎵嶈兘緇戝畾錛岃皟鐢ㄥ畠鐨凚indToRecordset鏂規硶灝辮浜嗐?BR>
銆銆(3). rs涓殑鍙橀噺鍗蟲槸褰撳墠璁板綍瀛楁鐨勫?BR>
//Set sort and filter condition:
// Step 4: Manipulate the data
Rs1->Fields->GetItem("au_lname")->Properties->GetItem("Optimize")->Value = true;
Rs1->Sort = "au_lname ASC";
Rs1->Filter = "phone LIKE '415 5*'";

Rs1->MoveFirst();
while (VARIANT_FALSE == Rs1->EndOfFile)
{
printf("Name: %s\t %s\tPhone: %s\n",
(rs.lau_fnameStatus == adFldOK ? rs.m_szau_fname : ""),
(rs.lau_lnameStatus == adFldOK ? rs.m_szau_lname : ""),
(rs.lphoneStatus == adFldOK ? rs.m_szphone : ""));
if (rs.lphoneStatus == adFldOK)
strcpy(rs.m_szphone, "777");
TESTHR(picRs->Update(&rs)); // Add change to the batch
Rs1->MoveNext();
}
Rs1->Filter = (long) adFilterNone;
......
if (picRs) picRs->Release();
Rs1->Close();
pConn->Close();

銆銆鍙瀛楁鐨勭姸鎬佹槸adFldOK錛屽氨鍙互璁塊棶銆傚鏋滀慨鏀逛簡瀛楁錛屼笉瑕佸繕浜嗗厛璋冪敤picRs鐨刄pdate錛堟敞鎰忎笉鏄疪ecordset鐨刄pdate錛夛紝鐒跺悗鎵嶅叧闂紝涔熶笉瑕佸繕浜嗛噴鏀緋icRs錛堝嵆picRs->Release();錛夈?BR>
銆銆(4). 姝ゆ椂榪樺彲浠ョ敤IADORecordBinding鎺ュ彛娣誨姞鏂扮邯褰?BR>
if(FAILED(picRs->AddNew(&rs)))
......

銆銆11. 璁塊棶闀挎暟鎹?BR>
銆銆鍦∕icrosoft SQL涓殑闀挎暟鎹寘鎷瑃ext銆乮mage絳夎繖鏍烽暱綾誨瀷鐨勬暟鎹紝浣滀負浜岃繘鍒跺瓧鑺傛潵瀵瑰緟銆?BR>
銆銆鍙互鐢‵ield瀵硅薄鐨凣etChunk鍜孉ppendChunk鏂規硶鏉ヨ闂傛瘡嬈″彲浠ヨ鍑烘垨鍐欏叆鍏ㄩ儴鏁版嵁鐨勪竴閮ㄥ垎錛屽畠浼氳浣忎笂嬈¤闂殑浣嶇疆銆備絾鏄鏋滀腑闂磋闂簡鍒殑瀛楁鍚庯紝灝卞張寰椾粠澶存潵浜嗐?BR>
銆銆璇風湅涓嬮潰鐨勪緥瀛愶細

//鍐欏叆涓寮犵収鐗囧埌鏁版嵁搴擄細
VARIANT varChunk;
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1];

//VT_ARRAY 鈹?VT_UI1
CFile f("h:\\aaa.jpg",Cfile::modeRead);
BYTE bVal[ChunkSize+1];
UINT uIsRead=0;
//Create a safe array to store the array of BYTES
while(1)
{
uIsRead=f.Read(bVal,ChunkSize);
if(uIsRead==0)break;
rgsabound[0].cElements =uIsRead;
rgsabound[0].lLbound = 0;
psa = SafeArrayCreate(VT_UI1,1,rgsabound);
for(long index=0;index<uIsRead;index++)
{
if(FAILED(SafeArrayPutElement(psa,&index,&bVal[index])))
::MessageBox(NULL,"鍟婏紝鍙堝嚭姣涚梾浜嗐?,"鎻愮ず",MB_OK 鈹?MB_ICONWARNING);
}
varChunk.vt = VT_ARRAY鈹俈T_UI1;
varChunk.parray = psa;
try{
m_pRecordset->Fields->GetItem("photo")->AppendChunk(varChunk);
}
catch (_com_error &e)
{
CString str=(char*)e.Description();
::MessageBox(NULL,str+"\n鍙堝嚭姣涚梾浜嗐?,"鎻愮ず",MB_OK 鈹?MB_ICONWARNING);
}
::VariantClear(&varChunk);
::SafeArrayDestroyData( psa);
if(uIsRead<ChunkSize)break;
}//while(1)
f.Close();

//浠庢暟鎹簱璇諱竴寮犵収鐗囷細
CFile f;
f.Open("h:\\bbb.jpg",Cfile::modeWrite鈹侰file::modeCreate);
long lPhotoSize = m_pRecordset->Fields->Item["photo"]->ActualSize;
long lIsRead=0;

_variant_t varChunk;
BYTE buf[ChunkSize];
while(lPhotoSize>0)
{
lIsRead=lPhotoSize>=ChunkSize? ChunkSize:lPhotoSize;
varChunk = m_pRecordset->Fields->
Item["photo"]->GetChunk(lIsRead);
for(long index=0;index<lIsRead;index++)
{
::SafeArrayGetElement(varChunk.parray,&index,buf+index);
}
f.Write(buf,lIsRead);
lPhotoSize-=lIsRead;
}//while()
f.Close();


銆銆12. 浣跨敤SafeArray闂

銆銆瀛︿細浣跨敤SafeArray涔熸槸寰堥噸瑕佺殑錛屽洜涓哄湪ADO緙栫▼涓粡甯歌鐢ㄣ傚畠鐨勪富瑕佺洰鐨勬槸鐢ㄤ簬automation涓殑鏁扮粍鍨嬪弬鏁扮殑浼犻掋傚洜涓哄湪緗戠粶鐜涓紝鏁扮粍鏄笉鑳界洿鎺ヤ紶閫掔殑錛岃屽繀欏誨皢鍏跺寘瑁呮垚SafeArray銆傚疄璐ㄤ笂SafeArray灝辨槸灝嗛氬父鐨勬暟緇勫鍔犱竴涓弿榪扮錛岃鏄庡叾緇存暟銆侀暱搴︺佽竟鐣屻佸厓绱犵被鍨嬬瓑淇℃伅銆係afeArray涔熷茍涓嶅崟鐙嬌鐢紝鑰屾槸灝嗗叾鍐嶅寘瑁呭埌VARIANT綾誨瀷鐨勫彉閲忎腑錛岀劧鍚庢墠浣滀負鍙傛暟浼犻佸嚭鍘匯傚湪VARIANT鐨剉t鎴愬憳鐨勫煎鏋滃寘鍚玍T_ARRAY鈹?..,閭d箞瀹冩墍灝佽鐨勫氨鏄竴涓猄afeArray錛屽畠鐨刾array鎴愬憳鍗蟲槸鎸囧悜SafeArray鐨勬寚閽堛係afeArray涓厓绱犵殑綾誨瀷鍙互鏄疺ARIANT鑳藉皝瑁呯殑浠諱綍綾誨瀷錛屽寘鎷琕ARIANT綾誨瀷鏈韓銆?

銆銆浣跨敤SafeArray鐨勫叿浣撴楠わ細

銆銆鏂規硶涓錛?BR>
銆銆鍖呰涓涓猄afeArray錛?BR>
銆銆(1). 瀹氫箟鍙橀噺錛屽錛?BR>
VARIANT varChunk;
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1];

銆銆(2). 鍒涘緩SafeArray鎻忚堪絎︼細

uIsRead=f.Read(bVal,ChunkSize);//read array from a file.
if(uIsRead==0)break;
rgsabound[0].cElements =uIsRead;
rgsabound[0].lLbound = 0;
psa = SafeArrayCreate(VT_UI1,1,rgsabound);

銆銆(3). 鏀劇疆鏁版嵁鍏冪礌鍒癝afeArray錛?BR>
for(long index=0;index<uIsRead;index++)
{
if(FAILED(SafeArrayPutElement(psa,&index,&bVal[index])))
::MessageBox(NULL,"鍑烘瘺鐥呬簡銆?,"鎻愮ず",MB_OK 鈹?MB_ICONWARNING);
}

銆銆涓涓竴涓湴鏀撅紝鎸洪夯鐑︾殑銆?BR>
銆銆(4). 灝佽鍒癡ARIANT鍐咃細

varChunk.vt = VT_ARRAY鈹俈T_UI1;
varChunk.parray = psa;

銆銆榪欐牱灝卞彲浠ュ皢varChunk浣滀負鍙傛暟浼犻佸嚭鍘諱簡銆?BR>
銆銆璇誨彇SafeArray涓殑鏁版嵁鐨勬楠わ細

銆銆(1). 鐢⊿afeArrayGetElement涓涓竴涓湴璇?BR>
BYTE buf[lIsRead];
for(long index=0;index<lIsRead;index++)
{
::SafeArrayGetElement(varChunk.parray,&index,buf+index);
}

銆銆灝辮鍒扮紦鍐插尯buf閲屼簡銆?BR>
銆銆鏂規硶浜岋細

銆銆浣跨敤SafeArrayAccessData鐩存帴璇誨啓SafeArray鐨勭紦鍐插尯錛?BR>
銆銆(1). 璇葷紦鍐插尯錛?BR>
BYTE *buf;
SafeArrayAccessData(varChunk.parray, (void **)&buf);
f.Write(buf,lIsRead);
SafeArrayUnaccessData(varChunk.parray);

銆銆(2). 鍐欑紦鍐插尯錛?BR>
BYTE *buf;
::SafeArrayAccessData(psa, (void **)&buf);
for(long index=0;index<uIsRead;index++)
{
buf[index]=bVal[index];
}
::SafeArrayUnaccessData(psa);

varChunk.vt = VT_ARRAY鈹俈T_UI1;
varChunk.parray = psa;

銆銆榪欑鏂規硶璇誨啓SafeArray閮藉彲浠ワ紝瀹冪洿鎺ユ搷綰礢afeArray鐨勬暟鎹紦鍐插尯錛屾瘮鐢⊿afeArrayGetElement鍜孲afeArrayPutElement閫熷害蹇傜壒鍒傚悎浜庤鍙栨暟鎹備絾鐢ㄥ畬涔嬪悗涓嶈蹇樹簡璋冪敤::SafeArrayUnaccessData(psa)錛屽惁鍒欎細鍑洪敊鐨勩?BR>
銆銆13. 浣跨敤涔︾( bookmark )

銆銆涔︾鍙互鍞竴鏍囪瘑璁板綍闆嗕腑鐨勪竴涓褰曪紝鐢ㄤ簬蹇熷湴灝嗗綋鍓嶈褰曠Щ鍥炲埌宸茶闂繃鐨勮褰曪紝浠ュ強榪涜榪囨護絳夌瓑銆侾rovider浼氳嚜鍔ㄤ負璁板綍闆嗕腑鐨勬瘡涓鏉¤褰曚駭鐢熶竴涓功絳撅紝鎴戜滑鍙渶瑕佷嬌鐢ㄥ畠灝辮浜嗐傛垜浠笉鑳借瘯鍥炬樉紺恒佷慨鏀規垨姣旇緝涔︾銆侫DO鐢ㄨ褰曢泦鐨凚ookmark灞炴ц〃紺哄綋鍓嶈褰曠殑涔︾銆?BR>
銆銆鐢ㄦ硶姝ラ錛?BR>
銆銆(1). 寤虹珛涓涓猇ARIANT綾誨瀷鐨勫彉閲?BR>
_variant_t VarBookmark;

銆銆(2). 灝嗗綋鍓嶈褰曠殑涔︾鍊煎瓨鍏ヨ鍙橀噺

銆銆涔熷氨鏄褰曢泦鐨凚ookmark灞炴х殑褰撳墠鍊箋?BR>
VarBookmark = rst->Bookmark;

銆銆(3). 榪斿洖鍒板厛鍓嶇殑璁板綍

銆銆灝嗕繚瀛樼殑涔︾鍊艱緗埌璁板綍闆嗙殑涔︾灞炴т腑錛?BR>
// Check for whether bookmark set for a record
if (VarBookmark.vt == VT_EMPTY)
printf("No Bookmark set!\n");
else
rst->Bookmark = VarBookmark;

銆銆璁劇疆瀹屽悗錛屽綋鍓嶈褰曞嵆浼氱Щ鍔ㄥ埌璇ヤ功絳炬寚鍚戠殑璁板綍銆?BR>

銆銆14銆佽緗繃婊ゆ潯浠?BR>
銆銆Recordset瀵硅薄鐨凢ilter灞炴ц〃紺轟簡褰撳墠鐨勮繃婊ゆ潯浠躲傚畠鐨勫煎彲浠ユ槸浠ND鎴朞R榪炴帴璧鋒潵鐨勬潯浠惰〃杈懼紡錛堜笉鍚玏HERE鍏抽敭瀛楋級銆佺敱涔︾緇勬垚鐨勬暟緇勬垨ADO鎻愪緵鐨凢ilterGroupEnum鏋氫婦鍊箋備負Filter灞炴ц緗柊鍊煎悗Recordset鐨勫綋鍓嶈褰曟寚閽堜細鑷姩縐誨姩鍒版弧瓚寵繃婊ゆ潯浠剁殑絎竴涓褰曘備緥濡傦細

rst->Filter = _bstr_t ("濮撳悕='璧佃枃' AND 鎬у埆=鈥欏コ鈥?);

銆銆鍦ㄤ嬌鐢ㄦ潯浠惰〃杈懼紡鏃跺簲娉ㄦ剰涓嬪垪闂錛?BR>
銆銆錛?錛夈佸彲浠ョ敤鍦嗘嫭鍙風粍鎴愬鏉傜殑琛ㄨ揪寮?BR>
銆銆渚嬪錛?BR>
rst->Filter = _bstr_t ("(濮撳悕='璧佃枃' AND 鎬у埆=鈥欏コ鈥? OR AGE<25");

銆銆浣嗘槸寰蔣涓嶅厑璁稿湪鎷彿鍐呯敤OR錛岀劧鍚庡湪鎷彿澶栫敤AND錛屼緥濡傦細

rst->Filter = _bstr_t ("(濮撳悕='璧佃枃' OR 鎬у埆=鈥欏コ鈥? AND AGE<25");

銆銆蹇呴』淇敼涓猴細

rst->Filter = _bstr_t ("(濮撳悕='璧佃枃' AND AGE<25) OR (鎬у埆=鈥欏コ鈥?AND AGE<25)");

銆銆錛?錛夈佽〃杈懼紡涓殑姣旇緝榪愮畻絎﹀彲浠ユ槸LIKE

銆銆LIKE鍚庤姣旇緝鐨勬槸涓涓惈鏈夐氶厤絎?鐨勫瓧絎︿覆錛屾槦鍙瘋〃紺鴻嫢騫蹭釜浠繪剰鐨勫瓧絎︺?BR>
銆銆瀛楃涓茬殑棣栭儴鍜屽熬閮ㄥ彲浠ュ悓鏃跺甫鏄熷彿*

rst->Filter = _bstr_t ("濮撳悕 LIKE '*璧?' ");

銆銆涔熷彲浠ュ彧鏄熬閮ㄥ甫鏄熷彿錛?BR>
rst->Filter = _bstr_t ("濮撳悕 LIKE '璧?' ");

銆銆Filter灞炴у肩殑綾誨瀷鏄疺ariant錛屽鏋滆繃婊ゆ潯浠舵槸鐢變功絳劇粍鎴愮殑鏁扮粍錛屽垯闇灝嗚鏁扮粍杞崲涓篠afeArray錛岀劧鍚庡啀灝佽鍒頒竴涓猇ARIANT鎴朹variant_t鍨嬬殑鍙橀噺涓紝鍐嶈祴緇橣ilter灞炴с?BR>
銆銆15銆佺儲寮曚笌鎺掑簭

銆銆錛?錛夈佸緩绔嬬儲寮?BR>
銆銆褰撲互鏌愪釜瀛楁涓哄叧閿瓧鐢‵ind鏂規硶鏌ユ壘鏃訛紝涓轟簡鍔犲揩閫熷害鍙互浠ヨ瀛楁涓哄叧閿瓧鍦ㄨ褰曢泦鍐呴儴涓存椂寤虹珛绱㈠紩銆傚彧瑕佸皢璇ュ瓧孌電殑Optimize灞炴ц緗負true鍗沖彲錛屼緥濡傦細

pRst->Fields->GetItem("濮撳悕")->Properties->
GetItem("Optimize")->PutValue("True");
pRst->Find("濮撳悕 = '璧佃枃'",1,adSearchForward);
......
pRst->Fields->GetItem("濮撳悕")->Properties->
GetItem("Optimize")->PutValue("False");
pRst->Close();

銆銆璇存槑錛歄ptimize灞炴ф槸鐢盤rovider鎻愪緵鐨勫睘鎬э紙鍦ˋDO涓О涓哄姩鎬佸睘鎬э級錛孉DO鏈韓娌℃湁姝ゅ睘鎬с?BR>
銆銆錛?錛夈佹帓搴?BR>
銆銆瑕佹帓搴忎篃寰堢畝鍗曪紝鍙鎶婅鎺掑簭鐨勫叧閿瓧鍒楄〃璁劇疆鍒癛ecordset瀵硅薄鐨凷ort灞炴ч噷鍗沖彲錛屼緥濡傦細

pRstAuthors->CursorLocation = adUseClient;
pRstAuthors->Open("SELECT * FROM mytable",
_variant_t((IDispatch *) pConnection),
adOpenStatic, adLockReadOnly, adCmdText);
......
pRst->Sort = "濮撳悕 DESC, 騫撮緞 ASC";

銆銆鍏抽敭瀛楋紙鍗沖瓧孌靛悕錛変箣闂寸敤閫楀彿闅斿紑錛屽鏋滆浠ユ煇鍏抽敭瀛楅檷搴忔帓搴忥紝鍒欏簲鍦ㄨ鍏抽敭瀛楀悗鍔犱竴絀烘牸錛屽啀鍔燚ESC錛堝涓婁緥錛夈傚崌搴忔椂ASC鍔犱笉鍔犳棤鎵璋撱傛湰鎿嶄綔鏄埄鐢ㄧ儲寮曡繘琛岀殑錛屽茍鏈繘琛岀墿鐞嗘帓搴忥紝鎵浠ユ晥鐜囪緝楂樸?BR>浣嗚娉ㄦ剰錛屽湪鎵撳紑璁板綍闆嗕箣鍓嶅繀欏誨皢璁板綍闆嗙殑CursorLocation灞炴ц緗負adUseClient錛屽涓婁緥鎵紺恒係ort灞炴у煎湪闇瑕佹椂闅忔椂鍙互淇敼銆?BR>
銆銆16銆佷簨鍔″鐞?BR>
銆銆ADO涓殑浜嬪姟澶勭悊涔熷緢綆鍗曪紝鍙渶鍒嗗埆鍦ㄩ傚綋鐨勪綅緗皟鐢–onnection瀵硅薄鐨勪笁涓柟娉曞嵆鍙紝榪欎笁涓柟娉曟槸錛?BR>
銆銆錛?錛夈佸湪浜嬪姟寮濮嬫椂璋冪敤

pCnn->BeginTrans();

銆銆錛?錛夈佸湪浜嬪姟緇撴潫騫舵垚鍔熸椂璋冪敤

pCnn->CommitTrans ();

銆銆錛?錛夈佸湪浜嬪姟緇撴潫騫跺け璐ユ椂璋冪敤

pCnn->RollbackTrans ();

銆銆鍦ㄤ嬌鐢ㄤ簨鍔″鐞嗘椂錛屽簲灝介噺鍑忓皬浜嬪姟鐨勮寖鍥達紝鍗沖噺灝忎粠浜嬪姟寮濮嬪埌緇撴潫錛堟彁浜ゆ垨鍥炴粴錛変箣闂寸殑鏃墮棿闂撮殧錛屼互渚挎彁楂樼郴緇熸晥鐜囥傞渶瑕佹椂涔熷彲鍦ㄨ皟鐢˙eginTrans()鏂規硶涔嬪墠錛屽厛璁劇疆Connection瀵硅薄鐨処solationLevel灞炴у鹼紝璇︾粏鍐呭鍙傝MSDN涓湁鍏矨DO鐨勬妧鏈祫鏂欍?BR>
銆銆涓夈佷嬌鐢ˋDO緙栫▼甯歌闂瑙g瓟

銆銆浠ヤ笅鍧囨槸閽堝MS SQL 7.0緙栫▼鏃舵墍閬囬棶棰樿繘琛岃璁恒?BR>
銆銆1銆佽繛鎺ュけ璐ュ彲鑳藉師鍥?BR>
銆銆Enterprise Managemer鍐咃紝鎵撳紑灝嗘湇鍔″櫒鐨勫睘鎬у璇濇錛屽湪Security閫夐」鍗′腑錛屾湁涓涓夐」Authentication銆?BR>
銆銆濡傛灉璇ラ夐」鏄疻indows NT only錛屽垯浣犵殑紼嬪簭鎵鐢ㄧ殑榪炴帴瀛楃涓插氨涓瀹氳鍖呭惈Trusted_Connection鍙傛暟錛屽茍涓斿叾鍊煎繀欏諱負yes錛屽錛?BR>
"Provider=SQLOLEDB;Server=888;Trusted_Connection=yes"
";Database=master;uid=lad;";

銆銆濡傛灉涓嶆寜涓婅堪鎿嶄綔錛岀▼搴忚繍琛屾椂榪炴帴蹇呯劧澶辮觸銆?BR>
銆銆濡傛灉Authentication閫夐」鏄疭QL Server and Windows NT錛屽垯浣犵殑紼嬪簭鎵鐢ㄧ殑榪炴帴瀛楃涓插彲浠ヤ笉鍖呭惈Trusted_Connection鍙傛暟錛屽錛?BR>
"Provider=SQLOLEDB;Server=888;Database=master;uid=lad;pwd=111;";

銆銆鍥犱負ADO緇欒鍙傛暟鍙栫殑榛樿鍊煎氨鏄痭o錛屾墍浠ュ彲浠ョ渷鐣ャ傛垜璁や負榪樻槸鍙栭粯璁ゅ兼瘮杈冨畨鍏ㄤ竴浜涖?BR>
銆銆2銆佹敼鍙樺綋鍓嶆暟鎹簱鐨勬柟娉?BR>
銆銆浣跨敤Tansct-SQL涓殑USE璇彞鍗沖彲銆?BR>
銆銆3銆佸浣曞垽鏂竴涓暟鎹簱鏄惁瀛樺湪

銆銆(1)銆佸彲鎵撳紑master鏁版嵁搴撲腑涓涓彨鍋歋CHEMATA鐨勮鍥撅紝鍏跺唴瀹瑰垪鍑轟簡璇ユ湇鍔″櫒涓婃墍鏈夌殑鏁版嵁搴撳悕縐般?BR>
銆銆(2) 銆佹洿綆渚跨殑鏂規硶鏄嬌鐢║SE璇彞錛屾垚鍔熶簡灝卞瓨鍦紱涓嶆垚鍔燂紝灝變笉瀛樺湪銆備緥濡傦細

try{
m_pConnect->Execute ( _bstr_t("USE INSURANCE_2002"),NULL,
adCmdText鈹俛dExecuteNoRecords );
}
catch (_com_error &e)
{
blSuccess=FALSE;
CString str="鏁版嵁搴揑NSURANCE_2002涓嶅瓨鍦紒\n";
str+=e.Description();
::MessageBox(NULL,str,"璀﹀憡",MB_OK 鈹?MB_ICONWARNING);
}

銆銆4銆佸垽鏂竴涓〃鏄惁瀛樺湪

銆銆錛?錛夈佸悓鏍峰垽鏂竴涓〃鏄惁瀛樺湪錛屼篃鍙互鐢ㄦ槸鍚︽垚鍔熷湴鎵撳紑瀹冩潵鍒ゆ柇錛屽崄鍒嗘柟渚匡紝渚嬪錛?BR>
try{
m_pRecordset->Open(_variant_t("mytable"),
_variant_t((IDispatch *)m_pConnection,true), adOpenKeyset,
adLockOptimistic, adCmdTable);
}
catch (_com_error &e)
{
::MessageBox(NULL,"璇ヨ〃涓嶅瓨鍦ㄣ?,"鎻愮ず",MB_OK 鈹?MB_ICONWARNING);
}

銆銆(2)銆佽涓嶇劧鍙互閲囩敤楹葷儲涓鐐圭殑鍔炴硶錛屽氨鏄湪MS-SQL鏈嶅姟鍣ㄤ笂鐨勬瘡涓暟鎹簱涓兘鏈変竴涓悕涓簊ysobjects鐨勮〃錛屾煡鐪嬫琛ㄧ殑鍐呭鍗崇煡鎸囧畾鐨勮〃鏄惁鍦ㄨ鏁版嵁搴撲腑銆?BR>
銆銆(3)銆佸悓鏍鳳紝姣忎釜鏁版嵁搴撲腑閮芥湁涓涓悕涓篢ABLES鐨勮鍥?View)錛屾煡鐪嬫瑙嗗浘鐨勫唴瀹瑰嵆鐭ユ寚瀹氱殑琛ㄦ槸鍚﹀湪璇ユ暟鎹簱涓?BR>
銆銆5銆佺被鍨嬭漿鎹㈤棶棰?BR>
銆銆錛?錛夈佺被鍨媀ARIANT_BOOL

銆銆綾誨瀷VARIANT_BOOL絳変環浜巗hort綾誨瀷銆俆he VARIANT_BOOL is equivalent to short. see it's definition below:
typdef short VARIANT_BOOL

銆銆錛?錛夈乢com_ptr_t綾葷殑綾誨瀷杞崲

銆銆_ConnectionPtr鍙互鑷姩杞崲鎴怚Dspatch*綾誨瀷錛岃繖鏄洜涓篲ConnectionPtr瀹為檯涓婃槸_com_ptr_t綾葷殑涓涓疄渚嬶紝鑰岃繖涓被鏈夋綾誨瀷杞崲鍑芥暟銆?BR>
銆銆鍚岀悊錛宊RecordsetPtr鍜宊CommandPtr涔熼兘鍙互榪欐牱杞崲銆?BR>
銆銆錛?錛夈乢bstr_t鍜宊variant_t綾?BR>
銆銆鍦ˋDO緙栫▼鏃訛紝_bstr_t鍜宊variant_t榪欎袱涓被寰堟湁鐢紝鐪佸幓浜嗚澶欱STR鍜孷ARIANT綾誨瀷杞崲鐨勯夯鐑︺?BR>
銆銆6銆佹墦寮璁板綍闆嗘椂鐨勯棶棰?BR>
銆銆鍦ㄦ墦寮璁板綍闆嗘椂錛屽湪璋冪敤Recordset鐨凮pen鏂規硶鏃訛紝鍏舵渶鍚庝竴涓弬鏁伴噷涓瀹氫笉鑳藉寘鍚玜dAsyncExecute錛屽惁鍒欏皢鍥犱負鏄紓姝ユ搷浣滐紝鍦ㄨ鍙栨暟鎹椂鏃犳硶璇誨埌鏁版嵁銆?BR>
銆銆7銆佸紓甯稿鐞嗛棶棰?BR>
銆銆瀵規墍鏈夎皟鐢ˋDO鐨勮鍙ヤ竴瀹氳鐢╰ry鍜宑atch璇彞鎹曟崏寮傚父錛屽惁鍒欏湪鍙戠敓寮傚父鏃訛紝紼嬪簭浼氬紓甯擱鍑恒?BR>
銆銆8銆佷嬌鐢⊿afeArray闂

銆銆鍦ㄥ垵瀛︿嬌鐢ㄤ腑錛屾垜鏇鵑亣鍒頒竴涓激鑴戠瓔鐨勯棶棰橈紝涓瀹氳娉ㄦ剰錛?BR>
銆銆鍦ㄥ畾涔変簡SAFEARRAY鐨勬寚閽堝悗錛屽鏋滄墦綆楅噸澶嶄嬌鐢ㄥ嬈★紝鍒欏湪涓棿鍙互璋冪敤::SafeArrayDestroyData閲婃斁鏁版嵁錛屼絾鍐充笉鑳借皟鐢?:SafeArrayDestroyDescriptor錛屽惁鍒欏繀鐒跺嚭閿欙紝鍗充嬌璋冪敤SafeArrayCreate涔熶笉琛屻備緥濡傦細

SAFEARRAY *psa;
......
//When the data are no longer to be used:
::SafeArrayDestroyData( psa);

銆銆鎴戝垎鏋愬湪瀹氫箟psa鎸囬拡鏃訛紝涓涓猄AFEARRAY鐨勫疄渚嬶紙涔熷氨鏄疭AFEARRAY鎻忚堪絎︼級涔熷悓鏃惰鑷姩寤虹珛浜嗐備絾鏄彧瑕佷竴璋冪敤::SafeArrayDestroyDescriptor錛屾弿榪扮灝辮閿姣佷簡銆?BR>
銆銆鎵浠ユ垜璁や負::SafeArrayDestroyDescriptor鍙互鏍規湰灝變笉璋冪敤錛屽嵆浣胯皟鐢ㄤ篃蹇呴』鍦ㄦ渶鍚庤皟鐢ㄣ?BR>
銆銆9銆侀噸澶嶄嬌鐢ㄥ懡浠ゅ璞¢棶棰?BR>
銆銆涓涓懡浠ゅ璞″鏋滆閲嶅浣跨敤澶氭錛堝挨鍏舵槸甯﹀弬鏁扮殑鍛戒護錛夛紝鍒欏湪絎竴嬈℃墽琛屼箣鍓嶏紝搴斿皢瀹冪殑Prepared灞炴ц緗負TRUE銆傝繖鏍蜂細浣跨涓嬈℃墽琛屽噺鎱紝浣嗗嵈鍙互浣夸互鍚庣殑鎵ц鍏ㄩ儴鍔犲揩銆?BR>
銆銆10銆佺粦瀹氬瓧絎︿覆鍨嬪瓧孌甸棶棰?BR>
銆銆濡傛灉瑕佺粦瀹氱殑瀛楁鏄瓧絎︿覆綾誨瀷錛屽垯瀵瑰簲鐨勫瓧絎︽暟緇勭殑鍏冪礌涓暟涓瀹氳姣斿瓧孌甸暱搴﹀ぇ2錛堟瘮濡俶_szau_fname[22]錛屽叾緇戝畾鐨勫瓧孌礱u_fname鐨勯暱搴﹀疄闄呮槸20錛夛紝涓嶈繖鏍風粦瀹氬氨浼氬け璐ャ?BR>
銆銆11銆佷嬌鐢ˋppendChunk鐨勯棶棰?BR>
銆銆褰撶敤AddNew鏂規硶鍒氬垰鍚戣褰曢泦鍐呮坊鍔犱竴涓柊璁板綍涔嬪悗錛屼笉鑳介鍏堝悜涓涓暱鏁版嵁瀛楁錛坕mage綾誨瀷錛夊啓鍏ユ暟鎹紝蹇呴』鍏堝悜鍏朵粬瀛楁鍐欏叆榪囨暟鎹箣鍚庯紝鎵嶈兘璋冪敤AppendChunk鍐欒瀛楁錛屽惁鍒欏嚭閿欍備篃灝辨槸璇達紝AppendChunk涓嶈兘绱ф帴鍦ˋddNew涔嬪悗銆傚彟澶栵紝鍐欏叆鍏朵粬瀛楁鍚庤繕蹇呴』绱ф帴鐫璋冪敤AppendChunk錛岃屼笉鑳借皟鐢ㄨ褰曢泦鐨刄pdate鏂規硶鍚庯紝鎵嶈皟鐢ˋppendChunk錛屽惁鍒欒皟鐢ˋppendChunk鏃朵篃浼氬嚭閿欍傛崲鍙ヨ瘽璇達紝灝辨槸蹇呴』AppendChunk鍦ㄥ墠錛孶pdate鍦ㄥ悗銆傚洜鑰岃繖涓椂鍊欏氨涓嶈兘浣跨敤甯﹀弬鏁扮殑AddNew浜嗭紝鍥犱負甯﹀弬鏁扮殑AddNew浼氳嚜鍔ㄨ皟鐢ㄨ褰曢泦鐨刄pdate錛屾墍浠ppendChunk灝辮窇鍒癠pdate鐨勫悗闈簡錛屽氨鍙湁鍑洪敊浜嗭紒鍥犳錛岃繖鏃跺簲璇ョ敤涓嶅甫鍙傛暟鐨凙ddNew銆?BR>
銆銆鎴戞帹嫻嬭繖鍙兘鏄疢S SQL 7.0鐨勯棶棰橈紝鍦∕S SQL 2000涓垯涓嶅瓨鍦ㄨ繖浜涢棶棰橈紝浣嗘槸AppendChunk浠嶇劧涓嶈兘鍦║pdate涔嬪悗銆?BR>
銆銆鍥涖佸皬緇?/B>

銆銆涓鑸儏鍐典笅錛孋onnection鍜孋ommand鐨凟xecute鐢ㄤ簬鎵ц涓嶄駭鐢熻褰曢泦鐨勫懡浠わ紝鑰孯ecordset鐨凮pen鐢ㄤ簬浜х敓涓涓褰曢泦錛屽綋鐒朵篃涓嶆槸緇濆鐨勩傜壒鍒獵ommand涓昏鏄敤浜庢墽琛屽弬鏁板寲鐨勫懡浠わ紝鍙互鐩存帴鐢盋ommand瀵硅薄鎵ц錛屼篃鍙互灝咰ommand瀵硅薄浼犻掔粰Recordset鐨凮pen銆?/SPAN>



]]>
Visual C++ ADO鏁版嵁搴撶紪紼嬪叆闂紙涓婏級http://m.shnenglu.com/ivenher/articles/2293.html鐖遍キ鐩?/dc:creator>鐖遍キ鐩?/author>Fri, 30 Dec 2005 10:31:00 GMThttp://m.shnenglu.com/ivenher/articles/2293.htmlhttp://m.shnenglu.com/ivenher/comments/2293.htmlhttp://m.shnenglu.com/ivenher/articles/2293.html#Feedback0http://m.shnenglu.com/ivenher/comments/commentRss/2293.htmlhttp://m.shnenglu.com/ivenher/services/trackbacks/2293.html銆銆ADO 鏄洰鍓嶅湪Windows鐜涓瘮杈冩祦琛岀殑瀹㈡埛绔暟鎹簱緙栫▼鎶鏈侫DO鏄緩绔嬪湪OLE DB搴曞眰鎶鏈箣涓婄殑楂樼駭緙栫▼鎺ュ彛錛屽洜鑰屽畠鍏煎叿鏈夊己澶х殑鏁版嵁澶勭悊鍔熻兘錛堝鐞嗗悇縐嶄笉鍚岀被鍨嬬殑鏁版嵁婧愩佸垎甯冨紡鐨勬暟鎹鐞嗙瓑絳夛級鍜屾瀬鍏剁畝鍗曘佹槗鐢ㄧ殑緙栫▼鎺ュ彛錛屽洜鑰屽緱鍒頒簡騫挎硾鐨勫簲鐢ㄣ傝屼笖鎸夊井杞叕鍙哥殑鎰忓浘錛孫LE DB鍜孉DO灝嗛愭鍙栦唬 ODBC鍜孌AO銆傜幇鍦ㄤ粙緇岮DO鍚勭搴旂敤鐨勬枃绔犲拰涔︾睄鏈夊緢澶氾紝鏈枃鐫閲嶇珯鍦ㄥ垵瀛﹁呯殑瑙掑害錛岀畝瑕佹帰璁ㄤ竴涓嬪湪VC++涓嬌鐢ˋDO緙栫▼鏃剁殑涓浜涢棶棰樸傛垜浠笇鏈涢槄璇繪湰鏂囦箣鍓嶏紝鎮ㄥADO鎶鏈殑鍩烘湰鍘熺悊鏈変竴浜涗簡瑙c?BR>
銆銆涓銆佸湪VC++涓嬌鐢ˋDO緙栫▼

銆銆ADO瀹為檯涓婂氨鏄敱涓緇凙utomation瀵硅薄鏋勬垚鐨勭粍浠訛紝鍥犳鍙互璞′嬌鐢ㄥ叾瀹冧換浣旳utomation瀵硅薄涓鏍蜂嬌鐢ˋDO銆侫DO涓渶閲嶈鐨勫璞℃湁涓変釜錛欳onnection銆丆ommand鍜孯ecordset錛屽畠浠垎鍒〃紺鴻繛鎺ュ璞°佸懡浠ゅ璞″拰璁板綍闆嗗璞°傚鏋滄偍鐔熸倝浣跨敤MFC涓殑ODBC綾伙紙CDatabase銆丆Recordset)緙栫▼錛岄偅涔堝涔燗DO緙栫▼灝卞崄鍒嗗鏄撲簡銆?BR>
銆銆浣跨敤ADO緙栫▼鏃跺彲浠ラ噰鐢ㄤ互涓嬩笁縐嶆柟娉曚箣涓錛?BR>
銆銆1銆佷嬌鐢ㄩ澶勭悊鎸囦護#import

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

銆銆浣嗚娉ㄦ剰涓嶈兘鏀懼湪stdAfx.h鏂囦歡鐨勫紑澶達紝鑰屽簲璇ユ斁鍦ㄦ墍鏈塱nclude鎸囦護鐨勫悗闈€傚惁鍒欏湪緙栬瘧鏃朵細鍑洪敊銆?BR>紼嬪簭鍦ㄧ紪璇戣繃紼嬩腑錛孷C++浼氳鍑簃sado15.dll涓殑綾誨瀷搴撲俊鎭紝鑷姩浜х敓涓や釜璇ョ被鍨嬪簱鐨勫ご鏂囦歡鍜屽疄鐜版枃浠秏sado15.tlh鍜宮sado15.tli錛堝湪鎮ㄧ殑Debug鎴朢elease鐩綍涓嬶級銆傚湪榪欎袱涓枃浠墮噷瀹氫箟浜咥DO鐨勬墍鏈夊璞″拰鏂規硶錛屼互鍙婁竴浜涙灇涓懼瀷鐨勫父閲忕瓑銆傛垜浠殑紼嬪簭鍙鐩存帴璋冪敤榪欎簺鏂規硶灝辮浜嗭紝涓庝嬌鐢∕FC涓殑COleDispatchDriver綾昏皟鐢ˋutomation瀵硅薄鍗佸垎綾諱技銆?BR>
銆銆2銆佷嬌鐢∕FC涓殑CIDispatchDriver

銆銆灝辨槸閫氳繃璇誨彇msado15.dll涓殑綾誨瀷搴撲俊鎭紝寤虹珛涓涓狢OleDispatchDriver綾葷殑媧劇敓綾伙紝鐒跺悗閫氳繃瀹冭皟鐢ˋDO瀵硅薄銆?BR>
銆銆3銆佺洿鎺ョ敤COM鎻愪緵鐨凙PI

銆銆濡備嬌鐢ㄥ涓嬩唬鐮侊細

CLSID clsid;
HRESULT hr = ::CLSIDFromProgID(L"ADODB.Connection", &clsid);
if(FAILED(hr))
{...}
::CoCreateInstance(clsid, NULL, CLSCTX_SERVER, IID_IDispatch, (void **)
&pDispatch);
if(FAILED(hr))
{...}

銆銆浠ヤ笂涓夌鏂規硶錛岀涓鍜岀浜岀綾諱技錛屽彲鑳界涓縐嶅ソ鐢ㄤ竴浜涳紝絎笁縐嶇紪紼嬪彲鑳芥渶楹葷儲銆備絾鍙兘絎笁縐嶆柟娉曚篃鏄晥鐜囨渶楂樼殑錛岀▼搴忕殑灝哄涔熸渶灝忥紝騫朵笖瀵笰DO鐨勬帶鍒惰兘鍔涗篃鏈寮恒?BR>
銆銆鎹井杞祫鏂欎粙緇嶏紝絎竴縐嶆柟娉曚笉鏀寔鏂規硶璋冪敤涓殑榛樿鍙傛暟錛屽綋鐒剁浜岀鏂規硶涔熸槸榪欐牱錛屼絾絎笁縐嶅氨涓嶆槸榪欐牱浜嗐傞噰鐢ㄧ涓夌鏂規硶鐨勬按騫充篃鏈楂樸傚綋浣犻渶瑕佺粫榪嘇DO鑰岀洿鎺ヨ皟鐢∣LE DB搴曞眰鐨勬柟娉曟椂錛屽氨涓瀹氳浣跨敤絎笁縐嶆柟娉曚簡銆?BR>
銆銆ADO緙栫▼鐨勫叧閿紝灝辨槸鐔熺粌鍦拌繍鐢ˋDO鎻愪緵鐨勫悇縐嶅璞?object)銆佹柟娉?method)銆佸睘鎬?property)鍜屽鍣紙collection錛夈傚彟澶栵紝濡傛灉鏄湪MS SQL鎴朞racle絳夊ぇ鍨嬫暟鎹簱涓婄紪紼嬶紝榪樿鑳界啛緇冧嬌鐢⊿QL璇█銆?BR>

銆銆浜屻佷嬌鐢?import鏂規硶鐨勭紪紼嬫楠?/B>

銆銆榪欓噷寤鴻鎮ㄤ嬌鐢?import鐨勬柟娉曪紝鍥犱負瀹冩槗瀛︺佹槗鐢紝浠g爜涔熸瘮杈冪畝媧併?BR>
銆銆1銆?娣誨姞#import鎸囦護

銆銆鎵撳紑stdafx.h鏂囦歡錛屽皢涓嬪垪鍐呭娣誨姞鍒版墍鏈夌殑include鎸囦護涔嬪悗錛?BR>
#include <icrsint.h> //Include support for VC++ Extensions
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "adoEOF")

銆銆鍏朵腑icrsint.h鏂囦歡鍖呭惈浜哣C++鎵╁睍鐨勪竴浜涢澶勭悊鎸囦護銆佸畯絳夌殑瀹氫箟錛岀敤浜嶤OM緙栫▼鏃朵嬌鐢ㄣ?BR>
銆銆2銆佸畾涔塤ConnectionPtr鍨嬪彉閲忥紝騫跺緩绔嬫暟鎹簱榪炴帴

銆銆寤虹珛浜嗕笌鏁版嵁搴撴湇鍔″櫒鐨勮繛鎺ュ悗錛屾墠鑳借繘琛屽叾浠栨湁鍏蟲暟鎹簱鐨勮闂拰鎿嶄綔銆侫DO浣跨敤Connection瀵硅薄鏉ュ緩绔嬩笌鏁版嵁搴撴湇鍔″櫒鐨勮繛鎺ワ紝鎵浠ュ畠鐩稿綋浜嶮FC涓殑CDatabase綾匯傚拰CDatabase綾諱竴鏍鳳紝璋冪敤Connection瀵硅薄鐨凮pen鏂規硶鍗沖彲寤虹珛涓庢湇鍔″櫒鐨勮繛鎺ャ?BR>
銆銆鏁版嵁綾誨瀷 _ConnectionPtr瀹為檯涓婂氨鏄敱綾繪ā鏉縚com_ptr_t鑰屽緱鍒扮殑涓涓叿浣撶殑瀹炰緥綾伙紝鍏跺畾涔夊彲浠ュ埌msado15.tlh銆乧omdef.h 鍜宑omip.h榪欎笁涓枃浠朵腑鎵懼埌銆傚湪msado15.tlh涓湁錛?BR>
_COM_SMARTPTR_TYPEDEF(_Collection, __uuidof(_Collection));

銆銆緇忓畯鎵╁睍鍚庡氨寰楀埌浜哶ConnectionPtr綾匯俖ConnectionPtr綾誨皝瑁呬簡Connection瀵硅薄鐨処dispatch鎺ュ彛鎸囬拡錛屽強涓浜涘繀瑕佺殑鎿嶄綔銆傛垜浠氨鏄氳繃榪欎釜鎸囬拡鏉ユ搷綰礐onnection瀵硅薄銆傜被浼煎湴錛屽悗闈㈢敤鍒扮殑_CommandPtr鍜宊RecordsetPtr綾誨瀷涔熸槸榪欐牱寰楀埌鐨勶紝瀹冧滑鍒嗗埆琛ㄧず鍛戒護瀵硅薄鎸囬拡鍜岃褰曢泦瀵硅薄鐨勬寚閽堛?BR>
銆銆錛?錛夈佽繛鎺ュ埌MS SQL Server

銆銆娉ㄦ剰榪炴帴瀛楃涓茬殑鏍煎紡錛屾彁渚涙紜殑榪炴帴瀛楃涓叉槸鎴愬姛榪炴帴鍒版暟鎹簱鏈嶅姟鍣ㄧ殑絎竴姝ワ紝鏈夊叧榪炴帴瀛楃涓茬殑璇︾粏淇℃伅鍙傝寰蔣MSDN Library鍏夌洏銆?BR>
銆銆鏈緥榪炴帴瀛楃涓蹭腑鐨剆erver_name錛宒atabase_name錛寀ser_name鍜宲assword鍦ㄧ紪紼嬫椂閮藉簲璇ユ浛鎹㈡垚瀹為檯鐨勫唴瀹廣?BR>
_ConnectionPtr pMyConnect=NULL;
HRESULT hr=pMyConnect.CreateInstance(__uuidof(Connection)));
if(FAILED(hr))return;

_bstr_t strConnect="Provider=SQLOLEDB; Server=server_name;"
"Database=database_name; uid=user_name; pwd=password;";
//connecting to the database server now:
try{pMyConnect->Open(strConnect,"","",NULL);}
catch (_com_error &e)
{
::MessageBox(NULL,e.Description(),"璀﹀憡",MB_OK 鈹?MB_ICONWARNING);
}

銆銆娉ㄦ剰Connection瀵硅薄鐨凮pen鏂規硶涓殑榪炴帴瀛楃涓插弬鏁板繀欏繪槸BSTR鎴朹bstr_t綾誨瀷銆傚彟澶栵紝鏈緥鏄洿鎺ラ氳繃OLE DB Provider寤虹珛榪炴帴錛屾墍浠ユ棤闇寤虹珛鏁版嵁婧愩?BR>
銆銆錛?錛夈侀氳繃ODBC Driver榪炴帴鍒癉atabase Server榪炴帴瀛楃涓叉牸寮忎笌鐩存帴鐢∣DBC緙栫▼鏃剁殑宸笉澶氾細

_bstr_t strConnect="DSN=datasource_name; Database=database_name; uid=user_name; pwd=password;";

銆銆姝ゆ椂涓嶰DBC緙栫▼涓鏍鳳紝蹇呴』鍏堝緩绔嬫暟鎹簮銆?BR>
銆銆3銆佸畾涔塤RecordsetPtr鍨嬪彉閲忥紝騫舵墦寮鏁版嵁闆?BR>
銆銆瀹氫箟_RecordsetPtr鍨嬪彉閲忥紝鐒跺悗閫氳繃瀹冭皟鐢≧ecordset瀵硅薄鐨凮pen鏂規硶錛屽嵆鍙墦寮涓涓暟鎹泦銆傛墍浠ecordset瀵硅薄涓嶮FC涓殑CRecordset綾葷被浼鹼紝瀹冧篃鏈夊綋鍓嶈褰曘佸綋鍓嶈褰曟寚閽堢殑姒傚康銆傚錛?BR>
_RecordsetPtr m_pRecordset;
if(!FAILED(m_pRecordset.CreateInstance( __uuidof( Recordset )))
{
m_pDoc->m_initialized=FALSE;
return;
}

try{
m_pRecordset->Open(_variant_t("mytable"),
_variant_t((IDispatch *)pMyConnect,true), adOpenKeyset,
adLockOptimistic, adCmdTable);
}
catch (_com_error &e)
{
::MessageBox(NULL,"鏃犳硶鎵撳紑mytable琛ㄣ?,"鎻愮ず",
MB_OK 鈹?MB_ICONWARNING);
}

銆銆Recordset瀵硅薄鐨凮pen鏂規硶闈炲父閲嶈錛屽畠鐨勭涓涓弬鏁板彲浠ユ槸涓涓猄QL璇彞銆佷竴涓〃鐨勫悕瀛楁垨涓涓懡浠ゅ璞$瓑絳夛紱絎簩涓弬鏁板氨鏄墠闈㈠緩绔嬬殑榪炴帴瀵硅薄鐨勬寚閽堛傛澶栵紝鐢–onnection鍜孋ommand瀵硅薄鐨凟xecute鏂規硶涔熻兘寰楀埌璁板綍闆嗭紝浣嗘槸鍙鐨勩?BR>

銆銆4銆佽鍙栧綋鍓嶈褰曠殑鏁版嵁

銆銆鎴戣涓鴻鍙栨暟鎹殑鏈鏂逛究鐨勬柟娉曞涓嬶細

try{
m_pRecordset->MoveFirst();
while(m_pRecordset->adoEOF==VARIANT_FALSE)
{
//Retrieve column's value:
CString sName=(char*)(_bstr_t)(m_pRecordset->Fields->GetItem
(_variant_t("name"))->Value);
short cAge=(short)(m_pRecordset->Fields->GetItem
(_variant_t("age"))->Value);
//Do something what you want to do:
......
m_pRecordset->MoveNext();
}
}//try
catch (_com_error &e)
{
CString str=(char*)e.Description();
::MessageBox(NULL,str+"\n鍙堝嚭姣涚梾浜嗐?,"鎻愮ず",
MB_OK 鈹?MB_ICONWARNING);
}

銆銆鏈緥涓殑name鍜宎ge閮芥槸瀛楁鍚嶏紝璇誨彇鐨勫瓧孌靛煎垎鍒繚瀛樺湪sName鍜宑Age鍙橀噺鍐呫備緥涓殑Fields鏄疪ecordset瀵硅薄鐨勫鍣紝GetItem鏂規硶榪斿洖鐨勬槸Field瀵硅薄錛岃孷alue鍒欐槸Field瀵硅薄鐨勪竴涓睘鎬э紙鍗寵瀛楁鐨勫鹼級銆傞氳繃姝や緥錛屽簲鎺屾彙鎿嶇旱瀵硅薄灞炴х殑鏂規硶銆備緥濡傦紝瑕佽幏寰桭ield 瀵硅薄鐨刅alue灞炴х殑鍊煎彲浠ョ洿鎺ョ敤灞炴у悕Value鏉ュ紩鐢ㄥ畠錛堝涓婁緥錛夛紝浣嗕篃鍙互璋冪敤Get鏂規硶錛屼緥濡傦細

CString sName=(char*)(_bstr_t)(m_pRecordset->Fields->GetItem
(_variant_t("name"))->GetValue());

銆銆浠庢渚嬭繕鍙互鐪嬪埌錛屽垽鏂槸鍚﹀埌杈捐褰曢泦鐨勬湯灝撅紝浣跨敤璁板綍闆嗙殑adoEOF灞炴э紝鍏跺艱嫢涓虹湡鍗沖埌浜嗙粨灝撅紝鍙嶄箣鍒欐湭鍒般傚垽鏂槸鍚﹀埌杈捐褰曢泦寮澶達紝鍒欏彲鐢˙OF灞炴с?BR>
銆銆鍙﹀錛岃鍙栨暟鎹繕鏈変竴涓柟娉曪紝灝辨槸瀹氫箟涓涓粦瀹氱殑綾伙紝鐒跺悗閫氳繃緇戝畾鐨勫彉閲忓緱鍒板瓧孌靛鹼紙璇﹁鍚庨潰鐨勪粙緇嶏級銆?BR>
銆銆5銆佷慨鏀規暟鎹?BR>
銆銆鏂規硶涓錛?BR>
try{
m_pRecordset->MoveFirst();
while(m_pRecordset->adoEOF==VARIANT_FALSE)
{
m_pRecordset->Fields->GetItem
(_variant_t("濮撳悕"))->Value=_bstr_t("璧佃枃");
......
m_pRecordset->Update();

m_pRecordset->MoveNext();
}
}//try

銆銆鏀瑰彉浜哣alue灞炴х殑鍊鹼紝鍗蟲敼鍙樹簡瀛楁鐨勫箋?BR>
銆銆鏂規硶浜岋細

m_pRecordset->Fields->GetItem
(_variant_t("濮撳悕"))->PutValue(_bstr_t("璧佃枃"));

銆銆鏂規硶涓夛細灝辨槸鐢ㄥ畾涔夌粦瀹氱被鐨勬柟娉曪紙璇﹁鍚庨潰鐨勪粙緇嶏級銆?BR>
銆銆6銆佹坊鍔犺褰?BR>
銆銆鏂拌褰曟坊鍔犳垚鍔熷悗錛屽嵆鑷姩鎴愪負褰撳墠璁板綍銆侫ddNew鏂規硶鏈変袱縐嶅艦寮忥紝涓涓惈鏈夊弬鏁幫紝鑰屽彟涓涓垯涓嶅甫鍙傛暟銆?BR>
銆銆鏂規硶涓錛堜笉甯﹀弬鏁幫級錛?BR>
// Add new record into this table:
try{
if(!m_pRecordset->Supports(adAddNew)) return;

m_pRecordset->AddNew();
m_pRecordset->Fields->GetItem
(_variant_t("濮撳悕"))->Value=_bstr_t("璧佃枃");
m_pRecordset->Fields->GetItem
(_variant_t("鎬у埆"))->Value=_bstr_t("濂?);
m_pRecordset->Fields->GetItem
(_variant_t("age"))->Value=_variant_t((short)20);
m_pRecordset->Fields->GetItem
(_variant_t("marry"))->Value=_bstr_t("鏈");
m_pRecordset->Update();
}//try
catch (_com_error &e)
{
::MessageBox(NULL, "鍙堝嚭姣涚梾浜嗐?,"鎻愮ず",MB_OK 鈹?MB_ICONWARNING);
}

銆銆榪欑鏂規硶寮勫畬浜嗚繕瑕佽皟鐢║pdate()銆?BR>
銆銆鏂規硶浜岋紙甯﹀弬鏁幫級錛?BR>
_variant_t varName[4],narValue[4];
varName[0] = L"濮撳悕";
varName[1] = L"鎬у埆";
varName[2] = L"age";
varName[3] = L"marry";
narValue[0]=_bstr_t("璧佃枃");
narValue[1]=_bstr_t("濂?);
narValue[2]=_variant_t((short)20);
narValue[3]=_bstr_t("鏈");

const int nCrit = sizeof varName / sizeof varName[0];
// Create SafeArray Bounds and initialize the array
SAFEARRAYBOUND rgsaName[1],rgsaValue[1];
rgsaName[0].lLbound = 0;
rgsaName[0].cElements = nCrit;
SAFEARRAY *psaName = SafeArrayCreate( VT_VARIANT, 1, rgsaName );
rgsaValue[0].lLbound = 0;
rgsaValue[0].cElements = nCrit;
SAFEARRAY *psaValue = SafeArrayCreate( VT_VARIANT, 1, rgsaValue );
// Set the values for each element of the array
HRESULT hr1=S_OK.hr2=S_OK;
for( long i = 0 ; i < nCrit && SUCCEEDED( hr1 ) && SUCCEEDED( hr2 );i++)
{
hr1=SafeArrayPutElement(psaName, &i,&varName[i]);
hr2=SafeArrayPutElement(psaValue, &i,&narValue[i]); }

// Initialize and fill the SafeArray
VARIANT vsaName,vsaValue;
vsaName.vt = VT_VARIANT 鈹?VT_ARRAY;
vsaValue.vt = VT_VARIANT 鈹?VT_ARRAY;
V_ARRAY(&vsaName) = psaName;//&vsaName->parray=psaName;
//see definition in oleauto.h file.
V_ARRAY(&vsaValue) = psaValue;

// Add a new record:
m_pRecordset->AddNew(vsaName,vsaValue);

銆銆榪欑鏂規硶涓嶉渶瑕佽皟鐢║pdate錛屽洜涓烘坊鍔犲悗錛孉DO浼氳嚜鍔ㄨ皟鐢ㄥ畠銆傛鏂規硶涓昏鏄嬌鐢⊿afeArray鎸洪夯鐑︺?BR>
銆銆鏂規硶涓夛細灝辨槸鐢ㄥ畾涔夌粦瀹氱被鐨勬柟娉曪紙璇﹁鍚庨潰鐨勪粙緇嶏級銆?BR>
銆7銆佸垹闄よ褰?BR>
銆銆璋冪敤Recordset鐨凞elete鏂規硶灝辮浜嗭紝鍒犻櫎鐨勬槸褰撳墠璁板綍銆傝浜嗚ВDelete鐨勫叾瀹冪敤娉曡鏌ラ槄鍙傝冩枃鐚?BR>
try{
m_pRecordset->MoveFirst();
while(m_pRecordset->adoEOF==VARIANT_FALSE)
{
CString sName=(char*)(_bstr_t)(m_pRecordset->Fields->GetItem
(_variant_t("濮撳悕"))->Value);
if(::MessageBox(NULL,"濮撳悕="+sName+"\n鍒犻櫎濂瑰悧錛?,
"鎻愮ず",MB_YESNO 鈹?MB_ICONWARNING)==IDYES)
{
m_pRecordset->Delete(adAffectCurrent);
m_pRecordset->Update();
}
m_pRecordset->MoveNext();
}
}//try
catch (_com_error &e)
{
::MessageBox(NULL,"鍙堝嚭姣涚梾浜嗐?,"鎻愮ず",MB_OK 鈹?MB_ICONWARNING);
}

銆銆8銆佷嬌鐢ㄥ甫鍙傛暟鐨勫懡浠?BR>
銆銆Command瀵硅薄鎵浠h〃鐨勫氨鏄竴涓狿rovider鑳藉鐞嗚В鐨勫懡浠わ紝濡係QL璇彞絳夈備嬌鐢–ommand瀵硅薄鐨勫叧閿氨鏄妸琛ㄧず鍛戒護鐨勮鍙ヨ緗埌CommandText灞炴т腑錛岀劧鍚庤皟鐢–ommand瀵硅薄鐨凟xecute鏂規硶灝辮浜嗐備竴鑸儏鍐典笅鍦ㄥ懡浠や腑鏃犻渶浣跨敤鍙傛暟錛屼絾鏈夋椂浣跨敤鍙傛暟錛屽彲浠ュ鍔犲叾鐏墊椿鎬у拰鏁堢巼銆?BR>
銆銆(1). 寤虹珛榪炴帴銆佸懡浠ゅ璞″拰璁板綍闆嗗璞?BR>
銆銆鏈緥涓〃紺哄懡浠ょ殑璇彞灝辨槸涓涓猄QL璇彞錛圫ELECT璇彞錛夈係ELECT璇彞涓殑闂彿?灝變唬琛ㄥ弬鏁幫紝濡傛灉瑕佸涓弬鏁幫紝灝卞鏀懼嚑涓棶鍙鳳紝姣忎釜闂彿浠h〃涓涓弬鏁般?BR>
_ConnectionPtr Conn1;
_CommandPtr Cmd1;
ParametersPtr *Params1 = NULL; // Not an instance of a smart pointer.
_ParameterPtr Param1;
_RecordsetPtr Rs1;

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< ?");
}//try

銆銆瑕佹敞鎰忓懡浠ゅ璞″繀欏諱笌榪炴帴瀵硅薄鍏寵仈璧鋒潵鎵嶈兘璧蜂綔鐢紝鏈緥涓皢鍛戒護瀵硅薄鐨凙ctiveConnection灞炴ц緗負榪炴帴瀵硅薄鐨勬寚閽堬紝鍗充負姝ょ洰鐨勶細

Cmd1->ActiveConnection = Conn1;

銆銆(2). 鍒涘緩鍙傛暟瀵硅薄錛屽茍緇欏弬鏁拌祴鍊?BR>
// Create Parameter Object
Param1 = Cmd1->CreateParameter( _bstr_t(bstrEmpty),
adInteger,
adParamInput,
-1,
_variant_t( (long) 5) );
Param1->Value = _variant_t( (long) 5 );
Cmd1->Parameters->Append( Param1 );

銆銆鐢ㄥ懡浠ゅ璞$殑鏂規硶鏉ュ垱寤轟竴涓弬鏁板璞★紝鍏朵腑鐨勯暱搴﹀弬鏁幫紙絎笁涓級濡傛灉鏄浐瀹氶暱搴︾殑綾誨瀷錛屽氨濉?1錛屽鏋滄槸瀛楃涓茬瓑鍙彉闀垮害鐨勫氨濉叾瀹為檯闀垮害銆侾arameters鏄懡浠ゅ璞$殑涓涓鍣紝瀹冪殑Append鏂規硶灝辨槸鎶婂垱寤虹殑鍙傛暟瀵硅薄榪藉姞鍒拌瀹瑰櫒閲屻侫ppend榪涘幓鐨勫弬鏁版寜鍏堝悗欏哄簭涓嶴QL璇彞涓殑闂彿浠庡乏鑷沖彸涓涓瀵瑰簲銆?BR>
銆銆(3). 鎵ц鍛戒護鎵撳紑璁板綍闆?BR>
// Open Recordset Object
Rs1 = Cmd1->Execute( &vtEmpty, &vtEmpty2, adCmdText );

銆銆浣嗚娉ㄦ剰錛岀敤Command鍜孋onnection瀵硅薄鐨凟xecute鏂規硶寰楀埌鐨凴ecordset鏄彧璇葷殑銆傚洜涓哄湪鎵撳紑Recordset涔嬪墠錛屾垜浠棤娉曡緗畠鐨凩ockType灞炴э紙鍏墮粯璁ゅ間負鍙錛夈傝屽湪鎵撳紑涔嬪悗璁劇疆LockType涓嶈搗浣滅敤銆?BR>
銆銆鎴戝彂鐜扮敤涓婅堪鏂規硶寰楀埌璁板綍闆哛s1鍚庯紝涓嶄絾Rs1涓殑璁板綍鏃犳硶淇敼錛屽嵆浣跨洿鎺ョ敤SQL璇彞淇敼鍚屼竴琛ㄤ腑浠諱綍璁板綍閮戒笉琛屻?BR>
銆銆瑕佹兂鑳戒慨鏀規暟鎹紝榪樻槸瑕佺敤Recordset鑷繁鐨凮pen鏂規硶鎵嶈錛屽錛?BR>
try{
m_pRecordset->Open((IDispatch *) Cmd1, vtMissing,
adOpenStatic, adLockOptimistic, adCmdUnspecified);
}
catch (_com_error &e)
{
::MessageBox(NULL,"mytable琛ㄤ笉瀛樺湪銆?,"鎻愮ず",MB_OK 鈹?MB_ICONWARNING);
}

銆銆Recordset瀵硅薄鐨凮pen鏂規硶鐪熸槸澶ソ浜嗭紝鍏剁涓涓弬鏁板彲浠ユ槸SQL璇彞銆佽〃鍚嶅瓧銆佸懡浠ゅ璞℃寚閽堢瓑絳夈?BR>
銆銆9銆佸搷搴擜DO鐨勯氱煡浜嬩歡

銆銆閫氱煡浜嬩歡灝辨槸褰撴煇涓壒瀹氫簨浠跺彂鐢熸椂錛岀敱Provider閫氱煡瀹㈡埛紼嬪簭錛屾崲鍙ヨ瘽璇達紝灝辨槸鐢盤rovider璋冪敤瀹㈡埛紼嬪簭涓殑涓涓壒瀹氱殑鏂規硶錛堝嵆浜嬩歡鐨勫鐞嗗嚱鏁幫級銆傛墍浠ヤ負浜嗗搷搴斾竴涓簨浠訛紝鏈鍏抽敭鐨勫氨鏄瀹炵幇浜嬩歡鐨勫鐞嗗嚱鏁般?BR>
銆銆(1). 浠嶤onnectionEventsVt鎺ュ彛媧劇敓鍑轟竴涓被

銆銆涓轟簡鍝嶅簲_Connection鐨勯氱煡浜嬩歡錛屽簲璇ヤ粠ConnectionEventsVt鎺ュ彛媧劇敓鍑轟竴涓被錛?BR>
class CConnEvent : public ConnectionEventsVt
{
private:
ULONG m_cRef;
public:
CConnEvent() { m_cRef = 0; };
~CConnEvent() {};

STDMETHODIMP QueryInterface(REFIID riid, void ** ppv);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP raw_InfoMessage(
struct Error *pError,
EventStatusEnum *adStatus,
struct _Connection *pConnection);
STDMETHODIMP raw_BeginTransComplete(
LONG TransactionLevel,
struct Error *pError,
EventStatusEnum *adStatus,
struct _Connection *pConnection);
......
};

銆銆銆(2). 瀹炵幇姣忎竴涓簨浠剁殑澶勭悊鍑芥暟(鍑℃槸甯aw_鍓嶇紑鐨勬柟娉曢兘鎶婂畠瀹炵幇浜?錛?BR>
STDMETHODIMP CConnEvent::raw_InfoMessage(
struct Error *pError,
EventStatusEnum *adStatus,
struct _Connection *pConnection)
{
*adStatus = adStatusUnwantedEvent;
return S_OK;
};

銆銆鏈変簺鏂規硶铏界劧浣犲茍涓嶉渶瑕侊紝浣嗕篃蹇呴』瀹炵幇瀹冿紝鍙渶綆鍗曞湴榪斿洖涓涓猄_OK鍗沖彲銆備絾濡傛灉瑕侀伩鍏嶇粡甯歌璋冪敤錛岃繕搴斿湪鍏朵腑灝哸dStatus鍙傛暟璁劇疆涓篴dStatusUnwantedEvent錛屽垯鍦ㄦ湰嬈¤皟鐢ㄥ悗錛屼互鍚庡氨涓嶄細琚皟鐢ㄤ簡銆?BR>鍙﹀榪樺繀欏誨疄鐜癚ueryInterface, AddRef, 鍜孯elease涓変釜鏂規硶:

STDMETHODIMP CConnEvent::QueryInterface(REFIID riid, void ** ppv)
{
*ppv = NULL;
if (riid == __uuidof(IUnknown) 鈹傗攤
riid == __uuidof(ConnectionEventsVt)) *ppv = this;
if (*ppv == NULL)
return ResultFromScode(E_NOINTERFACE);
AddRef();
return NOERROR;
}
STDMETHODIMP_(ULONG) CConnEvent::AddRef() { return ++m_cRef; };
STDMETHODIMP_(ULONG) CConnEvent::Release()
{
if (0 != --m_cRef) return m_cRef;
delete this;
return 0;
}

銆銆(3). 寮濮嬪搷搴旈氱煡浜嬩歡

// Start using the Connection events
IConnectionPointContainer *pCPC = NULL;
IConnectionPoint *pCP = NULL;

hr = pConn.CreateInstance(__uuidof(Connection));
if (FAILED(hr)) return;

hr = pConn->QueryInterface(__uuidof(IConnectionPointContainer),
(void **)&pCPC);
if (FAILED(hr)) return;
hr = pCPC->FindConnectionPoint(__uuidof(ConnectionEvents), &pCP);
pCPC->Release();
if (FAILED(hr)) return;

pConnEvent = new CConnEvent();
hr = pConnEvent->QueryInterface(__uuidof(IUnknown), (void **) &pUnk);
if (FAILED(hr)) return rc;
hr = pCP->Advise(pUnk, &dwConnEvt);
pCP->Release();
if (FAILED(hr)) return;

pConn->Open("dsn=Pubs;", "sa", "", adConnectUnspecified);

銆銆涔熷氨鏄鍦ㄨ繛鎺?Open)涔嬪墠灝卞仛榪欎簺浜嬨?BR>
銆銆(4). 鍋滄鍝嶅簲閫氱煡浜嬩歡

pConn->Close();
// Stop using the Connection events
hr = pConn->QueryInterface(__uuidof(IConnectionPointContainer),
(void **) &pCPC);
if (FAILED(hr)) return;
hr = pCPC->FindConnectionPoint(__uuidof(ConnectionEvents), &pCP);
pCPC->Release();
if (FAILED(hr)) return rc;
hr = pCP->Unadvise( dwConnEvt );
pCP->Release();
if (FAILED(hr)) return;

銆銆鍦ㄨ繛鎺ュ叧闂箣鍚庡仛榪欎歡浜嬨?


]]>
_variant_t 鍒般CString 杞崲http://m.shnenglu.com/ivenher/articles/2289.html鐖遍キ鐩?/dc:creator>鐖遍キ鐩?/author>Fri, 30 Dec 2005 08:45:00 GMThttp://m.shnenglu.com/ivenher/articles/2289.htmlhttp://m.shnenglu.com/ivenher/comments/2289.htmlhttp://m.shnenglu.com/ivenher/articles/2289.html#Feedback3http://m.shnenglu.com/ivenher/comments/commentRss/2289.htmlhttp://m.shnenglu.com/ivenher/services/trackbacks/2289.html鏁版嵁綾誨瀷杞崲鍑芥暟

CString CZjyDlg::VariantToString(VARIANT var)

{

CString strValue;

         _variant_t var_t;

         _bstr_t bstr_t;

         time_t cur_time;

         CTime time_value;

         COleCurrency var_currency;

         switch(var.vt)

         {

         case VT_EMPTY:

         case VT_NULL:strValue=_T("");break;

         case VT_UI1:strValue.Format("%d",var.bVal);break;

         case VT_I2:strValue.Format("%d",var.iVal);break;

         case VT_I4:strValue.Format("%d",var.lVal);break;

         case VT_R4:strValue.Format("%f",var.fltVal);break;

         case VT_R8:strValue.Format("%f",var.dblVal);break;

         case VT_CY:

                   var_currency=var;

                   strValue=var_currency.Format(0);break;

         case VT_BSTR:

                   var_t =var;

                   bstr_t=var_t;

                   strValue.Format("%s",(const char *)bstr_t);break;

         case VT_DATE:

                   cur_time=var.date;

                   time_value=cur_time;

                   strValue.Format("%A,%B,%d,%Y");break;

         case VT_BOOL:strValue.Format("%d",var.boolVal);break;

         default:strValue=_T("");break;

         }

         return strValue;

}



]]>
ado 鍑洪敊澶勭悊http://m.shnenglu.com/ivenher/articles/2150.html鐖遍キ鐩?/dc:creator>鐖遍キ鐩?/author>Mon, 26 Dec 2005 12:13:00 GMThttp://m.shnenglu.com/ivenher/articles/2150.htmlhttp://m.shnenglu.com/ivenher/comments/2150.htmlhttp://m.shnenglu.com/ivenher/articles/2150.html#Feedback2http://m.shnenglu.com/ivenher/comments/commentRss/2150.htmlhttp://m.shnenglu.com/ivenher/services/trackbacks/2150.html3127鈥斺旀病鏈夋壘鍒扮洰鏍囪〃
3092鈥斺旂洰鏍囪〃宸茬粡瀛樺湪
渚嬪錛?BR>catch(const _com_error e)
{
     AfxMessageBox(e.Description());
     long errorCode=e.WCode();
     if(3127==errorCode) AfxMessageBox("琛ㄤ笉瀛樺湪");
     if(3092==errorCode) AfxMessageBox("琛ㄥ凡緇忓瓨鍦?);
     return FALSE;



]]>
鐢ˋDO鎿嶄綔鏁版嵁搴撶殑鏂規硶姝ラhttp://m.shnenglu.com/ivenher/articles/2149.html鐖遍キ鐩?/dc:creator>鐖遍キ鐩?/author>Mon, 26 Dec 2005 11:37:00 GMThttp://m.shnenglu.com/ivenher/articles/2149.htmlhttp://m.shnenglu.com/ivenher/comments/2149.htmlhttp://m.shnenglu.com/ivenher/articles/2149.html#Feedback0http://m.shnenglu.com/ivenher/comments/commentRss/2149.htmlhttp://m.shnenglu.com/ivenher/services/trackbacks/2149.html        
/***********************ADO鎺ュ彛綆浠?***********************************/
ADO搴撳寘鍚笁涓熀鏈帴鍙?_ConnectionPtr鎺ュ彛銆乢CommandPtr鎺ュ彛鍜宊RecordsetPtr鎺ュ彛銆?

_ConnectionPtr鎺ュ彛榪斿洖涓涓褰曢泦鎴栦竴涓┖鎸囬拡銆?BR>閫氬父浣跨敤瀹冩潵鍒涘緩涓涓暟鎹繛鎺ユ垨鎵ц涓鏉′笉榪斿洖浠諱綍緇撴灉鐨凷QL璇彞錛屽涓涓瓨鍌ㄨ繃紼嬨?BR>浣跨敤_ConnectionPtr鎺ュ彛榪斿洖涓涓褰曢泦涓嶆槸涓涓ソ鐨勪嬌鐢ㄦ柟娉曘?BR>閫氬父鍚孋database涓鏍鳳紝浣跨敤瀹冨垱寤轟竴涓暟鎹繛鎺ワ紝鐒跺悗浣跨敤鍏跺畠瀵硅薄鎵ц鏁版嵁杈撳叆杈撳嚭鎿嶄綔銆?BR>
_CommandPtr鎺ュ彛榪斿洖涓涓褰曢泦銆?BR>瀹冩彁渚涗簡涓縐嶇畝鍗曠殑鏂規硶鏉ユ墽琛岃繑鍥炶褰曢泦鐨勫瓨鍌ㄨ繃紼嬪拰SQL璇彞銆?BR>鍦ㄤ嬌鐢╛CommandPtr鎺ュ彛鏃訛紝浣犲彲浠ュ埄鐢ㄥ叏灞_ConnectionPtr鎺ュ彛錛屼篃鍙互鍦╛CommandPtr鎺ュ彛閲岀洿鎺ヤ嬌鐢ㄨ繛鎺ヤ覆銆?BR>濡傛灉浣犲彧鎵ц涓嬈℃垨鍑犳鏁版嵁璁塊棶鎿嶄綔錛屽悗鑰呮槸姣旇緝濂界殑閫夋嫨銆?BR>浣嗗鏋滀綘瑕侀綣佽闂暟鎹簱錛屽茍瑕佽繑鍥炲緢澶氳褰曢泦錛岄偅涔堬紝浣犲簲璇ヤ嬌鐢ㄥ叏灞_ConnectionPtr鎺ュ彛鍒涘緩涓涓暟鎹繛鎺ワ紝
鐒跺悗浣跨敤_CommandPtr鎺ュ彛鎵ц瀛樺偍榪囩▼鍜孲QL璇彞銆?BR>

_RecordsetPtr鏄竴涓褰曢泦瀵硅薄銆?BR>涓庝互涓婁袱縐嶅璞$浉姣旓紝瀹冨璁板綍闆嗘彁渚涗簡鏇村鐨勬帶鍒跺姛鑳斤紝濡傝褰曢攣瀹氾紝娓告爣鎺у埗絳?BR>銆傚悓_CommandPtr鎺ュ彛涓鏍鳳紝瀹冧笉涓瀹氳浣跨敤涓涓凡緇忓垱寤虹殑鏁版嵁榪炴帴錛?BR>鍙互鐢ㄤ竴涓繛鎺ヤ覆浠f浛榪炴帴鎸囬拡璧嬬粰_RecordsetPtr鐨刢onnection鎴愬憳鍙橀噺錛岃瀹冭嚜宸卞垱寤烘暟鎹繛鎺ャ?BR>濡傛灉浣犺浣跨敤澶氫釜璁板綍闆嗭紝鏈濂界殑鏂規硶鏄悓Command瀵硅薄涓鏍蜂嬌鐢ㄥ凡緇忓垱寤轟簡鏁版嵁榪炴帴鐨勫叏灞_ConnectionPtr鎺ュ彛
錛岀劧鍚庝嬌鐢╛RecordsetPtr鎵ц瀛樺偍榪囩▼鍜孲QL璇彞銆?BR>

/***********************鍩烘湰嫻佺▼***********************************/
(1)鍒濆鍖朇OM搴擄紝寮曞叆ADO搴撳畾涔夋枃浠?BR>(2)鐢–onnection瀵硅薄榪炴帴鏁版嵁搴?BR>(3)鍒╃敤寤虹珛濂界殑榪炴帴錛岄氳繃Connection銆丆ommand瀵硅薄鎵цSQL鍛戒護錛屾垨鍒╃敤Recordset瀵硅薄鍙栧緱緇撴灉璁?BR>   褰曢泦榪涜鏌ヨ銆佸鐞嗐?BR>(4)浣跨敤瀹屾瘯鍚庡叧闂繛鎺ラ噴鏀懼璞°?BR>


/***********************銆?銆慍OM搴撶殑鍒濆鍖?**********************************/
鎴戜滑鍙互浣跨敤AfxOleInit()鏉ュ垵濮嬪寲COM搴擄紝榪欓」宸ヤ綔閫氬父鍦–WinApp::InitInstance()鐨勯噸杞藉嚱鏁頒腑瀹?BR>鎴愶紝璇風湅濡備笅浠g爜:

BOOL CADOTest1App::InitInstance()
{
  AfxOleInit();
  ......
}


/*****************銆?銆戠敤#import鎸囦護寮曞叆ADO綾誨瀷搴?*********************/
鎴戜滑鍦╯tdafx.h涓姞鍏ュ涓嬭鍙ワ細
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
鍏舵渶緇堜綔鐢ㄥ悓鎴戜滑鐔熸倝鐨?include綾諱技,緙栬瘧鐨勬椂鍊欑郴緇熶細涓烘垜浠敓鎴恗sado15.tlh,ado15.tli涓や釜C++澶存枃浠舵潵瀹氫箟ADO搴撱?BR>


/***************銆?銆戝垱寤篊onnection瀵硅薄騫惰繛鎺ユ暟鎹簱********************/

棣栧厛鎴戜滑闇瑕佹坊鍔犱竴涓寚鍚慍onnection瀵硅薄鐨勬寚閽?

_ConnectionPtr m_pConnection;

BOOL CADOTest1Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
try
{
  HRESULT hr = m_pConnection.CreateInstance("ADODB.Connection");//鍒涘緩Connection瀵硅薄
  if(SUCCEEDED(hr))
  {
   hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb","","",adModeUnknown);//榪炴帴鏁版嵁搴?BR>   //涓婇潰涓鍙ヤ腑榪炴帴瀛椾覆涓殑Provider鏄拡瀵笰CCESS2000鐜鐨勶紝瀵逛簬ACCESS97,闇瑕佹敼涓?Provider=Microsoft.Jet.OLEDB.3.51;  }
  }
}
catch (_com_error e) //COM閿欒鍙栧緱,褰撴墽琛孋OM鍔熻兘鐨勬椂鍊欙紝濡傛灉鍑洪敊錛屽彲浠ユ崟鎹夊埌_com_error鐨勫紓甯?BR>{  
  CString strComError;
  strComError.Format("閿欒緙栧彿: %08lx\n閿欒淇℃伅: %s\n閿欒婧? %s\n閿欒鎻忚堪: %s",
       e.Error(),                  // 閿欒緙栧彿
       e.ErrorMessage(),           // 閿欒淇℃伅
       (LPCSTR) e.Source(),        // 閿欒婧?BR>       (LPCSTR) e.Description());  // 閿欒鎻忚堪
      
  
  ::MessageBox(NULL,strComError,"閿欒",MB_ICONEXCLAMATION);
}
}
涔熷彲浠ヤ嬌鐢║DL鏂囦歡榪涜榪炴帴銆?BR>try
{  
m_pConnection.CreateInstance(__uuidof(Connection));  
m_pConnection->ConnectionString ="File Name=e.udl";
m_pConnection->Open("","","",NULL);
}
catch(_com_error e)
{....}

鈼嗗湪榪欐浠g爜涓垜浠槸閫氳繃Connection瀵硅薄鐨凮pen鏂規硶鏉ヨ繘琛岃繛鎺ユ暟鎹簱鐨勶紝涓嬮潰鏄鏂規硶鐨勫師鍨?BR>
HRESULT Connection15::Open (_bstr_t ConnectionString, _bstr_t UserID, _bstr_t Password, long Options )

ConnectionString 涓鴻繛鎺ュ瓧涓?
UserID    鏄敤鎴峰悕,
Password   鏄櫥闄嗗瘑鐮?
Options    鏄繛鎺ラ夐」,鐢ㄤ簬鎸囧畾Connection瀵硅薄瀵規暟鎹殑鏇存柊璁稿彲鏉?
     Options鍙互鏄涓嬪嚑涓父閲?

  adModeUnknown:   緙虹渷銆傚綋鍓嶇殑璁稿彲鏉冩湭璁劇疆
  adModeRead:    鍙
  adModeWrite:   鍙啓
  adModeReadWrite:  鍙互璇誨啓
  adModeShareDenyRead: 闃繪鍏跺畠Connection瀵硅薄浠ヨ鏉冮檺鎵撳紑榪炴帴
  adModeShareDenyWrite: 闃繪鍏跺畠Connection瀵硅薄浠ュ啓鏉冮檺鎵撳紑榪炴帴
  adModeShareExclusive: 闃繪鍏跺畠Connection瀵硅薄鎵撳紑榪炴帴
  adModeShareDenyNone: 鍏佽鍏跺畠紼嬪簭鎴栧璞′互浠諱綍鏉冮檺寤虹珛榪炴帴


鈼嗗父鐢ㄧ殑鏁版嵁搴撹繛鎺ユ柟娉曪細

(1)閫氳繃JET鏁版嵁搴撳紩鎿庡ACCESS2000鏁版嵁搴撶殑榪炴帴
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\test.mdb","","",adModeUnknown);

(2)閫氳繃DSN鏁版嵁婧愬浠諱綍鏀寔ODBC鐨勬暟鎹簱榪涜榪炴帴:
m_pConnection->Open("Data Source=adotest;UID=sa;PWD=;","","",adModeUnknown);
//m_pConnection->Open("DSN=test;","","",0);   //榪炴帴鍙綔test鐨凮DBC鏁版嵁婧?

(3)涓嶉氳繃DSN瀵筍QL SERVER鏁版嵁搴撹繘琛岃繛鎺ワ細
m_pConnection->Open("driver={SQL Server};Server=127.0.0.1;DATABASE=vckbase;UID=sa;PWD=139","","",adModeUnknown);
鍏朵腑Server鏄疭QL鏈嶅姟鍣ㄧ殑鍚嶇О錛孌ATABASE鏄簱鐨勫悕縐?BR>
鈼嗗厛浠嬬粛Connection瀵硅薄涓袱涓湁鐢ㄧ殑灞炴onnectionTimeOut涓嶴tate
ConnectionTimeOut鐢ㄦ潵璁劇疆榪炴帴鐨勮秴鏃舵椂闂達紝闇瑕佸湪Open涔嬪墠璋冪敤錛屼緥濡?
  m_pConnection->ConnectionTimeout = 5; //璁劇疆瓚呮椂鏃墮棿涓?縐?BR>  m_pConnection->Open("Data Source=adotest;","","",adModeUnknown);

State灞炴ф寚鏄庡綋鍓岰onnection瀵硅薄鐨勭姸鎬侊紝0琛ㄧず鍏抽棴錛?琛ㄧず宸茬粡鎵撳紑錛屾垜浠彲浠ラ氳繃
璇誨彇榪欎釜灞炴ф潵浣滅浉搴旂殑澶勭悊錛屼緥濡?
if(m_pConnection->State)
  m_pConnection->Close(); //濡傛灉宸茬粡鎵撳紑浜嗚繛鎺ュ垯鍏抽棴瀹?BR>



4銆?*****************鎵цSQL鍛戒護騫跺彇寰楃粨鏋滆褰曢泦****************/

涓轟簡鍙栧緱緇撴灉璁板綍闆嗭紝鎴戜滑瀹氫箟涓涓寚鍚慠ecordset瀵硅薄鐨勬寚閽?
        _RecordsetPtr m_pRecordset;
騫朵負鍏跺垱寤篟ecordset瀵硅薄鐨勫疄渚?  
        m_pRecordset.CreateInstance("ADODB.Recordset");

SQL鍛戒護鐨勬墽琛屽彲浠ラ噰鐢ㄥ縐嶅艦寮忥紝涓嬮潰鎴戜滑涓榪涜闃愯堪銆?BR>
鈼?1)鍒╃敤Connection瀵硅薄鐨凟xecute鏂規硶鎵цSQL鍛戒護
Execute鏂規硶鐨勫師鍨嬪涓嬫墍紺?

_RecordsetPtr Connection15::Execute (_bstr_t CommandText, VARIANT * RecordsAffected, long Options )
鍏朵腑
  CommandText   鏄懡浠ゅ瓧涓詫紝閫氬父鏄疭QL鍛戒護銆?BR>  RecordsAffected  鏄搷浣滃畬鎴愬悗鎵褰卞搷鐨勮鏁?
  Options    琛ㄧずCommandText涓唴瀹圭殑綾誨瀷錛孫ptions鍙互鍙栧涓嬪間箣涓錛?BR>       adCmdText:  琛ㄦ槑CommandText鏄枃鏈懡浠?BR>       adCmdTable:  琛ㄦ槑CommandText鏄竴涓〃鍚?BR>       adCmdProc:  琛ㄦ槑CommandText鏄竴涓瓨鍌ㄨ繃紼?BR>       adCmdUnknown: 鏈煡

Execute鎵ц瀹屽悗榪斿洖涓涓寚鍚戣褰曢泦鐨勬寚閽堬紝涓嬮潰鎴戜滑緇欏嚭鍏蜂綋浠g爜騫朵綔璇存槑銆?nbsp; 
try
{
_variant_t ra;

m_pConnection->Execute("CREATE TABLE 瀛︾敓淇℃伅(瀛﹀彿 INTEGER,濮撳悕 TEXT,騫撮緞 INTEGER,鐢熸棩 DATETIME)",&ra,adCmdText);
m_pConnection->Execute("INSERT INTO 瀛︾敓淇℃伅(瀛﹀彿,濮撳悕,騫撮緞,鐢熸棩) VALUES (112105, '紼嬬孩縐',22,'1982-08-16')",&ra,adCmdText);//寰琛ㄦ牸閲岄潰娣誨姞璁板綍
m_pRecordset = m_pConnection->Execute("SELECT COUNT(*) FROM 瀛︾敓淇℃伅",&ra,adCmdText);   //鎵цSQL緇熻鍛戒護寰楀埌鍖呭惈璁板綍鏉℃暟鐨勮褰曢泦

_variant_t vCount = m_pRecordset->GetCollect((_variant_t)(long)(0)); //鍙栧緱絎竴涓瓧孌電殑鍊兼斁鍏Count鍙橀噺

m_pRecordset->Close();
CString message;
message.Format("鍏辨湁%d鏉¤褰?,vCount.lVal);
AfxMessageBox(message);  
}

catch (_com_error e)
{ ...}



鈼?2)鍒╃敤 Command瀵硅薄 鏉ユ墽琛孲QL鍛戒護
try
{
  _CommandPtr m_pCommand;
  m_pCommand.CreateInstance("ADODB.Command");
  
  m_pCommand->ActiveConnection = m_pConnection; //鍏抽敭鐨勪竴鍙ワ紝灝嗗緩绔嬬殑榪炴帴璧嬪肩粰瀹?BR>
  m_pCommand->CommandText="INSERT INTO 瀛︾敓淇℃伅(瀛﹀彿,濮撳悕,騫撮緞,鐢熸棩) VALUES (112105, '紼嬬孩縐',22,'1982-08-16')";
  m_pCommand->Execute(NULL,NULL,adCmdText);

  m_pCommand->CommandText="SELECT COUNT(*) FROM 瀛︾敓淇℃伅";
  m_pRecordset=m_pCommand->Execute(NULL,NULL,adCmdText);

  _variant_t vCount = m_pRecordset->GetCollect((_variant_t)(long)0); //鍙栧緱絎竴涓瓧孌電殑鍊?BR>  
  CString str;
  str.Format("鍏辨湁%d鏉¤褰?,vCount.lVal);
  AfxMessageBox(str);  

  m_pRecordset->Close();

}
catch (_com_error e) {...}

鍦ㄨ繖孌典唬鐮佷腑鎴戜滑鍙槸鐢–ommand瀵硅薄鏉ユ墽琛屼簡SELECT鏌ヨ璇彞錛?BR>Command瀵硅薄鍦ㄨ繘琛屽瓨鍌ㄨ繃紼嬬殑璋冪敤涓兘鐪熸浣撶幇瀹冪殑浣滅敤銆備笅嬈℃垜浠皢璇︾粏浠嬬粛銆?


鈼?3)鐩存帴鐢≧ecordset瀵硅薄榪涜鏌ヨ鍙栧緱璁板綍闆?
渚嬪
  m_pRecordset->Open("SELECT * FROM 瀛︾敓淇℃伅",_variant_t((IDispatch *)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

Open鏂規硶鐨勫師鍨嬫槸榪欐牱鐨?
HRESULT Recordset15::Open ( const _variant_t & Source, const _variant_t & ActiveConnection, enum CursorTypeEnum CursorType, enum LockTypeEnum LockType, long Options )
鍏朵腑錛?BR>鈶燬ource鏄暟鎹煡璇㈠瓧絎︿覆
鈶ctiveConnection鏄凡緇忓緩绔嬪ソ鐨勮繛鎺ワ紙鎴戜滑闇瑕佺敤Connection瀵硅薄鎸囬拡鏉ユ瀯閫犱竴涓猒variant_t瀵硅薄)
鈶ursorType鍏夋爣綾誨瀷錛屽畠鍙互鏄互涓嬪間箣涓,璇風湅榪欎釜鏋氫婦緇撴瀯:
   enum CursorTypeEnum
   {
    adOpenUnspecified = -1, //涓嶄綔鐗瑰埆鎸囧畾
    adOpenForwardOnly = 0, //鍓嶆粴闈欐佸厜鏍囥傝繖縐嶅厜鏍囧彧鑳藉悜鍓嶆祻瑙堣褰曢泦錛屾瘮濡傜敤MoveNext鍚戝墠婊氬姩,榪欑鏂瑰紡鍙互鎻愰珮嫻忚閫熷害銆備絾璇稿BookMark,RecordCount,AbsolutePosition,AbsolutePage閮戒笉鑳戒嬌鐢?BR>    adOpenKeyset = 1,  //閲囩敤榪欑鍏夋爣鐨勮褰曢泦鐪嬩笉鍒板叾瀹冪敤鎴風殑鏂板銆佸垹闄ゆ搷浣滐紝浣嗗浜庢洿鏂板師鏈夎褰曠殑鎿嶄綔瀵逛綘鏄彲瑙佺殑銆?BR>    adOpenDynamic = 2,  //鍔ㄦ佸厜鏍囥傛墍鏈夋暟鎹簱鐨勬搷浣滈兘浼氱珛鍗沖湪鍚勭敤鎴瘋褰曢泦涓婂弽搴斿嚭鏉ャ?BR>    adOpenStatic = 3  //闈欐佸厜鏍囥傚畠涓轟綘鐨勮褰曢泦浜х敓涓涓潤鎬佸浠斤紝浣嗗叾瀹冪敤鎴風殑鏂板銆佸垹闄ゃ佹洿鏂版搷浣滃浣犵殑璁板綍闆嗘潵璇存槸涓嶅彲瑙佺殑銆?BR>   };
鈶ockType閿佸畾綾誨瀷錛屽畠鍙互鏄互涓嬪間箣涓錛岃鐪嬪涓嬫灇涓劇粨鏋勶細
   enum LockTypeEnum
   {
    adLockUnspecified = -1,  //鏈寚瀹?BR>    adLockReadOnly = 1,   //鍙璁板綍闆?BR>    adLockPessimistic = 2,  //鎮茶閿佸畾鏂瑰紡銆傛暟鎹湪鏇存柊鏃墮攣瀹氬叾瀹冩墍鏈夊姩浣滐紝榪欐槸鏈瀹夊叏鐨勯攣瀹氭満鍒?BR>    adLockOptimistic = 3,  //涔愯閿佸畾鏂瑰紡銆傚彧鏈夊湪浣犺皟鐢║pdate鏂規硶鏃舵墠閿佸畾璁板綍銆傚湪姝や箣鍓嶄粛鐒跺彲浠ュ仛鏁版嵁鐨勬洿鏂般佹彃鍏ャ佸垹闄ょ瓑鍔ㄤ綔
    adLockBatchOptimistic = 4錛?//涔愯鍒嗘壒鏇存柊銆傜紪杈戞椂璁板綍涓嶄細閿佸畾錛屾洿鏀廣佹彃鍏ュ強鍒犻櫎鏄湪鎵瑰鐞嗘ā寮忎笅瀹屾垚銆?BR>   };
鈶ptions璇峰弬鑰冩湰鏂囦腑瀵笴onnection瀵硅薄鐨凟xecute鏂規硶鐨勪粙緇?BR>



/***********************銆?銆戣褰曢泦鐨勯亶鍘嗐佹洿鏂?************************/

鏍規嵁鎴戜滑鍒氭墠閫氳繃鎵цSQL鍛戒護寤虹珛濂界殑 瀛︾敓淇℃伅 琛紝瀹冨寘鍚洓涓瓧孌?瀛﹀彿錛屽鍚嶏紝騫撮緞錛岀敓鏃?BR>浠ヤ笅鐨勪唬鐮佸疄鐜幫細鎵撳紑璁板綍闆嗭紝閬嶅巻鎵鏈夎褰曪紝鍒犻櫎絎竴鏉¤褰曪紝娣誨姞涓夋潯璁板綍錛岀Щ鍔ㄥ厜鏍囧埌絎簩鏉?BR>璁板綍錛屾洿鏀瑰叾騫撮緞錛屼繚瀛樺埌鏁版嵁搴撱?BR>
try
{
  _variant_t vUsername,vBirthday,vID,vOld;
  _RecordsetPtr m_pRecordset;
  
  m_pRecordset.CreateInstance("ADODB.Recordset");
  m_pRecordset->Open("SELECT * FROM 瀛︾敓淇℃伅",_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
  
  while(!m_pRecordset->adoEOF)
  {
   vID = m_pRecordset->GetCollect(_variant_t((long)0));    //鍙栧緱絎?鍒楃殑鍊?浠?寮濮嬭鏁幫紝浣犱篃鍙互鐩存帴緇欏嚭鍒楃殑鍚嶇О錛屽涓嬩竴琛?BR>   vUsername = m_pRecordset->GetCollect("濮撳悕");  //鍙栧緱濮撳悕瀛楁鐨勫?BR>   vOld = m_pRecordset->GetCollect("騫撮緞");
   vBirthday = m_pRecordset->GetCollect("鐢熸棩");
  
   TRACE("id:%d,濮撳悕:%s,騫撮緞:%d,鐢熸棩:%s\r\n",
    vID.lVal,
    (LPCTSTR)(_bstr_t)vUsername,
    vOld.lVal,
    (LPCTSTR)(_bstr_t)vBirthday);  //鍦―EBUG鏂瑰紡涓嬬殑OUTPUT紿楀彛杈撳嚭璁板綍闆嗕腑鐨勮褰?BR>
   m_pRecordset->MoveNext();    //縐誨埌涓嬩竴鏉¤褰?BR>  }
  
  m_pRecordset->MoveFirst();    //縐誨埌棣栨潯璁板綍
  m_pRecordset->Delete(adAffectCurrent);    //鍒犻櫎褰撳墠璁板綍
  
  
  for(int i=0;i<3;i++)    //娣誨姞涓夋潯鏂拌褰曞茍璧嬪?BR>  {
   m_pRecordset->AddNew();    //娣誨姞鏂拌褰?BR>   m_pRecordset->PutCollect("瀛﹀彿",_variant_t((long)(i+10)));
   m_pRecordset->PutCollect("濮撳悕",_variant_t("鐜嬫枌騫?));
   m_pRecordset->PutCollect("騫撮緞",_variant_t((long)21));
   m_pRecordset->PutCollect("鐢熸棩",_variant_t("1930-3-15"));
  }
  
  m_pRecordset->Move(1,_variant_t((long)adBookmarkFirst));    //浠庣涓鏉¤褰曞線涓嬬Щ鍔ㄤ竴鏉¤褰?鍗崇Щ鍔ㄥ埌絎簩鏉¤褰曞
  m_pRecordset->PutCollect(_variant_t("騫撮緞"),_variant_t((long)45));    //淇敼鍏跺勾榫?BR>  m_pRecordset->Update();    //淇濆瓨鍒板簱涓?BR>  
} catch (_com_error e){}



/***********************銆?銆戝叧闂褰曢泦涓庤繛鎺?*************************/
璁板綍闆嗘垨榪炴帴閮藉彲浠ョ敤Close鏂規硶鏉ュ叧闂?nbsp;     
m_pRecordset->Close(); //鍏抽棴璁板綍闆?nbsp; 
m_pConnection->Close(); //鍏抽棴榪炴帴




鍦╯tdafx.h涓繘琛屽畯瀹氫箟:
#if !defined CATCH_ERROR
#define CATCH_ERROR           \
  {             \
   CString strComError;       \
   strComError.Format("閿欒緙栧彿: %08lx\n閿欒淇℃伅: %s\n閿欒婧? %s\n閿欒鎻忚堪: %s", \
        e.Error(),                  \
        e.ErrorMessage(),           \
        (LPCSTR) e.Source(),        \
        (LPCSTR) e.Description());  \
   ::MessageBox(NULL,strComError,"閿欒",MB_ICONEXCLAMATION); \
  }
#endif
浣跨敤鏂規硶錛?BR>try
{  ...}
catch(_com_error e)
{
CATCH_ERROR;
}


]]>
ADO鏁版嵁搴撶紪紼嬪叆闂?/title><link>http://m.shnenglu.com/ivenher/articles/1773.html</link><dc:creator>鐖遍キ鐩?/dc:creator><author>鐖遍キ鐩?/author><pubDate>Thu, 15 Dec 2005 03:03:00 GMT</pubDate><guid>http://m.shnenglu.com/ivenher/articles/1773.html</guid><wfw:comment>http://m.shnenglu.com/ivenher/comments/1773.html</wfw:comment><comments>http://m.shnenglu.com/ivenher/articles/1773.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/ivenher/comments/commentRss/1773.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ivenher/services/trackbacks/1773.html</trackback:ping><description><![CDATA[ADO 鏄洰鍓嶅湪Windows鐜涓瘮杈冩祦琛岀殑瀹㈡埛绔暟鎹簱緙栫▼鎶鏈侫DO鏄緩绔嬪湪OLE DB搴曞眰鎶鏈箣涓婄殑楂樼駭緙栫▼鎺ュ彛錛屽洜鑰屽畠鍏煎叿鏈夊己澶х殑鏁版嵁澶勭悊鍔熻兘錛堝鐞嗗悇縐嶄笉鍚岀被鍨嬬殑鏁版嵁婧愩佸垎甯冨紡鐨勬暟鎹鐞嗙瓑絳夛級鍜屾瀬鍏剁畝鍗曘佹槗鐢ㄧ殑緙栫▼鎺ュ彛錛屽洜鑰屽緱鍒頒簡騫挎硾鐨勫簲鐢ㄣ傝屼笖鎸夊井杞叕鍙哥殑鎰忓浘錛孫LE DB鍜孉DO灝嗛愭鍙栦唬 ODBC鍜孌AO銆傜幇鍦ㄤ粙緇岮DO鍚勭搴旂敤鐨勬枃绔犲拰涔︾睄鏈夊緢澶氾紝鏈枃鐫閲嶇珯鍦ㄥ垵瀛﹁呯殑瑙掑害錛岀畝瑕佹帰璁ㄤ竴涓嬪湪VC++涓嬌鐢ˋDO緙栫▼鏃剁殑涓浜涢棶棰樸傛垜浠笇鏈涢槄璇繪湰鏂囦箣鍓嶏紝鎮ㄥADO鎶鏈殑鍩烘湰鍘熺悊鏈変竴浜涗簡瑙c?BR>涓銆佸湪VC++涓嬌鐢ˋDO緙栫▼<BR>ADO瀹為檯涓婂氨鏄敱涓緇凙utomation瀵硅薄鏋勬垚鐨勭粍浠訛紝鍥犳鍙互璞′嬌鐢ㄥ叾瀹冧換浣旳utomation瀵硅薄涓鏍蜂嬌鐢ˋDO銆侫DO涓渶閲嶈鐨勫璞℃湁涓変釜錛欳onnection銆丆ommand鍜孯ecordset錛屽畠浠垎鍒〃紺鴻繛鎺ュ璞°佸懡浠ゅ璞″拰璁板綍闆嗗璞°傚鏋滄偍鐔熸倝浣跨敤MFC涓殑ODBC綾伙紙CDatabase銆丆Recordset)緙栫▼錛岄偅涔堝涔燗DO緙栫▼灝卞崄鍒嗗鏄撲簡銆?BR>浣跨敤ADO緙栫▼鏃跺彲浠ラ噰鐢ㄤ互涓嬩笁縐嶆柟娉曚箣涓錛?BR>1銆佷嬌鐢ㄩ澶勭悊鎸囦護#import<BR>#import "C:\Program Files\Common Files\System\ADO\msado15.dll" \<BR>   no_namespace rename("EOF", "EndOfFile")<BR>浣嗚娉ㄦ剰涓嶈兘鏀懼湪stdAfx.h鏂囦歡鐨勫紑澶達紝鑰屽簲璇ユ斁鍦ㄦ墍鏈塱nclude鎸囦護鐨勫悗闈€傚惁鍒欏湪緙栬瘧鏃朵細鍑洪敊銆?BR>紼嬪簭鍦ㄧ紪璇戣繃紼嬩腑錛孷C++浼氳鍑簃sado15.dll涓殑綾誨瀷搴撲俊鎭紝鑷姩浜х敓涓や釜璇ョ被鍨嬪簱鐨勫ご鏂囦歡鍜屽疄鐜版枃浠秏sado15.tlh鍜宮sado15.tli錛堝湪鎮ㄧ殑Debug鎴朢elease鐩綍涓嬶級銆傚湪榪欎袱涓枃浠墮噷瀹氫箟浜咥DO鐨勬墍鏈夊璞″拰鏂規硶錛屼互鍙婁竴浜涙灇涓懼瀷鐨勫父閲忕瓑銆傛垜浠殑紼嬪簭鍙鐩存帴璋冪敤榪欎簺鏂規硶灝辮浜嗭紝涓庝嬌鐢∕FC涓殑COleDispatchDriver綾昏皟鐢ˋutomation瀵硅薄鍗佸垎綾諱技銆?BR>2銆佷嬌鐢∕FC涓殑CIDispatchDriver<BR>灝辨槸閫氳繃璇誨彇msado15.dll涓殑綾誨瀷搴撲俊鎭紝寤虹珛涓涓狢OleDispatchDriver綾葷殑媧劇敓綾伙紝鐒跺悗閫氳繃瀹冭皟鐢ˋDO瀵硅薄銆?BR>3銆佺洿鎺ョ敤COM鎻愪緵鐨凙PI<BR> 濡備嬌鐢ㄥ涓嬩唬鐮侊細<BR> CLSID clsid;<BR> HRESULT hr = ::CLSIDFromProgID(L"ADODB.Connection", &clsid);<BR> if(FAILED(hr))<BR> {...}<BR> ::CoCreateInstance(clsid, NULL, CLSCTX_SERVER, IID_IDispatch, (void **)<BR>      &pDispatch);<BR> if(FAILED(hr))<BR> {...}<BR>浠ヤ笂涓夌鏂規硶錛岀涓鍜岀浜岀綾諱技錛屽彲鑳界涓縐嶅ソ鐢ㄤ竴浜涳紝絎笁縐嶇紪紼嬪彲鑳芥渶楹葷儲銆備絾鍙兘絎笁縐嶆柟娉曚篃鏄晥鐜囨渶楂樼殑錛岀▼搴忕殑灝哄涔熸渶灝忥紝騫朵笖瀵笰DO鐨勬帶鍒惰兘鍔涗篃鏈寮恒?BR>鎹井杞祫鏂欎粙緇嶏紝絎竴縐嶆柟娉曚笉鏀寔鏂規硶璋冪敤涓殑榛樿鍙傛暟錛屽綋鐒剁浜岀鏂規硶涔熸槸榪欐牱錛屼絾絎笁縐嶅氨涓嶆槸榪欐牱浜嗐傞噰鐢ㄧ涓夌鏂規硶鐨勬按騫充篃鏈楂樸傚綋浣犻渶瑕佺粫榪嘇DO鑰岀洿鎺ヨ皟鐢∣LE DB搴曞眰鐨勬柟娉曟椂錛屽氨涓瀹氳浣跨敤絎笁縐嶆柟娉曚簡銆?BR>ADO緙栫▼鐨勫叧閿紝灝辨槸鐔熺粌鍦拌繍鐢ˋDO鎻愪緵鐨勫悇縐嶅璞?object)銆佹柟娉?method)銆佸睘鎬?property)鍜屽鍣紙collection錛夈傚彟澶栵紝濡傛灉鏄湪MS SQL鎴朞racle絳夊ぇ鍨嬫暟鎹簱涓婄紪紼嬶紝榪樿鑳界啛緇冧嬌鐢⊿QL璇█銆?BR>浜屻佷嬌鐢?import鏂規硶鐨勭紪紼嬫楠?BR>榪欓噷寤鴻鎮ㄤ嬌鐢?import鐨勬柟娉曪紝鍥犱負瀹冩槗瀛︺佹槗鐢紝浠g爜涔熸瘮杈冪畝媧併?BR>1銆?娣誨姞#import鎸囦護<BR>鎵撳紑stdafx.h鏂囦歡錛屽皢涓嬪垪鍐呭娣誨姞鍒版墍鏈夌殑include鎸囦護涔嬪悗錛?BR>#include <icrsint.h>   //Include support for VC++ Extensions<BR>#import "C:\Program Files\Common Files\System\ADO\msado15.dll" \<BR>   no_namespace rename("EOF", "adoEOF")<BR>鍏朵腑icrsint.h鏂囦歡鍖呭惈浜哣C++鎵╁睍鐨勪竴浜涢澶勭悊鎸囦護銆佸畯絳夌殑瀹氫箟錛岀敤浜嶤OM緙栫▼鏃朵嬌鐢ㄣ?BR>2銆佸畾涔塤ConnectionPtr鍨嬪彉閲忥紝騫跺緩绔嬫暟鎹簱榪炴帴<BR>寤虹珛浜嗕笌鏁版嵁搴撴湇鍔″櫒鐨勮繛鎺ュ悗錛屾墠鑳借繘琛屽叾浠栨湁鍏蟲暟鎹簱鐨勮闂拰鎿嶄綔銆侫DO浣跨敤Connection瀵硅薄鏉ュ緩绔嬩笌鏁版嵁搴撴湇鍔″櫒鐨勮繛鎺ワ紝鎵浠ュ畠鐩稿綋浜嶮FC涓殑CDatabase綾匯傚拰CDatabase綾諱竴鏍鳳紝璋冪敤Connection瀵硅薄鐨凮pen鏂規硶鍗沖彲寤虹珛涓庢湇鍔″櫒鐨勮繛鎺ャ?BR>鏁版嵁綾誨瀷 _ConnectionPtr瀹為檯涓婂氨鏄敱綾繪ā鏉縚com_ptr_t鑰屽緱鍒扮殑涓涓叿浣撶殑瀹炰緥綾伙紝鍏跺畾涔夊彲浠ュ埌msado15.tlh銆乧omdef.h 鍜宑omip.h榪欎笁涓枃浠朵腑鎵懼埌銆傚湪msado15.tlh涓湁錛?BR>_COM_SMARTPTR_TYPEDEF(_Collection, __uuidof(_Collection));<BR>緇忓畯鎵╁睍鍚庡氨寰楀埌浜哶ConnectionPtr綾匯俖ConnectionPtr綾誨皝瑁呬簡Connection瀵硅薄鐨処dispatch鎺ュ彛鎸囬拡錛屽強涓浜涘繀瑕佺殑鎿嶄綔銆傛垜浠氨鏄氳繃榪欎釜鎸囬拡鏉ユ搷綰礐onnection瀵硅薄銆傜被浼煎湴錛屽悗闈㈢敤鍒扮殑_CommandPtr鍜宊RecordsetPtr綾誨瀷涔熸槸榪欐牱寰楀埌鐨勶紝瀹冧滑鍒嗗埆琛ㄧず鍛戒護瀵硅薄鎸囬拡鍜岃褰曢泦瀵硅薄鐨勬寚閽堛?BR>錛?錛夈佽繛鎺ュ埌MS SQL Server<BR>娉ㄦ剰榪炴帴瀛楃涓茬殑鏍煎紡錛屾彁渚涙紜殑榪炴帴瀛楃涓叉槸鎴愬姛榪炴帴鍒版暟鎹簱鏈嶅姟鍣ㄧ殑絎竴姝ワ紝鏈夊叧榪炴帴瀛楃涓茬殑璇︾粏淇℃伅鍙傝寰蔣MSDN Library鍏夌洏銆?BR>鏈緥榪炴帴瀛楃涓蹭腑鐨剆erver_name錛宒atabase_name錛寀ser_name鍜宲assword鍦ㄧ紪紼嬫椂閮藉簲璇ユ浛鎹㈡垚瀹為檯鐨勫唴瀹廣?BR> _ConnectionPtr pMyConnect=NULL;<BR> HRESULT hr=pMyConnect.CreateInstance(__uuidof(Connection)));<BR> if(FAILED(hr))return;<BR>_bstr_t strConnect="Provider=SQLOLEDB; Server=server_name;"<BR>  "Database=database_name; uid=user_name; pwd=password;"; <BR>//connecting to the database server now:<BR> try{pMyConnect->Open(strConnect,"","",NULL);}<BR> catch (_com_error &e)<BR> {<BR>  ::MessageBox(NULL,e.Description(),"璀﹀憡",MB_OK | MB_ICONWARNING);<BR> }<BR><BR>娉ㄦ剰Connection瀵硅薄鐨凮pen鏂規硶涓殑榪炴帴瀛楃涓插弬鏁板繀欏繪槸BSTR鎴朹bstr_t綾誨瀷銆傚彟澶栵紝鏈緥鏄洿鎺ラ氳繃OLE DB Provider寤虹珛榪炴帴錛屾墍浠ユ棤闇寤虹珛鏁版嵁婧愩?BR>錛?錛夈侀氳繃ODBC Driver榪炴帴鍒癉atabase Server<BR>榪炴帴瀛楃涓叉牸寮忎笌鐩存帴鐢∣DBC緙栫▼鏃剁殑宸笉澶氾細<BR>_bstr_t strConnect="DSN=datasource_name; Database=database_name; uid=user_name; pwd=password;";<BR>姝ゆ椂涓嶰DBC緙栫▼涓鏍鳳紝蹇呴』鍏堝緩绔嬫暟鎹簮銆?BR>3銆佸畾涔塤RecordsetPtr鍨嬪彉閲忥紝騫舵墦寮鏁版嵁闆?BR>瀹氫箟_RecordsetPtr鍨嬪彉閲忥紝鐒跺悗閫氳繃瀹冭皟鐢≧ecordset瀵硅薄鐨凮pen鏂規硶錛屽嵆鍙墦寮涓涓暟鎹泦銆傛墍浠ecordset瀵硅薄涓嶮FC涓殑CRecordset綾葷被浼鹼紝瀹冧篃鏈夊綋鍓嶈褰曘佸綋鍓嶈褰曟寚閽堢殑姒傚康銆傚錛?BR> _RecordsetPtr m_pRecordset;<BR> if(!FAILED(m_pRecordset.CreateInstance( __uuidof( Recordset )))<BR> {<BR>  m_pDoc->m_initialized=FALSE;<BR>  return;<BR> }<BR>try{<BR>  m_pRecordset->Open(_variant_t("mytable"),<BR>            _variant_t((IDispatch *)pMyConnect,true), adOpenKeyset,<BR>            adLockOptimistic, adCmdTable);<BR> }<BR> catch (_com_error &e)<BR> {<BR>  ::MessageBox(NULL,"鏃犳硶鎵撳紑mytable琛ㄣ?,"鎻愮ず",<BR>MB_OK | MB_ICONWARNING);<BR> }<BR>Recordset瀵硅薄鐨凮pen鏂規硶闈炲父閲嶈錛屽畠鐨勭涓涓弬鏁板彲浠ユ槸涓涓猄QL璇彞銆佷竴涓〃鐨勫悕瀛楁垨涓涓懡浠ゅ璞$瓑絳夛紱絎簩涓弬鏁板氨鏄墠闈㈠緩绔嬬殑榪炴帴瀵硅薄鐨勬寚閽堛傛澶栵紝鐢–onnection鍜孋ommand瀵硅薄鐨凟xecute鏂規硶涔熻兘寰楀埌璁板綍闆嗭紝浣嗘槸鍙鐨勩?BR>4銆佽鍙栧綋鍓嶈褰曠殑鏁版嵁<BR>鎴戣涓鴻鍙栨暟鎹殑鏈鏂逛究鐨勬柟娉曞涓嬶細<BR> try{<BR>  m_pRecordset->MoveFirst();   <BR>  while(m_pRecordset->adoEOF==VARIANT_FALSE) <BR>  {<BR>   //Retrieve column's value: <BR>   CString sName=(char*)(_bstr_t)(m_pRecordset->Fields->GetItem<BR>    (_variant_t("name"))->Value);<BR>   short cAge=(short)(m_pRecordset->Fields->GetItem<BR>    (_variant_t("age"))->Value);<BR>   //Do something what you want to do:<BR>   ......<BR>   m_pRecordset->MoveNext();   <BR>  }<BR> }//try<BR> catch (_com_error &e)<BR> {<BR>  CString str=(char*)e.Description();<BR>  ::MessageBox(NULL,str+"\n鍙堝嚭姣涚梾浜嗐?,"鎻愮ず",<BR>MB_OK | MB_ICONWARNING);<BR> }<BR> <P>鏈緥涓殑name鍜宎ge閮芥槸瀛楁鍚嶏紝璇誨彇鐨勫瓧孌靛煎垎鍒繚瀛樺湪sName鍜宑Age鍙橀噺鍐呫備緥涓殑Fields鏄疪ecordset瀵硅薄鐨勫鍣紝GetItem鏂規硶榪斿洖鐨勬槸Field瀵硅薄錛岃孷alue鍒欐槸Field瀵硅薄鐨勪竴涓睘鎬э紙鍗寵瀛楁鐨勫鹼級銆傞氳繃姝や緥錛屽簲鎺屾彙鎿嶇旱瀵硅薄灞炴х殑鏂規硶銆備緥濡傦紝瑕佽幏寰桭ield 瀵硅薄鐨刅alue灞炴х殑鍊煎彲浠ョ洿鎺ョ敤灞炴у悕Value鏉ュ紩鐢ㄥ畠錛堝涓婁緥錛夛紝浣嗕篃鍙互璋冪敤Get鏂規硶錛屼緥濡傦細<BR>CString sName=(char*)(_bstr_t)(m_pRecordset->Fields->GetItem<BR>    (_variant_t("name"))->GetValue());<BR>浠庢渚嬭繕鍙互鐪嬪埌錛屽垽鏂槸鍚﹀埌杈捐褰曢泦鐨勬湯灝撅紝浣跨敤璁板綍闆嗙殑adoEOF灞炴э紝鍏跺艱嫢涓虹湡鍗沖埌浜嗙粨灝撅紝鍙嶄箣鍒欐湭鍒般傚垽鏂槸鍚﹀埌杈捐褰曢泦寮澶達紝鍒欏彲鐢˙OF灞炴с?BR>鍙﹀錛岃鍙栨暟鎹繕鏈変竴涓柟娉曪紝灝辨槸瀹氫箟涓涓粦瀹氱殑綾伙紝鐒跺悗閫氳繃緇戝畾鐨勫彉閲忓緱鍒板瓧孌靛鹼紙璇﹁鍚庨潰鐨勪粙緇嶏級銆?BR>5銆佷慨鏀規暟鎹?BR>鏂規硶涓錛?BR> try{<BR>  m_pRecordset->MoveFirst();   <BR>  while(m_pRecordset->adoEOF==VARIANT_FALSE) <BR>  {   <BR>   m_pRecordset->Fields->GetItem<BR>    (_variant_t("濮撳悕"))->Value=_bstr_t("璧佃枃");<BR>   ......<BR>   m_pRecordset->Update();<FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P>   m_pRecordset->MoveNext();   <BR>  }<BR> }//try<BR>鏀瑰彉浜哣alue灞炴х殑鍊鹼紝鍗蟲敼鍙樹簡瀛楁鐨勫箋?BR>鏂規硶浜岋細<BR>  m_pRecordset->Fields->GetItem<BR>    (_variant_t("濮撳悕"))->PutValue(_bstr_t("璧佃枃"));<BR>鏂規硶涓夛細灝辨槸鐢ㄥ畾涔夌粦瀹氱被鐨勬柟娉曪紙璇﹁鍚庨潰鐨勪粙緇嶏級銆?BR>6銆佹坊鍔犺褰?BR>鏂拌褰曟坊鍔犳垚鍔熷悗錛屽嵆鑷姩鎴愪負褰撳墠璁板綍銆侫ddNew鏂規硶鏈変袱縐嶅艦寮忥紝涓涓惈鏈夊弬鏁幫紝鑰屽彟涓涓垯涓嶅甫鍙傛暟銆?BR>鏂規硶涓錛堜笉甯﹀弬鏁幫級錛?BR> // Add new record into this table:<BR> try{<BR>  if(!m_pRecordset->Supports(adAddNew)) return;<FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P>  m_pRecordset->AddNew(); <BR>  m_pRecordset->Fields->GetItem<BR>   (_variant_t("濮撳悕"))->Value=_bstr_t("璧佃枃");<BR>  m_pRecordset->Fields->GetItem<BR>   (_variant_t("鎬у埆"))->Value=_bstr_t("濂?);<BR>  m_pRecordset->Fields->GetItem<BR>   (_variant_t("age"))->Value=_variant_t((short)20);<BR>  m_pRecordset->Fields->GetItem<BR>   (_variant_t("marry"))->Value=_bstr_t("鏈");<BR>  m_pRecordset->Update();  <BR> }//try<BR> catch (_com_error &e)<BR> {<BR>  ::MessageBox(NULL, "鍙堝嚭姣涚梾浜嗐?,"鎻愮ず",MB_OK | MB_ICONWARNING);<BR> }<BR>榪欑鏂規硶寮勫畬浜嗚繕瑕佽皟鐢║pdate()銆?BR>鏂規硶浜岋紙甯﹀弬鏁幫級錛?BR>  _variant_t varName[4],narValue[4];<BR>  varName[0] = L"濮撳悕";<BR>  varName[1] = L"鎬у埆";<BR>  varName[2] = L"age";<BR>  varName[3] = L"marry";<BR>  narValue[0]=_bstr_t("璧佃枃");<BR>  narValue[1]=_bstr_t("濂?);<BR>  narValue[2]=_variant_t((short)20);<BR>  narValue[3]=_bstr_t("鏈");<FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P>  const int nCrit = sizeof varName / sizeof varName[0];<BR>  // Create SafeArray Bounds and initialize the array<BR>  SAFEARRAYBOUND rgsaName[1],rgsaValue[1];<BR>  rgsaName[0].lLbound = 0;   <BR>  rgsaName[0].cElements = nCrit;<BR>  SAFEARRAY *psaName = SafeArrayCreate( VT_VARIANT, 1, rgsaName );<BR>  rgsaValue[0].lLbound = 0;<BR>  rgsaValue[0].cElements = nCrit;<BR>  SAFEARRAY *psaValue = SafeArrayCreate( VT_VARIANT, 1, rgsaValue );<BR>  // Set the values for each element of the array<BR>  HRESULT hr1=S_OK.hr2=S_OK;<BR>  for( long i = 0 ; i < nCrit && SUCCEEDED( hr1 ) && SUCCEEDED( hr2 );i++)   <BR>  {      <BR>   hr1=SafeArrayPutElement(psaName, &i,&varName[i]);<BR>   hr2=SafeArrayPutElement(psaValue, &i,&narValue[i]);       }<BR>   <BR>  // Initialize and fill the SafeArray<BR>  VARIANT vsaName,vsaValue;   <BR>  vsaName.vt = VT_VARIANT | VT_ARRAY;<BR>  vsaValue.vt = VT_VARIANT | VT_ARRAY;<BR>  V_ARRAY(&vsaName) = psaName;//&vsaName->parray=psaName;<BR>   //see definition in oleauto.h file.<BR>  V_ARRAY(&vsaValue) = psaValue;<BR>   <BR>  // Add a new record:<BR>  m_pRecordset->AddNew(vsaName,vsaValue);<BR>榪欑鏂規硶涓嶉渶瑕佽皟鐢║pdate錛屽洜涓烘坊鍔犲悗錛孉DO浼氳嚜鍔ㄨ皟鐢ㄥ畠銆傛鏂規硶涓昏鏄嬌鐢⊿afeArray鎸洪夯鐑︺?BR>鏂規硶涓夛細灝辨槸鐢ㄥ畾涔夌粦瀹氱被鐨勬柟娉曪紙璇﹁鍚庨潰鐨勪粙緇嶏級銆?BR>7銆佸垹闄よ褰?BR>璋冪敤Recordset鐨凞elete鏂規硶灝辮浜嗭紝鍒犻櫎鐨勬槸褰撳墠璁板綍銆傝浜嗚ВDelete鐨勫叾瀹冪敤娉曡鏌ラ槄鍙傝冩枃鐚?BR> try{<BR>  m_pRecordset->MoveFirst();   <BR>  while(m_pRecordset->adoEOF==VARIANT_FALSE) <BR>  {<BR>   CString sName=(char*)(_bstr_t)(m_pRecordset->Fields->GetItem<BR>    (_variant_t("濮撳悕"))->Value);<BR>   if(::MessageBox(NULL,"濮撳悕="+sName+"\n鍒犻櫎濂瑰悧錛?,<BR>    "鎻愮ず",MB_YESNO | MB_ICONWARNING)==IDYES)<BR>   {<BR>    m_pRecordset->Delete(adAffectCurrent);   <BR>    m_pRecordset->Update();<BR>   }<BR>   m_pRecordset->MoveNext();   <BR>  }<BR> }//try<BR> catch (_com_error &e)<BR> {<BR>  ::MessageBox(NULL,"鍙堝嚭姣涚梾浜嗐?,"鎻愮ず",MB_OK | MB_ICONWARNING);<BR> }<BR>8銆佷嬌鐢ㄥ甫鍙傛暟鐨勫懡浠?BR>Command瀵硅薄鎵浠h〃鐨勫氨鏄竴涓狿rovider鑳藉鐞嗚В鐨勫懡浠わ紝濡係QL璇彞絳夈備嬌鐢–ommand瀵硅薄鐨勫叧閿氨鏄妸琛ㄧず鍛戒護鐨勮鍙ヨ緗埌CommandText灞炴т腑錛岀劧鍚庤皟鐢–ommand瀵硅薄鐨凟xecute鏂規硶灝辮浜嗐備竴鑸儏鍐典笅鍦ㄥ懡浠や腑鏃犻渶浣跨敤鍙傛暟錛屼絾鏈夋椂浣跨敤鍙傛暟錛屽彲浠ュ鍔犲叾鐏墊椿鎬у拰鏁堢巼銆?BR>(1). 寤虹珛榪炴帴銆佸懡浠ゅ璞″拰璁板綍闆嗗璞?BR>鏈緥涓〃紺哄懡浠ょ殑璇彞灝辨槸涓涓猄QL璇彞錛圫ELECT璇彞錛夈係ELECT璇彞涓殑闂彿?灝變唬琛ㄥ弬鏁幫紝濡傛灉瑕佸涓弬鏁幫紝灝卞鏀懼嚑涓棶鍙鳳紝姣忎釜闂彿浠h〃涓涓弬鏁般?BR>_ConnectionPtr  Conn1;<BR>_CommandPtr     Cmd1;<BR>ParametersPtr   *Params1 = NULL;   // Not an instance of a smart pointer.<BR>_ParameterPtr   Param1;<BR>_RecordsetPtr   Rs1;<FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P>try<BR>{<BR> // Create Connection Object (1.5 Version)<BR> Conn1.CreateInstance( __uuidof( Connection ) );<BR> Conn1->ConnectionString = bstrConnect;<BR>    Conn1->Open( bstrEmpty, bstrEmpty, bstrEmpty, -1 );<BR>    // Create Command Object<BR>    Cmd1.CreateInstance( __uuidof( Command ) );<BR>    Cmd1->ActiveConnection = Conn1;<BR>    Cmd1->CommandText  = _bstr_t("SELECT * FROM mytable WHERE age< ?");<BR>}//try<BR>瑕佹敞鎰忓懡浠ゅ璞″繀欏諱笌榪炴帴瀵硅薄鍏寵仈璧鋒潵鎵嶈兘璧蜂綔鐢紝鏈緥涓皢鍛戒護瀵硅薄鐨凙ctiveConnection灞炴ц緗負榪炴帴瀵硅薄鐨勬寚閽堬紝鍗充負姝ょ洰鐨勶細<BR>Cmd1->ActiveConnection = Conn1;<BR> (2). 鍒涘緩鍙傛暟瀵硅薄錛屽茍緇欏弬鏁拌祴鍊?BR>// Create Parameter Object<BR>Param1 = Cmd1->CreateParameter( _bstr_t(bstrEmpty),<BR>       adInteger,<BR>       adParamInput,<BR>       -1,<BR>        _variant_t( (long) 5) );<BR>Param1->Value = _variant_t( (long) 5 );<BR>Cmd1->Parameters->Append( Param1 );<BR>鐢ㄥ懡浠ゅ璞$殑鏂規硶鏉ュ垱寤轟竴涓弬鏁板璞★紝鍏朵腑鐨勯暱搴﹀弬鏁幫紙絎笁涓級濡傛灉鏄浐瀹氶暱搴︾殑綾誨瀷錛屽氨濉?1錛屽鏋滄槸瀛楃涓茬瓑鍙彉闀垮害鐨勫氨濉叾瀹為檯闀垮害銆侾arameters鏄懡浠ゅ璞$殑涓涓鍣紝瀹冪殑Append鏂規硶灝辨槸鎶婂垱寤虹殑鍙傛暟瀵硅薄榪藉姞鍒拌瀹瑰櫒閲屻侫ppend榪涘幓鐨勫弬鏁版寜鍏堝悗欏哄簭涓嶴QL璇彞涓殑闂彿浠庡乏鑷沖彸涓涓瀵瑰簲銆?BR>(3). 鎵ц鍛戒護鎵撳紑璁板綍闆?BR>// Open Recordset Object<BR>Rs1 = Cmd1->Execute( &vtEmpty, &vtEmpty2, adCmdText );<BR>浣嗚娉ㄦ剰錛岀敤Command鍜孋onnection瀵硅薄鐨凟xecute鏂規硶寰楀埌鐨凴ecordset鏄彧璇葷殑銆傚洜涓哄湪鎵撳紑Recordset涔嬪墠錛屾垜浠棤娉曡緗畠鐨凩ockType灞炴э紙鍏墮粯璁ゅ間負鍙錛夈傝屽湪鎵撳紑涔嬪悗璁劇疆LockType涓嶈搗浣滅敤銆?BR>鎴戝彂鐜扮敤涓婅堪鏂規硶寰楀埌璁板綍闆哛s1鍚庯紝涓嶄絾Rs1涓殑璁板綍鏃犳硶淇敼錛屽嵆浣跨洿鎺ョ敤SQL璇彞淇敼鍚屼竴琛ㄤ腑浠諱綍璁板綍閮戒笉琛屻?BR>瑕佹兂鑳戒慨鏀規暟鎹紝榪樻槸瑕佺敤Recordset鑷繁鐨凮pen鏂規硶鎵嶈錛屽錛?BR> try{<BR>   m_pRecordset->Open((IDispatch *) Cmd1, vtMissing,<BR>    adOpenStatic, adLockOptimistic, adCmdUnspecified);<BR>  }<BR>  catch (_com_error &e)<BR>  {<BR>   ::MessageBox(NULL,"mytable琛ㄤ笉瀛樺湪銆?,"鎻愮ず",MB_OK | MB_ICONWARNING);<BR>  }<BR>Recordset瀵硅薄鐨凮pen鏂規硶鐪熸槸澶ソ浜嗭紝鍏剁涓涓弬鏁板彲浠ユ槸SQL璇彞銆佽〃鍚嶅瓧銆佸懡浠ゅ璞℃寚閽堢瓑絳夈?BR>9銆佸搷搴擜DO鐨勯氱煡浜嬩歡<BR>閫氱煡浜嬩歡灝辨槸褰撴煇涓壒瀹氫簨浠跺彂鐢熸椂錛岀敱Provider閫氱煡瀹㈡埛紼嬪簭錛屾崲鍙ヨ瘽璇達紝灝辨槸鐢盤rovider璋冪敤瀹㈡埛紼嬪簭涓殑涓涓壒瀹氱殑鏂規硶錛堝嵆浜嬩歡鐨勫鐞嗗嚱鏁幫級銆傛墍浠ヤ負浜嗗搷搴斾竴涓簨浠訛紝鏈鍏抽敭鐨勫氨鏄瀹炵幇浜嬩歡鐨勫鐞嗗嚱鏁般?BR>(1). 浠嶤onnectionEventsVt鎺ュ彛媧劇敓鍑轟竴涓被<BR>涓轟簡鍝嶅簲_Connection鐨勯氱煡浜嬩歡錛屽簲璇ヤ粠ConnectionEventsVt鎺ュ彛媧劇敓鍑轟竴涓被錛?BR>class CConnEvent : public ConnectionEventsVt<BR>{<BR>private:<BR>      ULONG   m_cRef;<BR>public:<BR>      CConnEvent() { m_cRef = 0; };<BR>      ~CConnEvent() {};<FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P>      STDMETHODIMP QueryInterface(REFIID riid, void ** ppv);<BR>      STDMETHODIMP_(ULONG) AddRef(void);<BR>      STDMETHODIMP_(ULONG) Release(void);<BR>      STDMETHODIMP raw_InfoMessage( <BR>         struct Error *pError,<BR>         EventStatusEnum *adStatus,<BR>         struct _Connection *pConnection);<BR>      STDMETHODIMP raw_BeginTransComplete( <BR>         LONG TransactionLevel,<BR>         struct Error *pError,<BR>         EventStatusEnum *adStatus,<BR>         struct _Connection *pConnection);<BR>  ......<BR>};<BR>(2). 瀹炵幇姣忎竴涓簨浠剁殑澶勭悊鍑芥暟(鍑℃槸甯aw_鍓嶇紑鐨勬柟娉曢兘鎶婂畠瀹炵幇浜?錛?BR>STDMETHODIMP CConnEvent::raw_InfoMessage( <BR>         struct Error *pError,<BR>         EventStatusEnum *adStatus,<BR>         struct _Connection *pConnection)<BR>         {<BR>         *adStatus = adStatusUnwantedEvent;<BR>         return S_OK;<BR>         };<FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P>鏈変簺鏂規硶铏界劧浣犲茍涓嶉渶瑕侊紝浣嗕篃蹇呴』瀹炵幇瀹冿紝鍙渶綆鍗曞湴榪斿洖涓涓猄_OK鍗沖彲銆備絾濡傛灉瑕侀伩鍏嶇粡甯歌璋冪敤錛岃繕搴斿湪鍏朵腑灝哸dStatus鍙傛暟璁劇疆涓篴dStatusUnwantedEvent錛屽垯鍦ㄦ湰嬈¤皟鐢ㄥ悗錛屼互鍚庡氨涓嶄細琚皟鐢ㄤ簡銆?BR>鍙﹀榪樺繀欏誨疄鐜癚ueryInterface, AddRef, 鍜孯elease涓変釜鏂規硶: <BR> STDMETHODIMP CConnEvent::QueryInterface(REFIID riid, void ** ppv) <BR> {<BR>      *ppv = NULL;<BR>      if (riid == __uuidof(IUnknown) || <BR>          riid == __uuidof(ConnectionEventsVt)) *ppv = this;<BR>      if (*ppv == NULL)<BR>         return ResultFromScode(E_NOINTERFACE);<BR>      AddRef();<BR>      return NOERROR;<BR>   }<BR>   STDMETHODIMP_(ULONG) CConnEvent::AddRef() { return ++m_cRef; };<BR>   STDMETHODIMP_(ULONG) CConnEvent::Release()<BR>{ <BR>if (0 != --m_cRef) return m_cRef;<BR>delete this;<BR>return 0;<BR>}<BR>(3). 寮濮嬪搷搴旈氱煡浜嬩歡<BR> // Start using the Connection events<BR> IConnectionPointContainer   *pCPC = NULL;<BR> IConnectionPoint         *pCP = NULL;<FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P> hr = pConn.CreateInstance(__uuidof(Connection));<BR>   if (FAILED(hr)) return;<FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P> hr = pConn->QueryInterface(__uuidof(IConnectionPointContainer), <BR>      (void **)&pCPC);<BR> if (FAILED(hr)) return;<BR> hr = pCPC->FindConnectionPoint(__uuidof(ConnectionEvents), &pCP);<BR> pCPC->Release();<BR> if (FAILED(hr)) return;<FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P> pConnEvent = new CConnEvent();<BR>   hr = pConnEvent->QueryInterface(__uuidof(IUnknown), (void **) &pUnk);<BR>   if (FAILED(hr)) return rc; <BR>   hr = pCP->Advise(pUnk, &dwConnEvt);<BR>   pCP->Release();<BR>   if (FAILED(hr)) return;<FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P> pConn->Open("dsn=Pubs;", "sa", "", adConnectUnspecified); <BR>涔熷氨鏄鍦ㄨ繛鎺?Open)涔嬪墠灝卞仛榪欎簺浜嬨?BR>(4). 鍋滄鍝嶅簲閫氱煡浜嬩歡<BR> pConn->Close();<BR> // Stop using the Connection events<BR>  hr = pConn->QueryInterface(__uuidof(IConnectionPointContainer), <BR>      (void **) &pCPC);<BR>   if (FAILED(hr)) return;<BR>   hr = pCPC->FindConnectionPoint(__uuidof(ConnectionEvents), &pCP);<BR>   pCPC->Release();<BR>   if (FAILED(hr)) return rc;<BR>   hr = pCP->Unadvise( dwConnEvt );<BR>   pCP->Release();<BR>   if (FAILED(hr)) return;<BR>鍦ㄨ繛鎺ュ叧闂箣鍚庡仛榪欎歡浜嬨?<BR>10銆侀偊瀹氭暟鎹?BR>瀹氫箟涓涓粦瀹氱被錛屽皢鍏舵垚鍛樺彉閲忕粦瀹氬埌涓涓寚瀹氱殑璁板綍闆嗭紝浠ユ柟渚夸簬璁塊棶璁板綍闆嗙殑瀛楁鍊箋?BR>(1). 浠嶤ADORecordBinding媧劇敓鍑轟竴涓被錛?BR>class CCustomRs : public CADORecordBinding<BR>{<BR>BEGIN_ADO_BINDING(CCustomRs)<BR>   ADO_VARIABLE_LENGTH_ENTRY2(3, adVarChar, m_szau_fname, <BR>         sizeof(m_szau_fname), lau_fnameStatus, false)<BR>   ADO_VARIABLE_LENGTH_ENTRY2(2, adVarChar, m_szau_lname, <BR>         sizeof(m_szau_lname), lau_lnameStatus, false)<BR>   ADO_VARIABLE_LENGTH_ENTRY2(4, adVarChar, m_szphone,    <BR>         sizeof(m_szphone),    lphoneStatus,    true)<BR>END_ADO_BINDING()<FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P>public:<BR>   CHAR   m_szau_fname[22];<BR>   ULONG   lau_fnameStatus;<BR>   CHAR   m_szau_lname[42];<BR>   ULONG   lau_lnameStatus;<BR>   CHAR   m_szphone[14];<BR>   ULONG   lphoneStatus;<BR>};<BR>鍏朵腑灝嗚緇戝畾鐨勫瓧孌典笌鍙橀噺鍚嶇敤BEGIN_ADO_BINDING瀹忓叧鑱旇搗鏉ャ傛瘡涓瓧孌靛搴斾簬涓や釜鍙橀噺錛屼竴涓瓨鏀懼瓧孌電殑鍊鹼紝鍙︿竴涓瓨鏀懼瓧孌電殑鐘舵併傚瓧孌電敤浠?寮濮嬬殑搴忓彿琛ㄧず錛屽1錛?錛?絳夌瓑銆?BR>鐗瑰埆瑕佹敞鎰忕殑鏄細濡傛灉瑕佺粦瀹氱殑瀛楁鏄瓧絎︿覆綾誨瀷錛屽垯瀵瑰簲鐨勫瓧絎︽暟緇勭殑鍏冪礌涓暟涓瀹氳姣斿瓧孌甸暱搴﹀ぇ2錛堟瘮濡俶_szau_fname[22]錛屽叾緇戝畾鐨勫瓧孌礱u_fname鐨勯暱搴﹀疄闄呮槸20錛夛紝涓嶈繖鏍風粦瀹氬氨浼氬け璐ャ傛垜鍒嗘瀽澶氬嚭鐨?鍙兘鏄負浜嗗瓨鏀懼瓧絎︿覆緇撳熬鐨勭┖瀛楃null鍜孊STR瀛楃涓插紑澶寸殑涓涓瓧錛堣〃紺築STR鐨勯暱搴︼級銆傝繖涓棶棰樺浜庡垵瀛﹁呮潵璇村彲鑳芥槸涓涓剰鎯充笉鍒扮殑闂銆?BR>CADORecordBinding綾葷殑瀹氫箟鍦╥crsint.h鏂囦歡閲岋紝鍐呭鏄細<BR>class CADORecordBinding<BR>{<BR>public:<BR> STDMETHOD_(const ADO_BINDING_ENTRY*, GetADOBindingEntries) (VOID) PURE;<BR>};<FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P>BEGIN_ADO_BINDING瀹忕殑瀹氫箟涔熷湪icrsint.h鏂囦歡閲岋紝鍐呭鏄細<BR>#define BEGIN_ADO_BINDING(cls) public: \<BR>typedef cls ADORowClass; \<BR>const ADO_BINDING_ENTRY* STDMETHODCALLTYPE GetADOBindingEntries() { \<BR>static const ADO_BINDING_ENTRY rgADOBindingEntries[] = { <FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P>ADO_VARIABLE_LENGTH_ENTRY2瀹忕殑瀹氫箟涔熷湪icrsint.h鏂囦歡閲岋細<BR>#define ADO_VARIABLE_LENGTH_ENTRY2(Ordinal, DataType, Buffer, Size, Status, Modify)\<BR> {Ordinal, \<BR> DataType, \<BR> 0, \<BR> 0, \<BR> Size, \<BR> offsetof(ADORowClass, Buffer), \<BR> offsetof(ADORowClass, Status), \<BR> 0, \<BR> classoffset(CADORecordBinding, ADORowClass), \<BR> Modify},<FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P> #define END_ADO_BINDING瀹忕殑瀹氫箟涔熷湪icrsint.h鏂囦歡閲岋細<BR> #define END_ADO_BINDING()   {0, adEmpty, 0, 0, 0, 0, 0, 0, 0, FALSE}};\<BR> return rgADOBindingEntries;}<BR>(2). 緇戝畾<BR>_RecordsetPtr   Rs1;<BR>IADORecordBinding   *picRs=NULL;<BR>CCustomRs rs;<BR>......<BR>Rs1->QueryInterface(__uuidof(IADORecordBinding), <BR>               (LPVOID*)&picRs));<BR>picRs->BindToRecordset(&rs);<BR>媧劇敓鍑虹殑綾誨繀欏婚氳繃IADORecordBinding鎺ュ彛鎵嶈兘緇戝畾錛岃皟鐢ㄥ畠鐨凚indToRecordset鏂規硶灝辮浜嗐?BR>(3). rs涓殑鍙橀噺鍗蟲槸褰撳墠璁板綍瀛楁鐨勫?BR>//Set sort and filter condition:<BR>// Step 4: Manipulate the data<BR>Rs1->Fields->GetItem("au_lname")->Properties->GetItem("Optimize")->Value = true; <BR>Rs1->Sort = "au_lname ASC";<BR>Rs1->Filter = "phone LIKE '415 5*'";<FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P>Rs1->MoveFirst();<BR>while (VARIANT_FALSE == Rs1->EndOfFile)<BR>{<BR> printf("Name: %s\t %s\tPhone: %s\n",  <BR>  (rs.lau_fnameStatus == adFldOK ? rs.m_szau_fname : ""), <BR>        (rs.lau_lnameStatus == adFldOK ? rs.m_szau_lname : ""),<BR>        (rs.lphoneStatus == adFldOK ? rs.m_szphone   : ""));<BR>         if (rs.lphoneStatus == adFldOK)<BR>            strcpy(rs.m_szphone, "777");<BR>         TESTHR(picRs->Update(&rs));   // Add change to the batch<BR>  Rs1->MoveNext();<BR>}<BR>Rs1->Filter = (long) adFilterNone;<BR>......<BR>if (picRs) picRs->Release();<BR>Rs1->Close();<BR>pConn->Close();<BR>鍙瀛楁鐨勭姸鎬佹槸adFldOK錛屽氨鍙互璁塊棶銆傚鏋滀慨鏀逛簡瀛楁錛屼笉瑕佸繕浜嗗厛璋冪敤picRs鐨刄pdate錛堟敞鎰忎笉鏄疪ecordset鐨刄pdate錛夛紝鐒跺悗鎵嶅叧闂紝涔熶笉瑕佸繕浜嗛噴鏀緋icRs錛堝嵆picRs->Release();錛夈?BR>(4). 姝ゆ椂榪樺彲浠ョ敤IADORecordBinding鎺ュ彛娣誨姞鏂扮邯褰?BR> if(FAILED(picRs->AddNew(&rs)))<BR> ......<BR>11. 璁塊棶闀挎暟鎹?BR>鍦∕icrosoft SQL涓殑闀挎暟鎹寘鎷瑃ext銆乮mage絳夎繖鏍烽暱綾誨瀷鐨勬暟鎹紝浣滀負浜岃繘鍒跺瓧鑺傛潵瀵瑰緟銆?BR>鍙互鐢‵ield瀵硅薄鐨凣etChunk鍜孉ppendChunk鏂規硶鏉ヨ闂傛瘡嬈″彲浠ヨ鍑烘垨鍐欏叆鍏ㄩ儴鏁版嵁鐨勪竴閮ㄥ垎錛屽畠浼氳浣忎笂嬈¤闂殑浣嶇疆銆備絾鏄鏋滀腑闂磋闂簡鍒殑瀛楁鍚庯紝灝卞張寰椾粠澶存潵浜嗐?BR>璇風湅涓嬮潰鐨勪緥瀛愶細<BR>//鍐欏叆涓寮犵収鐗囧埌鏁版嵁搴擄細<BR>VARIANT varChunk;<BR>SAFEARRAY *psa;<BR>SAFEARRAYBOUND rgsabound[1];<FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P>//VT_ARRAY | VT_UI1<BR>CFile f("h:\\aaa.jpg",CFile::modeRead);<BR>BYTE  bVal[ChunkSize+1];<BR>UINT uIsRead=0;<BR>//Create a safe array to store the array of BYTES  <BR>while(1)<BR>{<BR> uIsRead=f.Read(bVal,ChunkSize);<BR> if(uIsRead==0)break;<BR> rgsabound[0].cElements =uIsRead;<BR>    rgsabound[0].lLbound = 0;<BR> psa = SafeArrayCreate(VT_UI1,1,rgsabound);<BR> for(long index=0;index<uIsRead;index++)          <BR> {<BR>  if(FAILED(SafeArrayPutElement(psa,&index,&bVal[index])))<BR>  ::MessageBox(NULL,"鍟婏紝鍙堝嚭姣涚梾浜嗐?,"鎻愮ず",MB_OK | MB_ICONWARNING);<BR> }<BR> varChunk.vt = VT_ARRAY|VT_UI1;<BR> varChunk.parray = psa;<BR> try{<BR>  m_pRecordset->Fields->GetItem("photo")->AppendChunk(varChunk); <BR> }<BR> catch (_com_error &e)<BR> {<BR>  CString str=(char*)e.Description();<BR>  ::MessageBox(NULL,str+"\n鍙堝嚭姣涚梾浜嗐?,"鎻愮ず",MB_OK | MB_ICONWARNING);<BR> }<BR> ::VariantClear(&varChunk);<BR> ::SafeArrayDestroyData( psa);<BR> if(uIsRead<ChunkSize)break;<BR>}//while(1)  <BR>f.Close();<FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P>//浠庢暟鎹簱璇諱竴寮犵収鐗囷細<BR>CFile f;<BR>f.Open("h:\\bbb.jpg",CFile::modeWrite|CFile::modeCreate);<BR>long lPhotoSize = m_pRecordset->Fields->Item["photo"]->ActualSize;  <BR>long lIsRead=0;<FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P>_variant_t varChunk;<BR>BYTE buf[ChunkSize];<BR>while(lPhotoSize>0)<BR>{<BR> lIsRead=lPhotoSize>=ChunkSize? ChunkSize:lPhotoSize;<BR> varChunk = m_pRecordset->Fields-><BR>                  Item["photo"]->GetChunk(lIsRead);<BR> for(long index=0;index<lIsRead;index++)         <BR> {           <BR>  ::SafeArrayGetElement(varChunk.parray,&index,buf+index);   <BR> }<BR> f.Write(buf,lIsRead);<BR> lPhotoSize-=lIsRead;<BR>}//while()<BR>f.Close();<BR>12. 浣跨敤SafeArray闂<BR>瀛︿細浣跨敤SafeArray涔熸槸寰堥噸瑕佺殑錛屽洜涓哄湪ADO緙栫▼涓粡甯歌鐢ㄣ傚畠鐨勪富瑕佺洰鐨勬槸鐢ㄤ簬automation涓殑鏁扮粍鍨嬪弬鏁扮殑浼犻掋傚洜涓哄湪緗戠粶鐜涓紝鏁扮粍鏄笉鑳界洿鎺ヤ紶閫掔殑錛岃屽繀欏誨皢鍏跺寘瑁呮垚SafeArray銆傚疄璐ㄤ笂SafeArray灝辨槸灝嗛氬父鐨勬暟緇勫鍔犱竴涓弿榪扮錛岃鏄庡叾緇存暟銆侀暱搴︺佽竟鐣屻佸厓绱犵被鍨嬬瓑淇℃伅銆係afeArray涔熷茍涓嶅崟鐙嬌鐢紝鑰屾槸灝嗗叾鍐嶅寘瑁呭埌VARIANT綾誨瀷鐨勫彉閲忎腑錛岀劧鍚庢墠浣滀負鍙傛暟浼犻佸嚭鍘匯傚湪VARIANT鐨剉t鎴愬憳鐨勫煎鏋滃寘鍚玍T_ARRAY|...,閭d箞瀹冩墍灝佽鐨勫氨鏄竴涓猄afeArray錛屽畠鐨刾array鎴愬憳鍗蟲槸鎸囧悜SafeArray鐨勬寚閽堛係afeArray涓厓绱犵殑綾誨瀷鍙互鏄疺ARIANT鑳藉皝瑁呯殑浠諱綍綾誨瀷錛屽寘鎷琕ARIANT綾誨瀷鏈韓銆?nbsp;<BR>浣跨敤SafeArray鐨勫叿浣撴楠わ細<BR>鏂規硶涓錛?BR> 鍖呰涓涓猄afeArray錛?BR>(1). 瀹氫箟鍙橀噺錛屽錛?BR> VARIANT varChunk;<BR> SAFEARRAY *psa;<BR>    SAFEARRAYBOUND rgsabound[1];<BR>(2). 鍒涘緩SafeArray鎻忚堪絎︼細<BR> uIsRead=f.Read(bVal,ChunkSize);//read array from a file.<BR> if(uIsRead==0)break;<BR> rgsabound[0].cElements =uIsRead;<BR> rgsabound[0].lLbound = 0;<BR> psa = SafeArrayCreate(VT_UI1,1,rgsabound);<BR>(3). 鏀劇疆鏁版嵁鍏冪礌鍒癝afeArray錛?BR> for(long index=0;index<uIsRead;index++)          <BR> {<BR>  if(FAILED(SafeArrayPutElement(psa,&index,&bVal[index])))<BR>   ::MessageBox(NULL,"鍑烘瘺鐥呬簡銆?,"鎻愮ず",MB_OK | MB_ICONWARNING);<BR> }<BR> 涓涓竴涓湴鏀撅紝鎸洪夯鐑︾殑銆?BR>(4). 灝佽鍒癡ARIANT鍐咃細<BR> varChunk.vt = VT_ARRAY|VT_UI1;<BR> varChunk.parray = psa;<BR> 榪欐牱灝卞彲浠ュ皢varChunk浣滀負鍙傛暟浼犻佸嚭鍘諱簡銆?FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P> 璇誨彇SafeArray涓殑鏁版嵁鐨勬楠わ細<BR>(1). 鐢⊿afeArrayGetElement涓涓竴涓湴璇?BR> BYTE buf[lIsRead];<BR> for(long index=0;index<lIsRead;index++)         <BR> {           <BR>  ::SafeArrayGetElement(varChunk.parray,&index,buf+index);   <BR> }<BR> 灝辮鍒扮紦鍐插尯buf閲屼簡銆?BR>鏂規硶浜岋細<BR> 浣跨敤SafeArrayAccessData鐩存帴璇誨啓SafeArray鐨勭紦鍐插尯錛?BR>(1). 璇葷紦鍐插尯錛?BR> BYTE *buf;<BR> SafeArrayAccessData(varChunk.parray, (void **)&buf);<BR> f.Write(buf,lIsRead);<BR> SafeArrayUnaccessData(varChunk.parray);<BR>(2). 鍐欑紦鍐插尯錛?BR> BYTE *buf;<BR> ::SafeArrayAccessData(psa, (void **)&buf);<BR> for(long index=0;index<uIsRead;index++)          <BR> {<BR>  buf[index]=bVal[index];  <BR> }<BR> ::SafeArrayUnaccessData(psa);<FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P> varChunk.vt = VT_ARRAY|VT_UI1;<BR> varChunk.parray = psa;<FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P>榪欑鏂規硶璇誨啓SafeArray閮藉彲浠ワ紝瀹冪洿鎺ユ搷綰礢afeArray鐨勬暟鎹紦鍐插尯錛屾瘮鐢⊿afeArrayGetElement鍜孲afeArrayPutElement閫熷害蹇傜壒鍒傚悎浜庤鍙栨暟鎹備絾鐢ㄥ畬涔嬪悗涓嶈蹇樹簡璋冪敤::SafeArrayUnaccessData(psa)錛屽惁鍒欎細鍑洪敊鐨勩?BR>13. 浣跨敤涔︾( bookmark )<BR>涔︾鍙互鍞竴鏍囪瘑璁板綍闆嗕腑鐨勪竴涓褰曪紝鐢ㄤ簬蹇熷湴灝嗗綋鍓嶈褰曠Щ鍥炲埌宸茶闂繃鐨勮褰曪紝浠ュ強榪涜榪囨護絳夌瓑銆侾rovider浼氳嚜鍔ㄤ負璁板綍闆嗕腑鐨勬瘡涓鏉¤褰曚駭鐢熶竴涓功絳撅紝鎴戜滑鍙渶瑕佷嬌鐢ㄥ畠灝辮浜嗐傛垜浠笉鑳借瘯鍥炬樉紺恒佷慨鏀規垨姣旇緝涔︾銆侫DO鐢ㄨ褰曢泦鐨凚ookmark灞炴ц〃紺哄綋鍓嶈褰曠殑涔︾銆?BR>鐢ㄦ硶姝ラ錛?BR>(1). 寤虹珛涓涓猇ARIANT綾誨瀷鐨勫彉閲?BR>_variant_t VarBookmark;<BR>(2). 灝嗗綋鍓嶈褰曠殑涔︾鍊煎瓨鍏ヨ鍙橀噺<BR>涔熷氨鏄褰曢泦鐨凚ookmark灞炴х殑褰撳墠鍊箋?BR> VarBookmark = rst->Bookmark;<BR>(3). 榪斿洖鍒板厛鍓嶇殑璁板綍<BR>灝嗕繚瀛樼殑涔︾鍊艱緗埌璁板綍闆嗙殑涔︾灞炴т腑錛?BR> // Check for whether bookmark set for a record<BR> if (VarBookmark.vt == VT_EMPTY)<BR>  printf("No Bookmark set!\n");<BR> else <BR>  rst->Bookmark = VarBookmark;<BR>璁劇疆瀹屽悗錛屽綋鍓嶈褰曞嵆浼氱Щ鍔ㄥ埌璇ヤ功絳炬寚鍚戠殑璁板綍銆?BR>14銆佽緗繃婊ゆ潯浠?BR>Recordset瀵硅薄鐨凢ilter灞炴ц〃紺轟簡褰撳墠鐨勮繃婊ゆ潯浠躲傚畠鐨勫煎彲浠ユ槸浠ND鎴朞R榪炴帴璧鋒潵鐨勬潯浠惰〃杈懼紡錛堜笉鍚玏HERE鍏抽敭瀛楋級銆佺敱涔︾緇勬垚鐨勬暟緇勬垨ADO鎻愪緵鐨凢ilterGroupEnum鏋氫婦鍊箋備負Filter灞炴ц緗柊鍊煎悗Recordset鐨勫綋鍓嶈褰曟寚閽堜細鑷姩縐誨姩鍒版弧瓚寵繃婊ゆ潯浠剁殑絎竴涓褰曘備緥濡傦細<BR>rst->Filter  = _bstr_t ("濮撳悕='璧佃枃'  AND  鎬у埆=鈥欏コ鈥?);<BR>鍦ㄤ嬌鐢ㄦ潯浠惰〃杈懼紡鏃跺簲娉ㄦ剰涓嬪垪闂錛?BR>錛?錛夈佸彲浠ョ敤鍦嗘嫭鍙風粍鎴愬鏉傜殑琛ㄨ揪寮?BR>渚嬪錛?BR>rst->Filter  =  _bstr_t ("(濮撳悕='璧佃枃'  AND  鎬у埆=鈥欏コ鈥?  OR  AGE<25");<BR>浣嗘槸寰蔣涓嶅厑璁稿湪鎷彿鍐呯敤OR錛岀劧鍚庡湪鎷彿澶栫敤AND錛屼緥濡傦細<BR>rst->Filter  = _bstr_t ("(濮撳悕='璧佃枃'  OR 鎬у埆=鈥欏コ鈥?  AND  AGE<25");<BR>蹇呴』淇敼涓猴細<BR>rst->Filter  = _bstr_t ("(濮撳悕='璧佃枃'  AND  AGE<25)  OR  (鎬у埆=鈥欏コ鈥?nbsp; AND  AGE<25)");<BR>錛?錛夈佽〃杈懼紡涓殑姣旇緝榪愮畻絎﹀彲浠ユ槸LIKE<BR>LIKE鍚庤姣旇緝鐨勬槸涓涓惈鏈夐氶厤絎?鐨勫瓧絎︿覆錛屾槦鍙瘋〃紺鴻嫢騫蹭釜浠繪剰鐨勫瓧絎︺?BR>瀛楃涓茬殑棣栭儴鍜屽熬閮ㄥ彲浠ュ悓鏃跺甫鏄熷彿*<BR>rst->Filter  =  _bstr_t ("濮撳悕 LIKE '*璧?' ");<BR>涔熷彲浠ュ彧鏄熬閮ㄥ甫鏄熷彿錛?BR>rst->Filter  =  _bstr_t ("濮撳悕 LIKE '璧?' ");<BR>Filter灞炴у肩殑綾誨瀷鏄疺ariant錛屽鏋滆繃婊ゆ潯浠舵槸鐢變功絳劇粍鎴愮殑鏁扮粍錛屽垯闇灝嗚鏁扮粍杞崲涓篠afeArray錛岀劧鍚庡啀灝佽鍒頒竴涓猇ARIANT鎴朹variant_t鍨嬬殑鍙橀噺涓紝鍐嶈祴緇橣ilter灞炴с?BR>15銆佺儲寮曚笌鎺掑簭<BR>錛?錛夈佸緩绔嬬儲寮?BR>褰撲互鏌愪釜瀛楁涓哄叧閿瓧鐢‵ind鏂規硶鏌ユ壘鏃訛紝涓轟簡鍔犲揩閫熷害鍙互浠ヨ瀛楁涓哄叧閿瓧鍦ㄨ褰曢泦鍐呴儴涓存椂寤虹珛绱㈠紩銆傚彧瑕佸皢璇ュ瓧孌電殑Optimize灞炴ц緗負true鍗沖彲錛屼緥濡傦細<BR>pRst->Fields->GetItem("濮撳悕")->Properties-><BR>            GetItem("Optimize")->PutValue("True");<BR>pRst->Find("濮撳悕 = '璧佃枃'",1,adSearchForward);<BR>......<BR>pRst->Fields->GetItem("濮撳悕")->Properties-><BR>            GetItem("Optimize")->PutValue("False");<BR>pRst->Close();<BR>璇存槑錛歄ptimize灞炴ф槸鐢盤rovider鎻愪緵鐨勫睘鎬э紙鍦ˋDO涓О涓哄姩鎬佸睘鎬э級錛孉DO鏈韓娌℃湁姝ゅ睘鎬с?BR>錛?錛夈佹帓搴?BR>瑕佹帓搴忎篃寰堢畝鍗曪紝鍙鎶婅鎺掑簭鐨勫叧閿瓧鍒楄〃璁劇疆鍒癛ecordset瀵硅薄鐨凷ort灞炴ч噷鍗沖彲錛屼緥濡傦細<BR>pRstAuthors->CursorLocation = adUseClient;<BR>pRstAuthors->Open("SELECT * FROM mytable",<BR>            _variant_t((IDispatch *) pConnection),<BR>            adOpenStatic, adLockReadOnly, adCmdText);<BR>......<BR>pRst->Sort = "濮撳悕 DESC, 騫撮緞 ASC";<BR>鍏抽敭瀛楋紙鍗沖瓧孌靛悕錛変箣闂寸敤閫楀彿闅斿紑錛屽鏋滆浠ユ煇鍏抽敭瀛楅檷搴忔帓搴忥紝鍒欏簲鍦ㄨ鍏抽敭瀛楀悗鍔犱竴絀烘牸錛屽啀鍔燚ESC錛堝涓婁緥錛夈傚崌搴忔椂ASC鍔犱笉鍔犳棤鎵璋撱傛湰鎿嶄綔鏄埄鐢ㄧ儲寮曡繘琛岀殑錛屽茍鏈繘琛岀墿鐞嗘帓搴忥紝鎵浠ユ晥鐜囪緝楂樸?BR>浣嗚娉ㄦ剰錛屽湪鎵撳紑璁板綍闆嗕箣鍓嶅繀欏誨皢璁板綍闆嗙殑CursorLocation灞炴ц緗負adUseClient錛屽涓婁緥鎵紺恒係ort灞炴у煎湪闇瑕佹椂闅忔椂鍙互淇敼銆?BR>16銆佷簨鍔″鐞?BR>ADO涓殑浜嬪姟澶勭悊涔熷緢綆鍗曪紝鍙渶鍒嗗埆鍦ㄩ傚綋鐨勪綅緗皟鐢–onnection瀵硅薄鐨勪笁涓柟娉曞嵆鍙紝榪欎笁涓柟娉曟槸錛?BR>錛?錛夈佸湪浜嬪姟寮濮嬫椂璋冪敤<BR>pCnn->BeginTrans();<BR>錛?錛夈佸湪浜嬪姟緇撴潫騫舵垚鍔熸椂璋冪敤<BR>pCnn->CommitTrans ();<BR>錛?錛夈佸湪浜嬪姟緇撴潫騫跺け璐ユ椂璋冪敤<BR>pCnn->RollbackTrans ();<BR>鍦ㄤ嬌鐢ㄤ簨鍔″鐞嗘椂錛屽簲灝介噺鍑忓皬浜嬪姟鐨勮寖鍥達紝鍗沖噺灝忎粠浜嬪姟寮濮嬪埌緇撴潫錛堟彁浜ゆ垨鍥炴粴錛変箣闂寸殑鏃墮棿闂撮殧錛屼互渚挎彁楂樼郴緇熸晥鐜囥傞渶瑕佹椂涔熷彲鍦ㄨ皟鐢˙eginTrans()鏂規硶涔嬪墠錛屽厛璁劇疆Connection瀵硅薄鐨処solationLevel灞炴у鹼紝璇︾粏鍐呭鍙傝MSDN涓湁鍏矨DO鐨勬妧鏈祫鏂欍?BR>涓夈佷嬌鐢ˋDO緙栫▼甯歌闂瑙g瓟<BR>浠ヤ笅鍧囨槸閽堝MS SQL 7.0緙栫▼鏃舵墍閬囬棶棰樿繘琛岃璁恒?BR>1銆佽繛鎺ュけ璐ュ彲鑳藉師鍥?BR>Enterprise Managemer鍐咃紝鎵撳紑灝嗘湇鍔″櫒鐨勫睘鎬у璇濇錛屽湪Security閫夐」鍗′腑錛屾湁涓涓夐」Authentication銆?BR>濡傛灉璇ラ夐」鏄疻indows NT only錛屽垯浣犵殑紼嬪簭鎵鐢ㄧ殑榪炴帴瀛楃涓插氨涓瀹氳鍖呭惈Trusted_Connection鍙傛暟錛屽茍涓斿叾鍊煎繀欏諱負yes錛屽錛?BR>"Provider=SQLOLEDB;Server=888;Trusted_Connection=yes"<BR>  ";Database=master;uid=lad;";<BR>濡傛灉涓嶆寜涓婅堪鎿嶄綔錛岀▼搴忚繍琛屾椂榪炴帴蹇呯劧澶辮觸銆?BR>濡傛灉Authentication閫夐」鏄疭QL Server and Windows NT錛屽垯浣犵殑紼嬪簭鎵鐢ㄧ殑榪炴帴瀛楃涓插彲浠ヤ笉鍖呭惈Trusted_Connection鍙傛暟錛屽錛?BR>"Provider=SQLOLEDB;Server=888;Database=master;uid=lad;pwd=111;";<BR>鍥犱負ADO緇欒鍙傛暟鍙栫殑榛樿鍊煎氨鏄痭o錛屾墍浠ュ彲浠ョ渷鐣ャ傛垜璁や負榪樻槸鍙栭粯璁ゅ兼瘮杈冨畨鍏ㄤ竴浜涖?BR>2銆佹敼鍙樺綋鍓嶆暟鎹簱鐨勬柟娉?BR>浣跨敤Tansct-SQL涓殑USE璇彞鍗沖彲銆?BR>3銆佸浣曞垽鏂竴涓暟鎹簱鏄惁瀛樺湪<BR>(1)銆佸彲鎵撳紑master鏁版嵁搴撲腑涓涓彨鍋歋CHEMATA鐨勮鍥撅紝鍏跺唴瀹瑰垪鍑轟簡璇ユ湇鍔″櫒涓婃墍鏈夌殑鏁版嵁搴撳悕縐般?BR>(2) 銆佹洿綆渚跨殑鏂規硶鏄嬌鐢║SE璇彞錛屾垚鍔熶簡灝卞瓨鍦紱涓嶆垚鍔燂紝灝變笉瀛樺湪銆備緥濡傦細<BR> try{<BR>  m_pConnect->Execute ( _bstr_t("USE INSURANCE_2002"),NULL,<BR>  adCmdText|adExecuteNoRecords );<BR> }<BR> catch (_com_error &e)<BR> {<BR>  blSuccess=FALSE;<BR>  CString str="鏁版嵁搴揑NSURANCE_2002涓嶅瓨鍦紒\n";<BR>  str+=e.Description();<BR>  ::MessageBox(NULL,str,"璀﹀憡",MB_OK | MB_ICONWARNING); <BR> }<BR>4銆佸垽鏂竴涓〃鏄惁瀛樺湪<BR>錛?錛夈佸悓鏍峰垽鏂竴涓〃鏄惁瀛樺湪錛屼篃鍙互鐢ㄦ槸鍚︽垚鍔熷湴鎵撳紑瀹冩潵鍒ゆ柇錛屽崄鍒嗘柟渚匡紝渚嬪錛?BR> try{<BR>  m_pRecordset->Open(_variant_t("mytable"),<BR>            _variant_t((IDispatch *)m_pConnection,true), adOpenKeyset,<BR>            adLockOptimistic, adCmdTable);<BR> }<BR> catch (_com_error &e)<BR> {<BR>  ::MessageBox(NULL,"璇ヨ〃涓嶅瓨鍦ㄣ?,"鎻愮ず",MB_OK | MB_ICONWARNING);<BR> }</P> <P>(2)銆佽涓嶇劧鍙互閲囩敤楹葷儲涓鐐圭殑鍔炴硶錛屽氨鏄湪MS-SQL鏈嶅姟鍣ㄤ笂鐨勬瘡涓暟鎹簱涓兘鏈変竴涓悕涓簊ysobjects鐨勮〃錛屾煡鐪嬫琛ㄧ殑鍐呭鍗崇煡鎸囧畾鐨勮〃鏄惁鍦ㄨ鏁版嵁搴撲腑銆?BR>(3)銆佸悓鏍鳳紝姣忎釜鏁版嵁搴撲腑閮芥湁涓涓悕涓篢ABLES鐨勮鍥?View)錛屾煡鐪嬫瑙嗗浘鐨勫唴瀹瑰嵆鐭ユ寚瀹氱殑琛ㄦ槸鍚﹀湪璇ユ暟鎹簱涓?BR>5銆佺被鍨嬭漿鎹㈤棶棰?BR>錛?錛夈佺被鍨媀ARIANT_BOOL<BR>綾誨瀷VARIANT_BOOL絳変環浜巗hort綾誨瀷銆俆he VARIANT_BOOL is equivalent to short. see it's definition below: <BR>typdef short VARIANT_BOOL<BR>錛?錛夈乢com_ptr_t綾葷殑綾誨瀷杞崲<BR>_ConnectionPtr鍙互鑷姩杞崲鎴怚Dspatch*綾誨瀷錛岃繖鏄洜涓篲ConnectionPtr瀹為檯涓婃槸_com_ptr_t綾葷殑涓涓疄渚嬶紝鑰岃繖涓被鏈夋綾誨瀷杞崲鍑芥暟銆?BR>鍚岀悊錛宊RecordsetPtr鍜宊CommandPtr涔熼兘鍙互榪欐牱杞崲銆?BR>錛?錛夈乢bstr_t鍜宊variant_t綾?BR>鍦ˋDO緙栫▼鏃訛紝_bstr_t鍜宊variant_t榪欎袱涓被寰堟湁鐢紝鐪佸幓浜嗚澶欱STR鍜孷ARIANT綾誨瀷杞崲鐨勯夯鐑︺?BR>6銆佹墦寮璁板綍闆嗘椂鐨勯棶棰?BR>鍦ㄦ墦寮璁板綍闆嗘椂錛屽湪璋冪敤Recordset鐨凮pen鏂規硶鏃訛紝鍏舵渶鍚庝竴涓弬鏁伴噷涓瀹氫笉鑳藉寘鍚玜dAsyncExecute錛屽惁鍒欏皢鍥犱負鏄紓姝ユ搷浣滐紝鍦ㄨ鍙栨暟鎹椂鏃犳硶璇誨埌鏁版嵁銆?BR>7銆佸紓甯稿鐞嗛棶棰?BR>瀵規墍鏈夎皟鐢ˋDO鐨勮鍙ヤ竴瀹氳鐢╰ry鍜宑atch璇彞鎹曟崏寮傚父錛屽惁鍒欏湪鍙戠敓寮傚父鏃訛紝紼嬪簭浼氬紓甯擱鍑恒?BR>8銆佷嬌鐢⊿afeArray闂<BR>鍦ㄥ垵瀛︿嬌鐢ㄤ腑錛屾垜鏇鵑亣鍒頒竴涓激鑴戠瓔鐨勯棶棰橈紝涓瀹氳娉ㄦ剰錛?BR>鍦ㄥ畾涔変簡SAFEARRAY鐨勬寚閽堝悗錛屽鏋滄墦綆楅噸澶嶄嬌鐢ㄥ嬈★紝鍒欏湪涓棿鍙互璋冪敤::SafeArrayDestroyData閲婃斁鏁版嵁錛屼絾鍐充笉鑳借皟鐢?:SafeArrayDestroyDescriptor錛屽惁鍒欏繀鐒跺嚭閿欙紝鍗充嬌璋冪敤SafeArrayCreate涔熶笉琛屻備緥濡傦細<BR>SAFEARRAY *psa;<BR>......<BR>//When the data are no longer to be used:<BR>::SafeArrayDestroyData( psa);<BR>鎴戝垎鏋愬湪瀹氫箟psa鎸囬拡鏃訛紝涓涓猄AFEARRAY鐨勫疄渚嬶紙涔熷氨鏄疭AFEARRAY鎻忚堪絎︼級涔熷悓鏃惰鑷姩寤虹珛浜嗐備絾鏄彧瑕佷竴璋冪敤::SafeArrayDestroyDescriptor錛屾弿榪扮灝辮閿姣佷簡銆?BR>鎵浠ユ垜璁や負::SafeArrayDestroyDescriptor鍙互鏍規湰灝變笉璋冪敤錛屽嵆浣胯皟鐢ㄤ篃蹇呴』鍦ㄦ渶鍚庤皟鐢ㄣ?BR>9銆侀噸澶嶄嬌鐢ㄥ懡浠ゅ璞¢棶棰?BR>涓涓懡浠ゅ璞″鏋滆閲嶅浣跨敤澶氭錛堝挨鍏舵槸甯﹀弬鏁扮殑鍛戒護錛夛紝鍒欏湪絎竴嬈℃墽琛屼箣鍓嶏紝搴斿皢瀹冪殑Prepared灞炴ц緗負TRUE銆傝繖鏍蜂細浣跨涓嬈℃墽琛屽噺鎱紝浣嗗嵈鍙互浣夸互鍚庣殑鎵ц鍏ㄩ儴鍔犲揩銆?BR>10銆佺粦瀹氬瓧絎︿覆鍨嬪瓧孌甸棶棰?BR>濡傛灉瑕佺粦瀹氱殑瀛楁鏄瓧絎︿覆綾誨瀷錛屽垯瀵瑰簲鐨勫瓧絎︽暟緇勭殑鍏冪礌涓暟涓瀹氳姣斿瓧孌甸暱搴﹀ぇ2錛堟瘮濡俶_szau_fname[22]錛屽叾緇戝畾鐨勫瓧孌礱u_fname鐨勯暱搴﹀疄闄呮槸20錛夛紝涓嶈繖鏍風粦瀹氬氨浼氬け璐ャ?BR>11銆佷嬌鐢ˋppendChunk鐨勯棶棰?BR>褰撶敤AddNew鏂規硶鍒氬垰鍚戣褰曢泦鍐呮坊鍔犱竴涓柊璁板綍涔嬪悗錛屼笉鑳介鍏堝悜涓涓暱鏁版嵁瀛楁錛坕mage綾誨瀷錛夊啓鍏ユ暟鎹紝蹇呴』鍏堝悜鍏朵粬瀛楁鍐欏叆榪囨暟鎹箣鍚庯紝鎵嶈兘璋冪敤AppendChunk鍐欒瀛楁錛屽惁鍒欏嚭閿欍備篃灝辨槸璇達紝AppendChunk涓嶈兘绱ф帴鍦ˋddNew涔嬪悗銆傚彟澶栵紝鍐欏叆鍏朵粬瀛楁鍚庤繕蹇呴』绱ф帴鐫璋冪敤AppendChunk錛岃屼笉鑳借皟鐢ㄨ褰曢泦鐨刄pdate鏂規硶鍚庯紝鎵嶈皟鐢ˋppendChunk錛屽惁鍒欒皟鐢ˋppendChunk鏃朵篃浼氬嚭閿欍傛崲鍙ヨ瘽璇達紝灝辨槸蹇呴』AppendChunk鍦ㄥ墠錛孶pdate鍦ㄥ悗銆傚洜鑰岃繖涓椂鍊欏氨涓嶈兘浣跨敤甯﹀弬鏁扮殑AddNew浜嗭紝鍥犱負甯﹀弬鏁扮殑AddNew浼氳嚜鍔ㄨ皟鐢ㄨ褰曢泦鐨刄pdate錛屾墍浠ppendChunk灝辮窇鍒癠pdate鐨勫悗闈簡錛屽氨鍙湁鍑洪敊浜嗭紒鍥犳錛岃繖鏃跺簲璇ョ敤涓嶅甫鍙傛暟鐨凙ddNew銆?BR>鎴戞帹嫻嬭繖鍙兘鏄疢S SQL 7.0鐨勯棶棰橈紝鍦∕S SQL 2000涓垯涓嶅瓨鍦ㄨ繖浜涢棶棰橈紝浣嗘槸AppendChunk浠嶇劧涓嶈兘鍦║pdate涔嬪悗銆?BR>鍥涖佸皬緇?BR>涓鑸儏鍐典笅錛孋onnection鍜孋ommand鐨凟xecute鐢ㄤ簬鎵ц涓嶄駭鐢熻褰曢泦鐨勫懡浠わ紝鑰孯ecordset鐨凮pen鐢ㄤ簬浜х敓涓涓褰曢泦錛屽綋鐒朵篃涓嶆槸緇濆鐨勩傜壒鍒獵ommand涓昏鏄敤浜庢墽琛屽弬鏁板寲鐨勫懡浠わ紝鍙互鐩存帴鐢盋ommand瀵硅薄鎵ц錛屼篃鍙互灝咰ommand瀵硅薄浼犻掔粰Recordset鐨凮pen銆?BR>鏈枃涓殑浠g爜鐗囨柇鍧囧湪VC++ 6.0銆乄indows NT 4.0 SP6鍜孧S SQL 7.0涓皟璇曢氳繃銆傜浉淇℃偍璇昏繃涔嬪悗錛岀紪鍐欑畝鍗曠殑鏁版嵁搴撶▼搴忓簲璇ユ病鏈夐棶棰樹簡銆傚綋鐒惰緙栧啓姣旇緝瀹炵敤鐨勩佸鏉備竴鐐圭殑紼嬪簭錛岃繕闇瑕佸OLE DB銆丄DO浠ュ強鏁版嵁搴撳鉤鍙板啀澶氫簡瑙d竴鐐癸紝甯屾湜鎮ㄧ戶緇姫鍔涳紝涓瀹氫細寰堝揩鎴愬姛鐨勶紒璇︾粏鍙傝冭祫鏂欒鍙傝寰蔣MSDN July 2000鍏夌洏鎴朚S SQL 7.0鍦ㄧ嚎鏂囨。璧勬枡錛圔ooks online錛夈傛枃涓毦鍏嶆湁閿欒鍜屼笉濡ヤ箣澶勶紝鏁鍚勪綅鎵硅瘎鎸囨錛?FONT color=#ffffcc>www.chinai tp 閲囧惂閲囧惂涓嶆槸緗?ow er.comJuJIe</FONT></P> <P>鍙傝冩枃鐚細<BR>1銆?寰蔣MSDN Library - July 2000 / Platform SDK / Data Services / Microsoft Data Access Components (MDAC) / Microsoft ActiveX Data Objects (ADO)<BR>2銆?寰蔣MS SQL 7.0鍦ㄧ嚎鏂囨。璧勬枡錛圔ooks online錛?--- Building SQL Server Applications / ADO and SQL Server<BR>3銆?寰蔣MS SQL 7.0鍦ㄧ嚎鏂囨。璧勬枡錛圔ooks online錛?--- Building SQL Server Applications / Transact 鈥?SQL Reference<BR>4銆?寰蔣MSDN Library - July 2000 / Platform SDK / Data Services / Microsoft Data Access Components (MDAC) / Microsoft OLE DB</P><img src ="http://m.shnenglu.com/ivenher/aggbug/1773.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/ivenher/" target="_blank">鐖遍キ鐩?/a> 2005-12-15 11:03 <a href="http://m.shnenglu.com/ivenher/articles/1773.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>VC鏁版嵁搴撶紪紼嬩腑鐨勬墦鍗版帶鍒?/title><link>http://m.shnenglu.com/ivenher/articles/1079.html</link><dc:creator>鐖遍キ鐩?/dc:creator><author>鐖遍キ鐩?/author><pubDate>Fri, 11 Nov 2005 06:31:00 GMT</pubDate><guid>http://m.shnenglu.com/ivenher/articles/1079.html</guid><wfw:comment>http://m.shnenglu.com/ivenher/comments/1079.html</wfw:comment><comments>http://m.shnenglu.com/ivenher/articles/1079.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/ivenher/comments/commentRss/1079.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ivenher/services/trackbacks/1079.html</trackback:ping><description><![CDATA[<TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD style="FONT-SIZE: 22px" align=middle height=60>VC鏁版嵁搴撶紪紼嬩腑鐨勬墦鍗版帶鍒?/TD></TR> <TR> <TD style="FONT-SIZE: 9pt" align=middle height=30><FONT color=#00ff00>2003-12-4</FONT>鍔犲叆  鏉ヨ嚜<FONT color=#00ff00>璧涜開緗?/FONT>  浣滆?FONT color=#00ff00>鏉庝綉姘?/FONT>  <FONT color=#00ff00>1</FONT>鏉¤瘎璁?nbsp; 鐐瑰嚮<FONT color=#ff0000>2287</FONT>嬈?/TD></TR> <TR> <TD style="FONT-SIZE: 14px" width="100%">       <BR>銆銆VC鏁版嵁搴撶紪紼嬩腑鐨勬墦鍗版帶鍒舵瘮杈冨鏉傦紝浣嗗畠涔熺粰紼嬪簭鍛樻渶澶х殑鐏墊椿鎬э紝鑰岃繖縐嶇伒媧繪ф鏄垜浠渶瑕佺殑銆傚洜涓哄悇琛屼笟銆侀儴闂ㄧ殑鎶ヨ〃涓鑸兘涓嶅お瑙勬暣錛岀壒鍒槸琛ㄥご閮ㄥ垎錛屼簩銆佷笁閲嶅祵濂楃殑鎯呭喌寰堝父瑙併備笅闈㈡垜浠氨寮鍙戜腑紕板埌鐨勪竴浜涢棶棰樹笌鍚岃浠帰璁ㄣ?nbsp;<BR><BR>銆銆Document/View妗嗘灦涔嬪鐨勬墦鍗?nbsp;<BR><BR>銆銆鐔熸倝VC鐨勭▼搴忓憳閮界煡閬揗icrosoft 鐨凙ppWizard鐢熸垚鐨勫簲鐢ㄧ▼搴忔鏋朵腑錛屽彲浠ラ夋嫨鍏嶈垂鐨勬墦鍗板強鎵撳嵃棰勮鍔熻兘錛屼絾鍓嶆彁鏄繀欏婚夋嫨Document/View緇撴瀯銆傜劧鑰屾垜浠殑鏁版嵁搴撳簲鐢ㄤ腑涓鑸兘涓嶉渶瑕佷竴涓枃。绫绘潵淇濆瓨鏂囨。锛屽洜湄撴暟鎹簱锛堟簮锛墳鏄垜浠殑鏂囨。锛屾暟鎹竴鑸槸鍦ㄤ竴涓璇濇鎴栬涓笌鐢ㄦ埛浜や簰錛岀紪杈戞垨淇敼緇撴灉鐩存帴閫氳繃鏁版嵁搴撳紩鎿庡啓鍥炴暟鎹簱涓傛垜浠殑紼嬪簭涓繪鏋惰涔堟槸鍩轟簬瀵硅瘽妗嗙殑銆佽涔堟槸鍩轟簬鏃犳枃。绫荤殑鍗曡锛堟垨澶氳锛壘l撴瀯錛屽湪榪欑鎯呭喌涓嬶紝AppWizard 鍦ㄦ墦鍗版帶鍒墮儴鍒嗗茍涓嶈兘緇欐垜浠換浣曞府鍔╋紝鍙兘鑷繁璐熻矗瀹屾垚鎵撳嵃鎺у埗銆?nbsp;<BR><BR>銆銆鎬葷粨璧鋒潵錛屼竴嬈℃墦鍗版搷浣滆閬靛驚浠ヤ笅姝ラ錛?nbsp;<BR><BR>銆銆1.寰楀埌鎴栫敓鎴愭墦鍗拌澶囧満鏅紝鍙氳繃鏄劇ず鎵撳嵃瀵硅瘽妗嗚鐢ㄦ埛閫夋嫨鎵撳嵃鏈轟笌綰稿紶絳夎緗紝涔熷彲鍦ㄧ▼搴忎腑鐩存帴鍙栫郴緇熺己鐪佹墦鍗版満璁劇疆錛岀劧鍚庢牴鎹姤琛ㄦ牸寮忚緗焊寮犲ぇ灝忓拰鎵撳嵃鏂瑰悜錛?nbsp;<BR><BR>銆銆2.寮濮嬪湪璇ヨ澶囧満鏅腑鐨勪竴嬈℃墦鍗頒綔涓氾紝瀹為檯鎵撳嵃鎶ヨ〃鍐呭錛岀粓姝㈡墦鍗頒綔涓氾紱 <BR><BR>銆銆3.娓呴櫎鎵撳嵃璁懼鍦烘櫙錛屽畬鎴愭湰嬈℃墦鍗版搷浣溿?nbsp;<BR><BR>銆銆鍦ㄤ笅闈㈢殑渚嬪瓙涓紝鎴戜滑鍦ㄤ竴涓璇濇涓鐢ㄦ埛閫夋嫨鎵撳嵃鏌愪釜鎶ヨ〃錛屾病鏈夋樉紺烘墦鍗拌緗璇濇錛岃屾槸鐩存帴鍙栫郴緇熺己鐪佹墦鍗版満璁劇疆錛岀劧鍚庢牴鎹姤琛ㄦ牸寮忚緗焊寮犲ぇ灝忓拰鎵撳嵃鏂瑰悜銆備箣鎵浠ヨ繖鏍峰仛鏄洜涓哄悇琛屼笟銆侀儴闂ㄧ殑鎶ヨ〃鏍煎紡涓鑸兘鏄嚦涓婅屼笅鐨勭粺涓鏍煎紡銆傚嚱鏁癉oPreparePrintDC()銆丏oPrint()鍜孌oClearPrintDC()鍒嗗埆瀵瑰簲涓婅堪鐨勪笁涓楠わ細 <BR><BR>銆銆BOOL CMyDialog::DoPreparePrintDC() <BR><BR>銆銆// 鍑嗗鎵撳嵃鍦烘櫙 <BR><BR>銆銆{ <BR><BR>銆銆 錛僤efine銆銆FONTSIZE 14 <BR><BR>銆銆 // 鑾峰彇鎵撳嵃鏈虹殑璁懼灞炴?nbsp;<BR><BR>銆銆 CPrintDialog dlgPrint( FALSE ); <BR><BR>銆銆 // 寰楀埌褰撳墠緋葷粺緙虹渷鎵撳嵃鏈鴻緗?nbsp;<BR><BR>銆銆 if(!dlgPrint.GetDefaults()) return FALSE; <BR><BR>銆銆 LPDEVMODE pDM=dlgPrint.GetDevMode(); <BR><BR>銆銆 if(pDM==NULL) return FALSE; <BR><BR>銆銆 ::GlobalUnlock(pDM); <BR><BR>銆銆 // 鑱旂粨鎵撳嵃DC錛宮鈥攈DC鏄畾涔変負HDC m鈥攈DC鐨勭被鎴愬憳鍙橀噺 <BR><BR>銆銆 m鈥攈DC=dlgPrint.CreatePrinterDC(); <BR><BR>銆銆 // m鈥擠C鏄畾涔変負CDC m鈥擠C鐨勭被鎴愬憳鍙橀噺 <BR><BR>銆銆 if(!m鈥擠C.Attach(m鈥攈DC) return FALSE; <BR><BR>銆銆 // 璁劇疆鎵撳嵃鏍囧織 <BR><BR>銆銆 m鈥擠C.m鈥攂Printing=TRUE; <BR><BR>銆銆 short cxInch=m鈥擠C.GetDeviceCaps(LOGPIXELSX); <BR><BR>銆銆 short cyInch=m鈥擠C.GetDeviceCaps(LOGPIXELSY); <BR><BR>銆銆 // 寤虹珛鎵撳嵃瀛椾綋錛宮鈥攆ontPrint 鏄畾涔変負CFont m_fontPrint鐨勭被鎴愬憳鍙橀噺 <BR><BR>銆銆 if(!m鈥攆ontPrint.CreateFont(MulDiv(FONTSIZE, 錛峜yInch, 72),0,0,0, FW鈥擭ORMAL,0,0,0, GB2312鈥擟HARSET, OUT鈥擟HARACTER鈥擯RECIS, CLIP鈥擟HARACTER鈥擯RECIS,DEFAULT鈥擰UALITY, DEFAULT鈥擯ITCH|FF鈥擠ONTCARE, HFONTNAME) <BR><BR>銆銆 return FALSE; <BR><BR>銆銆 return TRUE;} <BR><BR>銆銆void CDlgDataPrint::DoClearPrintDC() <BR><BR>銆銆// 娓呴櫎鎵撳嵃鍦烘櫙 <BR><BR>銆銆{ m鈥攆ontPrint.DeleteObject(); <BR><BR>銆銆 m鈥擠C.Detach(); <BR><BR>銆銆 ::DeleteDC( m鈥攈DC );} <BR><BR>銆銆void CDlgDataPrint::DoPrint() <BR><BR>銆銆// 瀹為檯鎵撳嵃杈撳嚭 <BR><BR>銆銆{ if(DoPreparePrintDC()==FALSE) return; <BR><BR>銆銆 // 寮濮嬩竴嬈℃墦鍗頒綔涓?nbsp;<BR><BR>銆銆 CString str; <BR><BR>銆銆 str.LoadString(AFX鈥擨DS鈥擜PP鈥擳ITLE); <BR><BR>銆銆 DOCINFO di; <BR><BR>銆銆 ::ZeroMemory (錛哾i, sizeof (DOCINFO)); <BR><BR>銆銆 di.cbSize=sizeof (DOCINFO); <BR><BR>銆銆 di.lpszDocName=str; <BR><BR>銆銆 m鈥擠C.StartDoc(錛哾i); <BR><BR>銆銆 m鈥擠C.StartPage(); <BR><BR>銆銆 // 灝嗘墦鍗板瓧浣撻夎繘璁懼鍦烘櫙 <BR><BR>銆銆 CFont錛?nbsp;pOldFont=m鈥擠C.SelectObject(錛唌鈥攆ontPrint); <BR><BR>銆銆 // 杈撳嚭鎶ヨ〃錛屽緩璁敤CDC::DrawText()鍑芥暟渚夸簬鎺у埗鎵撳嵃鑼冨洿 <BR><BR>銆銆 ... <BR><BR>銆銆 // 緇堟鎵撳嵃浣滀笟 <BR><BR>銆銆 m鈥擠C.EndPage(); <BR><BR>銆銆 m鈥擠C.EndDoc(); <BR><BR>銆銆 m鈥擠C.SelectObject(pOldFont); <BR><BR>銆銆 // 娓呴櫎鎵撳嵃鍦烘櫙 <BR><BR>銆銆 DoClearPrintDC();} <BR><BR>銆銆琛ㄦ牸闂 <BR><BR>銆銆瀵規牸寮忓浐瀹氭垨琛ㄥご銆佽〃浣撴瘮杈冨鏉傜殑鎯呭喌錛岀壒鍒槸鏈夊祵濂楄〃鏍肩殑鎯呭喌涓嬶紝鎴戜滑璁や負鍏堝皢鎵撳嵃緇撴灉浠ユ枃鏈艦寮忓啓鍏ヤ竴涓存椂鏂囦歡錛岀劧鍚庡啀瀵規枃浠惰繘琛屾墦鍗拌緭鍑虹殑鏂規硶浼氫嬌浜嬫儏綆鍗曚竴浜涖傚洜涓鴻繖鏍峰湪紼嬪簭涓氨鍙互鍙叧蹇冩暟鎹?琛ㄤ綋)鐨勮緭鍑猴紝鑰岃〃澶村垯鍙互鍥哄畾鏍煎紡瀛樺叆鏁版嵁搴撱?nbsp;<BR><BR>銆銆浣嗘槸錛屾垜浠湪瀵規枃鏈艦寮忕殑鎶ヨ〃榪涜鎵撳嵃杈撳嚭鏃跺嵈鍙戠幇涓涓湁瓚g殑鐜拌薄錛屾湁鏃惰緭鍑虹粨鏋滅殑鐩擱偦涓よ琛ㄦ牸绔栫嚎涓嶈兘瀵歸綈錛岃屾湁鏃跺張鍙互銆傚師鏉ユ槸 Windows 鍥懼艦杈撳嚭鐨勯棶棰橈紝鍙鎴戜滑鍦ㄥ緩绔嬫墦鍗板瓧浣撴椂錛屽瓧浣撶殑楂樺害鏄伓鏁板氨鍙繚璇佺珫綰垮榻愶紝濡傛灉鏄鏁板垯涓嶈兘瀵歸綈銆傜煡閬撲簡鍘熷洜錛屽湪寤虹珛鎵撳嵃瀛椾綋鏃跺彧闇鍔犲叆濡備笅浠g爜鍗沖彲錛?nbsp;<BR><BR>銆銆... <BR><BR>銆銆錛僤efine銆銆FONTSIZE 14 <BR><BR>銆銆錛僤efine銆銆HFONTNAME 鈥沖畫浣撯?nbsp;<BR><BR>銆銆// 寤虹珛鎵撳嵃瀛椾綋錛宮鈥攆ontPrint鏄畾涔変負CFont m鈥攆ontPrint鐨勭被鎴愬憳鍙橀噺 <BR><BR>銆銆int nFontHeight=MulDiv(FONTSIZE,錛峜yInch, 72); <BR><BR>銆銆if(nFontHeight 錛?nbsp;2) nFontHeight錛嬶紜; <BR><BR>銆銆if(!m鈥攆ontPrint.CreateFont(nFontHeight, 0, 0, 0, FW鈥擭ORMAL, 0, 0,0,GB2312鈥擟HARSET, OUT鈥擟HARACTER鈥擯RECIS, CLIP鈥擟HARACTER鈥擯RECIS,DEFAULT鈥擰UALITY, DEFAULT鈥擯ITCH | FF鈥擠ONTCARE, HFONTNAME)) <BR><BR>銆銆 return FALSE; <BR><BR>銆銆... <BR><BR>銆銆榪樻湁涓鐐瑰皬鎶宸э紝杈撳嚭鏂囨湰褰㈠紡鐨勬姤琛ㄦ椂錛屽鎶ヨ〃鐨勬í綰垮彧闇瑕佽緭鍑哄叾姝e父楂樺害鐨勪簩鍒嗕箣涓鎴栦笁鍒嗕箣涓錛岃繖鏍鋒姤琛ㄧ湅璧鋒潵鏇寸揣鍑戠編瑙傘傝繖涔熸槸鎴戜滑鍦ㄥ墠闈㈠緩璁敤CDC::DrawText()榪涜緇樺埗杈撳嚭鐨勫師鍥犮?nbsp;<BR></TD></TR></TBODY></TABLE><img src ="http://m.shnenglu.com/ivenher/aggbug/1079.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/ivenher/" target="_blank">鐖遍キ鐩?/a> 2005-11-11 14:31 <a href="http://m.shnenglu.com/ivenher/articles/1079.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>ADO寮鍙戜腑濡備綍寰楀埌琛ㄦ牸瀛楁鍚?/title><link>http://m.shnenglu.com/ivenher/articles/1055.html</link><dc:creator>鐖遍キ鐩?/dc:creator><author>鐖遍キ鐩?/author><pubDate>Fri, 11 Nov 2005 03:09:00 GMT</pubDate><guid>http://m.shnenglu.com/ivenher/articles/1055.html</guid><wfw:comment>http://m.shnenglu.com/ivenher/comments/1055.html</wfw:comment><comments>http://m.shnenglu.com/ivenher/articles/1055.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/ivenher/comments/commentRss/1055.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ivenher/services/trackbacks/1055.html</trackback:ping><description><![CDATA[<BR>1. 浠g爜璇存槑 <BR>(1)鍦?stdafx.h 鍔犲叆濡備笅浠g爜寮曞叆 ADO 搴撳畾涔?A target=_blank>鏂囦歡</A>錛?PRE>#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF") </PRE>(2)鍒濆鍖朇OM搴擄紝鍦˙OOL CGetFieldNameApp::InitInstance()涓坊鍔燗fxOleInit(); <P></P><BR>(3)鍦ㄧ被 CgetFieldNameDlg 涓坊鍔犱袱涓敤浜庢墦寮<A target=_blank>鏁版嵁搴?/A>榪炴帴鍜屾墦寮璁板綍闆嗙殑鍙橀噺錛?PRE>_ConnectionPtr m_pConnection; _RecordsetPtr m_pRecordset; </PRE>(4) 鍦–getFieldNameDlg鐨勬瀯閫犲嚱鏁頒腑娣誨姞<A target=_blank>鏁版嵁搴?/A>榪炴帴鍜岃褰曢泦鍒濆鍖栦唬鐮侊紱<PRE>m_pConnection.CreateInstance(__uuidof(Connection)); try { m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\FTI.mdb", "", "", adModeUnknown ); } catch(_com_error e) { AfxMessageBox("<A target=_blank>鏁版嵁搴?/A>榪炴帴澶辮觸!"); } m_pRecordset.CreateInstance(__uuidof(Recordset));</PRE>(5) 緇橪istbox鎺т歡娣誨姞鎺т歡鍙橀噺m_FieldsList錛?BR>(6) 鍦ㄦ寜閽殑鍗曞嚮浜嬩歡涓坊鍔犵浉搴斾唬鐮侊紱<PRE>_bstr_t mStrSQL; CString strColName; BSTR bstrColName; long ColCount,i; Field * field = NULL; HRESULT hr; Fields * fields = NULL; LPCTSTR nameField; //鎵撳紑璁板綍闆嗭紝寰楀埌瀛楁鍚嶏紝騫跺皢瀛楁鍚嶄俊鎭坊鍔犲埌ListBox涓? mStrSQL = "SELECT * FROM Images"; m_pRecordset->Open(mStrSQL, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); hr = m_pRecordset->get_Fields (&fields); //寰楀埌璁板綍闆嗙殑瀛楁闆嗗拰 if(SUCCEEDED(hr)) fields->get_Count(&ColCount); //寰楀埌璁板綍闆嗙殑瀛楁闆嗗悎涓殑瀛楁鐨勬諱釜鏁? for(i=0;i<ColCount;i++) { fields->Item[i]->get_Name(&bstrColName); //寰楀埌璁板綍闆?/涓殑瀛楁鍚? strColName=bstrColName; nameField = strColName; m_FieldsList.AddString(nameField); } if(SUCCEEDED(hr)) fields->Release();//閲婃斁鎸囬拡 </PRE><img src ="http://m.shnenglu.com/ivenher/aggbug/1055.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/ivenher/" target="_blank">鐖遍キ鐩?/a> 2005-11-11 11:09 <a href="http://m.shnenglu.com/ivenher/articles/1055.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鐢╱dl寤虹珛鍒皊ybase鐨勮繛鎺?/title><link>http://m.shnenglu.com/ivenher/articles/1012.html</link><dc:creator>鐖遍キ鐩?/dc:creator><author>鐖遍キ鐩?/author><pubDate>Wed, 09 Nov 2005 08:25:00 GMT</pubDate><guid>http://m.shnenglu.com/ivenher/articles/1012.html</guid><wfw:comment>http://m.shnenglu.com/ivenher/comments/1012.html</wfw:comment><comments>http://m.shnenglu.com/ivenher/articles/1012.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/ivenher/comments/commentRss/1012.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ivenher/services/trackbacks/1012.html</trackback:ping><description><![CDATA[<P>鏂板緩涓涓猽dl鏂囦歡銆傞夋嫨鎻愪緵紼嬪簭銆傚涓嬪浘<BR><IMG height=437 alt=閫夋嫨鎻愪緵紼嬪簭.JPG src="http://m.shnenglu.com/images/cppblog_com/ivenher/閫夋嫨鎻愪緵紼嬪簭.JPG" width=419 border=0><BR><BR>閫夋嫨涓嬩竴姝ャ?BR><IMG height=437 alt=絎簩姝?JPG src="http://m.shnenglu.com/images/cppblog_com/ivenher/絎簩姝?JPG" width=419 border=0><BR><BR>鏁版嵁婧愪負鍒╃敤 sybase ase ole Configuration Manager鎵寤虹珛鐨勬暟鎹簮銆?/P><img src ="http://m.shnenglu.com/ivenher/aggbug/1012.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/ivenher/" target="_blank">鐖遍キ鐩?/a> 2005-11-09 16:25 <a href="http://m.shnenglu.com/ivenher/articles/1012.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Connection澶у叏http://m.shnenglu.com/ivenher/articles/1008.html鐖遍キ鐩?/dc:creator>鐖遍キ鐩?/author>Wed, 09 Nov 2005 07:16:00 GMThttp://m.shnenglu.com/ivenher/articles/1008.htmlhttp://m.shnenglu.com/ivenher/comments/1008.htmlhttp://m.shnenglu.com/ivenher/articles/1008.html#Feedback0http://m.shnenglu.com/ivenher/comments/commentRss/1008.htmlhttp://m.shnenglu.com/ivenher/services/trackbacks/1008.html1.Sqlserver
  A.ODBC
    I.Standard Security:
      "Driver={SQL Server};Server=Aron1;Database=pubs;Uid=sa;Pwd=asdasd;" 
    II.Trusted connection:
      "Driver={SQL Server};Server=Aron1;Database=pubs;
       Trusted_Connection=yes;" 
    III.Prompt for username and password:
       oConn.Properties("Prompt") = adPromptAlways
       oConn.Open "Driver={SQL Server};Server=Aron1;DataBase=pubs;" 
  B.OLE DB, OleDbConnection (.NET) 
    I.Standard Security:
       "Provider=sqloledb;Data Source=Aron1;Initial Catalog=pubs;User 
       Id=sa;Password=asdasd;"
    II.Trusted Connection:
       "Provider=sqloledb;Data Source=Aron1;Initial Catalog=pubs;
       Integrated Security=SSPI;" 
       (浠呴傜敤浜嶴qlserver 2000)
    III.Prompt for username and password:
       oConn.Provider = "sqloledb"
       oConn.Properties("Prompt") = adPromptAlways
       oConn.Open "Data Source=Aron1;Initial Catalog=pubs;"  
    IV.Connect via an IP address:
       "Provider=sqloledb;Data Source=190.190.200.100,1433;Network
       Library=DBMSSOCN;Initial Catalog=pubs;User ID=sa;Password=asdasd;" 
  C.SqlConnection (.NET) 
    I.Standard Security:
     "Data Source=Aron1;Initial Catalog=pubs;User Id=sa;Password=asdasd;" 
     鎴栬?Server=Aron1;Database=pubs;User ID=sa;Password=asdasd;
     Trusted_Connection=False" 
    II.Trusted Connection:
     "Data Source=Aron1;Initial Catalog=pubs;Integrated Security=SSPI;" 
     鎴栬?Server=Aron1;Database=pubs;Trusted_Connection=True;" 
     (浠呴傜敤浜嶴qlserver 2000)
    III.Connect via an IP address:
     "Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial 
     Catalog=pubs;User ID=sa;Password=asdasd;" 
     Name       Network library 
     dbnmpntw   Win32 Named Pipes 
     dbmssocn   Win32 Winsock TCP/IP 
     dbmsspxn   Win32 SPX/IPX 
     dbmsvinn   Win32 Banyan Vines 
     dbmsrpcn   Win32 Multi-Protocol (Windows RPC) 
     閫氳繃SQLOLEDB provider 榪炴帴錛岀敤Network Library=dbmssocn錛岄氳繃MSDASQL
     provider榪炴帴錛岀敤Network=dbmssocn 
    IV.澹版槑鏂規硶錛?
     C#:
       using System.Data.SqlClient;
       SqlConnection oSQLConn = new SqlConnection();
       oSQLConn.ConnectionString="my connectionstring";
       oSQLConn.Open(); 
     VB.NET:
       Imports System.Data.SqlClient
       Dim oSQLConn As SqlConnection = New SqlConnection()
       oSQLConn.ConnectionString="my connectionstring"
       oSQLConn.Open() 
  D.Data Shape 
    MS Data Shape
    "Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=Aron1;Initial
    Catalog=pubs;User ID=sa;Password=asdasd;" 
   鍛靛懙錛孌ata Shape娌$敤榪囷紝璇峰弬鐓?
    http://www.4guysfromrolla.com/webtech/092599-1.shtml
2.Access 
  A.ODBC 
    I.Standard Security:
      "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;
       Uid=Admin;Pwd=;" 
    II.Workgroup:
      "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;
      SystemDB=C:\mydatabase.mdw;" 
    III.Exclusive:
      "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;
      Exclusive=1;Uid=admin;Pwd="
  B.OLE DB, OleDbConnection (.NET) 
    I.Standard security:
      "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;
      User Id=admin;Password=;" 
    II.Workgroup (system database):
      "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;
      Jet OLEDB:System Database=system.mdw;" 
    III.With password:
      "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;
      Jet OLEDB:Database Password=MyDbPassword;" 
3.Oracle 
  A.ODBC 
    I.New version:
      "Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;
      Uid=Username;Pwd=asdasd;" 
    II.Old version:
      "Driver={Microsoft ODBC Driver for Oracle};ConnectString=
      OracleServer.world;Uid=myUsername;Pwd=myPassword;" 
  B.OLE DB, OleDbConnection (.NET) 
    I.Standard security:
      "Provider=msdaora;Data Source=MyOracleDB;User Id=UserName;
      Password=asdasd;" 
      娉細涓婇潰鏄敤MS鐨勯┍鍔紝涓嬮潰鏄敤Oracle鎻愪緵鐨勯┍鍔細
      "Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User
      Id=Username;Password=asdasd;" 
    II.Trusted Connection:
      "Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;OSAuthent=1;" 
  C.OracleConnection (.NET) 
    I.Standard:
      "Data Source=Oracle8i;Integrated Security=yes"; 
      娉細姝ゅ啓娉曠敤浜嶰racle 8i release 3鍙婁互涓婄増鏈?
      澹版槑鏂規硶:
      C#:
      using System.Data.OracleClient;
      OracleConnection oOracleConn = new OracleConnection();
      oOracleConn.ConnectionString = "my connectionstring";
      oOracleConn.Open(); 
      VB.NET:
      Imports System.Data.OracleClient
      Dim oOracleConn As OracleConnection = New OracleConnection()
      oOracleConn.ConnectionString = "my connectionstring"
      oOracleConn.Open() 
  D.Data Shape 
    I.MS Data Shape:
      "Provider=MSDataShape.1;Persist Security Info=False;Data 
      Provider=MSDAORA;Data Source=orac;user id=username;password=mypw"
3.MySQL 
  A.ODBC 
    I.Local database:
      "Driver={mySQL};Server=mySrvName;Option=16834;Database=mydatabase;" 
    II.Remote database:
      "Driver={mySQL};Server=data.domain.com;Port=3306;Option=131072;
      Stmt=;Database=my-database;Uid=username;Pwd=password;" 
  B.OLE DB, OleDbConnection (.NET) 
    I.Standard:
      "Provider=MySQLProv;Data Source=mydb;User Id=UserName;
      Password=asdasd;" 
  C.MySqlConnection (.NET) 
    I.eInfoDesigns.dbProvider:
      "Data Source=server;Database=mydb;User ID=username;
      Password=pwd;Command Logging=false" 
      娉細姝ゅ啓娉曚粎鐢ㄤ簬閫氳繃eInfoDesigns dbProvider榪炴帴錛?
    II.澹版槑鏂規硶錛?
      C#:
      using eInfoDesigns.dbProvider.MySqlClient;
      MySqlConnection oMySqlConn = new MySqlConnection();
      oMySqlConn.ConnectionString = "my connectionstring";
      oMySqlConn.Open(); 
      VB.NET:
      Imports eInfoDesigns.dbProvider.MySqlClient
      Dim oMySqlConn As MySqlConnection = New MySqlConnection()
      oMySqlConn.ConnectionString = "my connectionstring"
      oMySqlConn.Open()   
4.Interbase 
  A.ODBC (Easysoft ODBC-Interbase driver ) 
   I.Local computer:
     "Driver={Easysoft IB6 ODBC};Server=localhost;Database=localhost:
     C:\mydatabase.gdb;Uid=username;Pwd=password" 
   II.Remote Computer:
     "Driver={Easysoft IB6 ODBC};Server=ComputerName;Database=ComputerName
     :C:\mydatabase.gdb;Uid=username;Pwd=password" 
  B.ODBC (Intersolv ODBC-Interbase driver )
   I.Local computer:
     "Driver={INTERSOLV InterBase ODBC Driver (*.gdb)};Server=localhost;
     Database=localhost:C:\mydatabase.gdb;Uid=username;Pwd=password" 
   II.Remote Computer:
     "Driver={INTERSOLV InterBase ODBC Driver (*.gdb)};
     Server=ComputerName;Database=ComputerName:C:\mydatabase.gdb;
     Uid=username;Pwd=password" 
  C.OLE DB (SIBPROvider Driver) 
   I.Standard:
     "provider=sibprovider;location=localhost:;data source=c:
     \databases\gdbs\mygdb.gdb;user id=SYSDBA;password=masterkey" 
   II.Specifying character set:
     "provider=sibprovider;location=localhost:;data source=c:
     \databases\gdbs\mygdb.gdb;user id=SYSDBA;password=masterkey;
     character set=ISO8859_1" 
   III.Specifying role:
     "provider=sibprovider;location=localhost:;data source=c:
     \databases\gdbs\mygdb.gdb;user id=SYSDBA;password=masterkey;
     role=DIGITADORES"
6.IBM DB2 
  A.OLE DB, OleDbConnection (.NET) from ms 
   I.TCP/IP:
     "Provider=DB2OLEDB;Network Transport Library=TCPIP;Network 
     Address=XXX.XXX.XXX.XXX;Initial Catalog=MyCtlg;Package 
     Collection=MyPkgCol;Default Schema=Schema;User ID=MyUser;Password=MyPW" 
   II.APPC:
     "Provider=DB2OLEDB;APPC Local LU Alias=MyAlias;APPC Remote LU 
     Alias=MyRemote;Initial Catalog=MyCtlg;Package Collection=MyPkgCol;Default 
     Schema=Schema;User ID=MyUser;Password=MyPW"  
7.Sybase 
  A.ODBC 
   I.Standard Sybase System 12 (or 12.5) Enterprise Open Client:
     "Driver={SYBASE ASE ODBC Driver};Srvr=Aron1;Uid=username;Pwd=password" 
   II.Standard Sybase System 11:
     "Driver={SYBASE SYSTEM 11};Srvr=Aron1;Uid=username;Pwd=password;" 
   III.Intersolv 3.10:
     "Driver={INTERSOLV 3.10 32-BIT Sybase};Srvr=Aron1;Uid=username;
     Pwd=password;" 
   IIII.Sybase SQL Anywhere (former Watcom SQL ODBC driver):
    "ODBC; Driver=Sybase SQL Anywhere 5.0; DefaultDir=c:\dbfolder\;Dbf=
    c:\mydatabase.db;Uid=username;Pwd=password;Dsn=""""" 
  B.OLEDB
    I.Adaptive Server Anywhere (ASA):
    "Provider=ASAProv;Data source=myASA" 
    II.Adaptive Server Enterprise (ASE) with Data Source .IDS file:
    "Provider=Sybase ASE OLE DB Provider; Data source=myASE" 
    娉細蹇呴』鍏堢敤Data Administrator鍒涘緩Data Source .IDS file  
    III.Adaptive Server Enterprise (ASE):
    "Provider=Sybase.ASEOLEDBProvider;Srvr=myASEserver,5000;Catalog=myDBname;
    User Id=username;Password=password" 
8.Informix 
  A.ODBC 
    I.Informix 3.30:
    "Dsn=鈥欌?Driver={INFORMIX 3.30 32 BIT};Host=hostname;Server=myserver;Service=
    service-name;Protocol=olsoctcp;Database=mydb;UID=username;PWD=myPwd 
    II.Informix-CLI 2.5:
    "Driver={Informix-CLI 2.5 (32 Bit)};Server=myserver;Database=mydb;
    Uid=username;Pwd=myPwd" 
  B.OLE DB 
    I.IBM Informix OLE DB Provider:
    "Provider=Ifxoledbc.2;password=myPw;User ID=myUser;Data Source=
    dbName@serverName;Persist Security Info=true" 
9.Mimer SQL 
  A.ODBC 
    I.Standard Security:
    "Driver={MIMER};Database=mydb;Uid=myuser;Pwd=mypw;" 
    II. Prompt for username and password:
    "Driver={MIMER};Database=mydb;" 
10.DSN 
  A.ODBC 
   I.DSN:
    "DSN=myDsn;Uid=username;Pwd=;" 
   II.File DSN:
    "FILEDSN=c:\myData.dsn;Uid=username;Pwd=;" 
11.Excel 
  A.ODBC 
   I.Standard:
    "Driver={Microsoft Excel Driver (*.xls)};DriverId=790;
    Dbq=C:\MyExcel.xls;DefaultDir=c:\mypath;" 
  B.OLE DB 
   I.Standard:
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended 
    Properties=""Excel 8.0;HDR=Yes;IMEX=1""" 
    "HDR=Yes;" indicates that the first row contains columnnames, not data.
    "IMEX=1;" tells the driver to always read "intermixed" data columns as text.
12.Text 
  A.ODBC 
   I.Standard:
   "Driver={Microsoft Text Driver (*.txt; *.csv)};
   Dbq=c:\txtFilesFolder\;Extensions=asc,csv,tab,txt;" 
  B.OLE DB 
   I.Standard:
   "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\txtFilesFolder\;Extended 
   Properties=""text;HDR=Yes;FMT=Delimited""" 
   "HDR=Yes;" indicates that the first row contains columnnames, not data.
13.DBF / FoxPro 
  A.ODBC 
   I.standard:
   "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\mydbpath;" 
  B.OLE DB, OleDbConnection (.NET) 
   I.standard:
   "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\folder;Extended Properties=
   dBASE IV;User ID=Admin;Password="
14.Visual FoxPro 
  A.OLE DB, OleDbConnection (.NET) 
   I.Database container (.DBC):
   "Provider=vfpoledb.1;Data Source=C:\MyDbFolder\MyDbContainer.dbc;
   Password=MyPassWord;Collating Sequence=machine" 
   II. Free table directory:
   "Provider=vfpoledb.1;Data Source=C:\MyDataDirectory\;Password=MyPassWord;
   Collating Sequence=general" 
  B.ODBC 
   I.Database container (.DBC):
   "Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=
   c:\myvfpdb.dbc;Exclusive=No;Collate=Machine;" 
   II.Free Table directory:
   "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=
   c:\myvfpdbfolder;Exclusive=No;Collate=Machine;" 
15.Pervasive (娌″惉璇磋繃榪欎釜涓滀笢)
  A.ODBC 
   I.Standard:
   "Driver={Pervasive ODBC Client Interface};ServerName=srvname;dbq=@dbname" 
  B.OLE DB 
   I.Standard:
   "Provider=PervasiveOLEDB;Data Source=C:\path" 
16.UDL 
   "File Name=c:\myDataLink.udl;"

]]>
鍒╃敤UDL鏂囦歡鏉ュ緩绔婣DO榪炴帴http://m.shnenglu.com/ivenher/articles/1007.html鐖遍キ鐩?/dc:creator>鐖遍キ鐩?/author>Wed, 09 Nov 2005 07:04:00 GMThttp://m.shnenglu.com/ivenher/articles/1007.htmlhttp://m.shnenglu.com/ivenher/comments/1007.htmlhttp://m.shnenglu.com/ivenher/articles/1007.html#Feedback0http://m.shnenglu.com/ivenher/comments/commentRss/1007.htmlhttp://m.shnenglu.com/ivenher/services/trackbacks/1007.html
浣跨敤閫氱敤鏁版嵁榪炴帴鏂囦歡錛?.UDL錛屼互涓嬬畝縐版枃浠訛級鏉ュ垱寤篈DO榪炴帴錛屽彲浠ュ拰ODBC涓鏍峰彲瑙嗗寲鍦板畾涔夎榪炴帴鐨勬暟鎹簮錛屼粠鑰屽疄鐜版暟鎹闂殑閫忔槑鎬с?

銆銆 1.浣跨敤UDL鏂囦歡鏉ュ垱寤篈DO榪炴帴

銆銆 鍒涘緩ADO鐨勮繛鎺ワ紝棣栧厛瑕佽緗瓵DO榪炴帴瀵硅薄鐨凜onnectionString灞炴э紝璇ュ睘鎬ф彁渚涙墍瑕佽繛鎺ョ殑鏁版嵁搴撶被鍨嬨佹暟鎹墍澶勬湇鍔″櫒銆佽璁塊棶鐨勬暟鎹簱鍜屾暟鎹簱璁塊棶鐨勫畨鍏ㄨ璇佷俊鎭傛瘮杈冧笓涓氱殑鏂規硶鏄湪ConnectionString涓洿鎺ユ彁渚涗互涓婁俊鎭紝涓嬮潰鏄闂笉鍚岀被鍨嬫暟鎹簮璁劇疆ConnectionString鐨勬爣鍑嗭細
璁塊棶ODBC鏁版嵁

"Provider=MSDASQL;DSN=dsnName;UID=userName;PWD=userPassword;"
璁塊棶ORACLE鏁版嵁搴?
"Provider=MSDAORA;Data Source=serverName;User ID=userName; Password=userPassword;"
璁塊棶MS SQL鏁版嵁搴?
"Provider=SQLOLEDB;Data Source=serverName;Initial Catalog=databaseName; User ID=userName;Password=userPassword;"
璁塊棶ACCESS 鏁版嵁搴?
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=databaseName;User ID=userName;Password=userPassword;"

銆銆 涓婅堪鐨勮繛鎺ュ睘鎬ц緗爣鍑嗛殢鐫鏁版嵁婧愮殑綾誨瀷涓嶅悓鑰屽彉鍖栵紝杞歡鐢ㄦ埛甯稿父涓嶄範鎯繖縐嶈緗柟寮忥紝閮藉笇鏈涙湁鍙鍖栫殑鏁版嵁婧愯緗柟娉曘備負姝icrosoft鎻愪緵浜嗛氱敤鏁版嵁榪炴帴鏂囦歡錛?UDL錛夋潵寤虹珛鍜屾祴璇旳DO榪炴帴灞炴с侫DO榪炴帴瀵硅薄鍙互寰堟柟渚垮湴浣跨敤UDL鏂囦歡鏉ヨ繛鎺ユ暟鎹簮錛屼笅闈緥瀛愪嬌鐢╩y_data1.udl鏉ュ垱寤篈DO榪炴帴銆?

_ConnectionPtr m_pDBConn;
m_pDBConn.CreateInstance(__uuidof(Connection));
m_pDBConn->ConnectionString ="File Name=c:\mydir\my_data1.udl";  //娉ㄦ剰錛歯ame=c錛氱瓑鍙蜂袱杈逛笉鑳芥湁絀烘牸
m_pDBConn->Open("","","",NULL);

銆銆 榪欐牱涓鏉ユ棤璁烘暟鎹簮濡備綍鍙樺寲錛屽湪杞歡涓兘鍙互鐢ㄧ粺涓鐨勬柟娉曠紪紼嬨傚綋鏁版嵁婧愭敼鍙樻椂錛屽彧瑕佸弻鍑葷浉搴旂殑udl鏂囦歡鍗沖彲鍙鍖栧湴璁劇疆鏁版嵁婧愶紝鏃犻渶鏇存敼杞歡銆?

銆銆 鍥犱負ADO鏄疌OM鎺ュ彛錛屼負浜嗚蔣浠剁殑鍙潬鎬э紝鎵撳紑ADO榪炴帴鏃訛紝鍙互鍔犲叆寮傚父澶勭悊浠g爜銆?

try{
m_pDBConn->Open("","","",NULL);
}catch(_com_error &e){
//澶勭悊寮傚父鐨勪唬鐮?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
m_pDBConn=NULL;
}

銆銆 鍥犱負_ConnectionPtr m_pDBConn鏄櫤鑳芥寚閽堬紝搴斿湪澶勭悊寮傚父浠g爜鏃跺皢鏅鴻兘鎸囬拡璁句負NULL鍚庡皢鑷姩灝嗗紩鐢ㄨ鏁伴檷涓?銆?

銆銆 濡傛灉涓嶅嚭鐜板紓甯革紝鍙鍦ㄤ嬌鐢ㄥ畬m_pDBConn錛屽彧瑕佸紩鐢–lose鏂規硶鍗沖彲銆?

銆銆 2.鍒涘緩浣犳墍闇鐨刄DL鏂囦歡

銆銆 鍦ㄤ綘鎵鎯沖垱寤篣DL鏂囦歡鐨勭洰褰曚腑鍗曞嚮鍙抽敭錛岄夋嫨浠庤彍鍗?鏂板緩|Microsoft 鏁版嵁榪炴帴錛岀劧鍚庡皢鏂板垱寤虹殑UDL鏂囦歡鏇存敼涓轟綘鎵甯屾湜鐨勬枃浠跺悕錛?UDL鎵╁睍鍚嶄笉鑳芥敼鍙橈級銆?



]]>
鍦╒isual C++涓敤ADO榪涜鏁版嵁搴撶紪紼?http://m.shnenglu.com/ivenher/articles/992.html鐖遍キ鐩?/dc:creator>鐖遍キ鐩?/author>Wed, 09 Nov 2005 02:49:00 GMThttp://m.shnenglu.com/ivenher/articles/992.htmlhttp://m.shnenglu.com/ivenher/comments/992.htmlhttp://m.shnenglu.com/ivenher/articles/992.html#Feedback0http://m.shnenglu.com/ivenher/comments/commentRss/992.htmlhttp://m.shnenglu.com/ivenher/services/trackbacks/992.html




銆1. 鐢熸垚搴旂敤紼嬪簭妗嗘灦騫跺垵濮嬪寲OLE/COM搴撶幆澧?

銆銆鍒涘緩涓涓爣鍑嗙殑MFC AppWizard(exe)搴旂敤紼嬪簭錛岀劧鍚庡湪浣跨敤ADO鏁版嵁搴?/A>鐨処nitInstance鍑芥暟涓垵濮嬪寲OLE/COM搴擄紙鍥犱負ADO搴撴槸涓涓狢OM DLL搴擄級銆?BR>鏈緥涓猴細
銆BOOL CAdotestDlg::OnInitDialog()
銆{
        ::CoInitialize(NULL); //鍒濆鍖朞LE/COM搴撶幆澧?
  } 
紼嬪簭鏈鍚庤璋冪敤 ::CoUninitialize()錛?/閲婃斁紼嬪簭鍗犵敤鐨凜OM 璧勬簮銆?BR>鍙﹀錛?/TD>
m_pRecordset->Close(); 娉ㄦ剰錛侊紒錛佷笉瑕佸嬈″叧闂紒錛侊紒錛侊紒錛侊紒錛侊紒錛侊紒錛?
m_pConnection->Close();
m_pRecordset = NULL;
m_pConnection = NULL; 
銆2. 寮曞叆ADO搴?A target=_blank>鏂囦歡

銆銆浣跨敤ADO鍓嶅繀欏誨湪宸ョ▼鐨剆tdafx.h鏂囦歡鏈鍚庣敤鐩存帴寮曞叆絎﹀彿錛僫mport寮曞叆ADO搴?A target=_blank>鏂囦歡錛屼互浣跨紪璇戝櫒鑳芥紜紪璇戙備唬鐮佸涓嬶細
#import "C:\Program Files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
銆  ADO綾葷殑瀹氫箟鏄綔涓轟竴縐嶈祫婧愬瓨鍌ㄥ湪ADO DLL(msado15.dll錛変腑錛屽湪鍏跺唴閮ㄧО涓虹被鍨嬪簱銆傜被鍨嬪簱鎻忚堪浜嗚嚜娌繪帴鍙o紝浠ュ強C錛嬶紜浣跨敤鐨凜OM vtable鎺ュ彛銆傚綋浣跨敤錛僫mport鎸囦護鏃訛紝鍦ㄨ繍琛屾椂Visual C錛嬶紜闇瑕佷粠ADO DLL涓鍙栬繖涓被鍨嬪簱錛屽茍浠ユ鍒涘緩涓緇凜錛嬶紜澶?A target=_blank>鏂囦歡銆傝繖浜涘ご鏂囦歡鍏鋒湁.tli 鍜?tlh鎵╁睍鍚嶏紝璇昏呭彲浠ュ湪欏圭洰鐨勭洰褰曚笅鎵懼埌榪欎袱涓?A target=_blank>鏂囦歡銆傚湪C錛嬶紜紼嬪簭浠g爜涓皟鐢ㄧ殑ADO綾昏鍦ㄨ繖浜?A target=_blank>鏂囦歡涓畾涔夈?
  銆紼嬪簭鐨勭涓夎鎸囩ずADO瀵硅薄涓嶄嬌鐢ㄥ悕縐扮┖闂淬傚湪鏈変簺搴旂敤紼嬪簭涓紝鐢變簬搴旂敤紼嬪簭涓殑瀵硅薄涓嶢DO涓殑瀵硅薄涔嬮棿鍙兘浼氬嚭鐜板懡鍚嶅啿紿侊紝鎵浠ユ湁蹇呰浣跨敤鍚嶇О絀洪棿銆傚鏋滆浣跨敤鍚嶇О絀洪棿錛屽垯鍙妸絎笁琛?A target=_blank>紼嬪簭淇敼涓猴細 rename_namespace("AdoNS")銆傜鍥涜浠g爜灝咥DO涓殑EOF(鏂囦歡緇撴潫)鏇村悕涓篴doEOF錛屼互閬垮厤涓庡畾涔変簡鑷繁鐨凟OF鐨勫叾浠栧簱鍐茬獊銆?

銆3錛庡埄鐢ㄦ櫤鑳芥寚閽堣繘琛?A target=_blank>鏁版嵁搴?/A>鎿嶄綔

銆銆鍦–aboutDlg澶?A target=_blank>鏂囦歡涓畾涔変袱涓狝DO鏅鴻兘鎸囬拡綾誨疄渚?騫跺湪瀵硅瘽妗嗕腑鍔犲叆涓涓狶istCtrl銆?BR>銆
 class CAdotestDlg : public CDialog
{
     _ConnectionPtr m_pConnection;
     _RecordsetPtr m_pRecordset;
銆銆 ClistCtrl m_List; 
     ......
}     
ADO搴撳寘鍚笁涓櫤鑳芥寚閽?_ConnectionPtr銆乢CommandPtr鍜宊RecordsetPtr銆?BR>
_ConnectionPtr閫氬父琚敤鏉ュ垱寤轟竴涓暟鎹繛鎺ユ垨鎵ц涓鏉′笉榪斿洖浠諱綍緇撴灉鐨凷QL璇彞錛屽涓涓瓨鍌ㄨ繃紼嬨?BR>_CommandPtr榪斿洖涓涓褰曢泦銆傚畠鎻愪緵浜嗕竴縐嶇畝鍗曠殑鏂規硶鏉ユ墽琛岃繑鍥炶褰曢泦鐨勫瓨鍌ㄨ繃紼嬪拰SQL璇彞銆傚湪浣跨敤_CommandPtr鎺ュ彛鏃訛紝鍙互鍒╃敤鍏ㄥ眬_ConnectionPtr鎺ュ彛錛屼篃鍙互鍦╛CommandPtr鎺ュ彛閲岀洿鎺ヤ嬌鐢ㄨ繛鎺ヤ覆銆俖RecordsetPtr鏄竴涓褰曢泦瀵硅薄銆備笌浠ヤ笂涓ょ瀵硅薄鐩告瘮錛屽畠瀵硅褰曢泦鎻愪緵浜嗘洿澶氱殑鎺у埗鍔熻兘錛屽璁板綍閿佸畾銆佹父鏍囨帶鍒剁瓑銆?

銆銆鍦ㄤ嬌鐢ˋDO紼嬪簭鐨勪簨浠跺搷搴斾腑OnButton1鍔犲叆浠ヤ笅浠g爜:
void CAdotestDlg::OnButton1() 
{
	m_List.ResetContent();
	m_pConnection.CreateInstance(_uuidof(Connection)); //鍒濆鍖朇onnection鎸囬拡
	m_pRecordset.CreateInstance(_uuidof(Recordset));//鍒濆鍖朢ecordset鎸囬拡

	try
	{
		m_pConnection->Open("DSN=ADOTest","","",0); //榪炴帴鍙綔ADOTest鐨凮DBC鏁版嵁婧?
		//娉ㄦ剰錛氳繖鏄繛鎺ヤ笉闇瑕佺敤鎴稩D鎴栧瘑鐮佺殑open 鍑芥暟
		// 鍚﹀垯褰㈠紡涓?->Open("DSN=test;uid=sa;pwd=123;","","",0); 
	

		// 鎵цSQL璇彞寰楀埌涓涓褰曢泦鎶婂叾鎸囬拡璧嬪肩粰m_pRecordset
		CString strSql="select * from middle";
		BSTR bstrSQL = strSql.AllocSysString(); 
		m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText); 
		//adOpenDynamic錛氬姩鎬?adLockOptimistic涔愯灝侀攣娉?adCmdText錛氭枃鏈煡璇㈣鍙?

		while(!m_pRecordset->adoEOF)//閬嶅巻鎵鏈夎褰?
		{ 
			//鍙栫邯褰曞瓧孌靛兼柟寮忎箣涓
			_variant_t TheValue; //VARIANT鏁版嵁綾誨瀷
			TheValue = m_pRecordset->GetCollect("BIG_NAME");//寰楀埌瀛楁BIG_NAME鐨勫?
			if(TheValue.vt!=VT_NULL)
				m_List.AddString((char*)_bstr_t(TheValue));
			//灝嗚鍊煎姞鍏ュ埌鍒楄〃鎺т歡涓?
	
			//鍙栫邯褰曞瓧孌靛兼柟寮忎箣浜?
			// _bstr_t TheValue1=m_pRecordset->Fields->GetItem("BIG_NAME")->Value;
			// CString temp=TheValue1.copy();
			// m_List.AddString(temp);

			//鏁版嵁綾誨瀷杞崲
			_variant_t vUsername,vBirthday,vID,vOld;
			TRACE("id:%d,濮撳悕:%s,騫撮緞:%d,鐢熸棩:%s\r\n",
			vID.lVal,(LPCTSTR)(_bstr_t)vUsername,vOld.lVal,(LPCTSTR)(_bstr_t)vBirthday);


			m_pRecordset->MoveNext();//杞埌涓嬩竴鏉$邯褰?
		}
		m_pRecordset->Close();
		m_pConnection->Close();
	}
	catch (_com_error e)//寮傚父澶勭悊
	{
		AfxMessageBox(e.ErrorMessage());
	}
	m_pRecordset->Close(); //娉ㄦ剰錛侊紒錛佷笉瑕佸嬈″叧闂紒錛侊紒錛佸惁鍒欎細鍑洪敊
	m_pConnection->Close();
	m_pRecordset = NULL;
	m_pConnection = NULL; 
} 
銆銆紼嬪簭涓氳繃_variant_t鍜宊bstr_t杞崲COM瀵硅薄鍜孋錛嬶紜綾誨瀷鐨勬暟鎹? _variant_t綾誨皝瑁呬簡OLE鑷不VARIANT鏁版嵁綾誨瀷銆傚湪C++涓嬌鐢╛variant_t綾昏姣旂洿鎺ヤ嬌鐢╒ARIANT鏁版嵁綾誨瀷瀹規槗寰楀銆?

銆銆濂斤紝緙栬瘧鍚庤紼嬪簭灝辮兘榪愯浜嗭紝浣嗚浣忚繍琛屽墠瑕佸垱寤轟竴涓彨ADOTest鐨凮DBC鏁版嵁婧愩傝紼嬪簭灝嗘妸琛╩iddle涓殑BIG_NAME瀛楁鍊兼樉紺哄湪鍒楄〃鎺т歡涓?BR>


銆4錛庢墽琛孲QL鍛戒護騫跺彇寰楃粨鏋滆褰曢泦

    涓轟簡鍙栧緱緇撴灉璁板綍闆嗭紝鎴戜滑瀹氫箟涓涓寚鍚慠ecordset瀵硅薄鐨勬寚閽?_RecordsetPtr m_pRecordset;
騫朵負鍏跺垱寤篟ecordset瀵硅薄鐨勫疄渚? m_pRecordset.CreateInstance("ADODB.Recordset");
SQL鍛戒護鐨勬墽琛屽彲浠ラ噰鐢ㄥ縐嶅艦寮忥紝涓嬮潰鎴戜滑涓榪涜闃愯堪銆?BR>
(1)鍒╃敤Connection瀵硅薄鐨凟xecute鏂規硶鎵цSQL鍛戒護
Execute鏂規硶鐨勫師鍨嬪涓嬫墍紺?
     _RecordsetPtr Connection15::Execute ( _bstr_t CommandText, VARIANT * RecordsAffected, long Options ) 
     鍏朵腑CommandText鏄懡浠ゅ瓧涓詫紝閫氬父鏄疭QL鍛戒護銆?

	鍙傛暟RecordsAffected鏄搷浣滃畬鎴愬悗鎵褰卞搷鐨勮鏁? 

	鍙傛暟Options琛ㄧずCommandText涓唴瀹圭殑綾誨瀷錛孫ptions鍙互鍙栧涓嬪間箣涓錛?
	adCmdText:琛ㄦ槑CommandText鏄枃鏈懡浠?
	adCmdTable:琛ㄦ槑CommandText鏄竴涓〃鍚?
	adCmdProc:琛ㄦ槑CommandText鏄竴涓瓨鍌ㄨ繃紼?
	adCmdUnknown:鏈煡

    Execute鎵ц瀹屽悗榪斿洖涓涓寚鍚戣褰曢泦鐨勬寚閽堬紝涓嬮潰鎴戜滑緇欏嚭鍏蜂綋浠g爜騫朵綔璇存槑銆?
    _variant_t RecordsAffected;
    ///鎵цSQL鍛戒護錛欳REATE TABLE鍒涘緩琛ㄦ牸users,users鍖呭惈鍥涗釜瀛楁:鏁村艦ID,瀛楃涓瞮sername,鏁村艦old,鏃ユ湡鍨媌irthday
    m_pConnection->Execute("CREATE TABLE users(ID INTEGER,username TEXT,old INTEGER,birthday DATETIME)",
			&RecordsAffected,
			adCmdText);
    ///寰琛ㄦ牸閲岄潰娣誨姞璁板綍
    m_pConnection->Execute("INSERT INTO users(ID,username,old,birthday) VALUES (1, ''''Washington'''',25,''''1970/1/1'''')",&RecordsAffected,adCmdText);
    ///灝嗘墍鏈夎褰昽ld瀛楁鐨勫煎姞涓
    m_pConnection->Execute("UPDATE users SET old = old+1",&RecordsAffected,adCmdText);
    ///鎵цSQL緇熻鍛戒護寰楀埌鍖呭惈璁板綍鏉℃暟鐨勮褰曢泦
    m_pRecordset =  m_pConnection->Execute("SELECT COUNT(*) FROM users",&RecordsAffected,adCmdText);
    _variant_t vIndex = (long)0;
    _variant_t vCount = m_pRecordset->GetCollect(vIndex);///鍙栧緱絎竴涓瓧孌電殑鍊兼斁鍏Count鍙橀噺
    涓婁袱鍙ュ彲浠ュ啓鎴愨?_variant_t vCount = m_pRecordset->GetCollect((_variant_t)((long)0));
    m_pRecordset->Close();///鍏抽棴璁板綍闆?
    CString message;
    message.Format("鍏辨湁%d鏉¤褰?,vCount.lVal);
    AfxMessageBox(message);///鏄劇ず褰撳墠璁板綍鏉℃暟
(2)鍒╃敤Command瀵硅薄鏉ユ墽琛孲QL鍛戒護
_CommandPtr m_pCommand;
m_pCommand.CreateInstance("ADODB.Command");
_variant_t vNULL;
vNULL.vt = VT_ERROR;
vNULL.scode = DISP_E_PARAMNOTFOUND;///瀹氫箟涓烘棤鍙傛暟
m_pCommand->ActiveConnection = m_pConnection;///闈炲父鍏抽敭鐨勪竴鍙ワ紝灝嗗緩绔嬬殑榪炴帴璧嬪肩粰瀹?
m_pCommand->CommandText = "SELECT * FROM users";///鍛戒護瀛椾覆
m_pRecordset = m_pCommand->Execute(&vNULL,&vNULL,adCmdText);///鎵ц鍛戒護錛屽彇寰楄褰曢泦
    鍦ㄨ繖孌典唬鐮佷腑鎴戜滑鍙槸鐢–ommand瀵硅薄鏉ユ墽琛屼簡SELECT鏌ヨ璇彞錛孋ommand瀵硅薄鍦ㄨ繘琛屽瓨鍌ㄨ繃紼嬬殑璋冪敤涓兘鐪熸浣撶幇瀹冪殑浣滅敤銆備笅嬈℃垜浠皢璇︾粏浠嬬粛銆?

(3)鐩存帴鐢≧ecordset瀵硅薄榪涜鏌ヨ鍙栧緱璁板綍闆?
瀹炰緥鈥斺?/TD>
void CGmsaDlg::OnDBSelect() 
{
    // TODO: Add your control notification handler code here
     _RecordsetPtr Rs1;  //瀹氫箟Recordset瀵硅薄
    _bstr_t Connect("DSN=GMS;UID=sa;PWD=;");//瀹氫箟榪炴帴瀛楃涓?
    _bstr_t Source ("SELECT count(*) FROM buaa.mdb010");  //瑕佹墽琛岀殑SQL璇彞
    ::CoInitialize(NULL);    //鍒濆鍖朢s1瀵硅薄
        HRESUL hr = Rs1.CreateInstance( __uuidof( Recordset ) );
       //鐪佺暐瀵硅繑鍥炲糷r鐨勫垽鏂?
     Rs1->Open( Source,
            Connect,
                adOpenForwardOnly,
                    adLockReadOnly,
            -1 ); 
    _variant_t temp=Rs1->GetCollect(_variant_t((long)0));
    CString strTemp=(char* )(_bstr_t)temp;
    MessageBox("OK!"+strTemp);
}

渚嬪 

  m_pRecordset->Open("SELECT * FROM users",
		_variant_t((IDispatch *)m_pConnection,true),
		adOpenStatic,
		adLockOptimistic,
		adCmdText);

Open鏂規硶鐨勫師鍨嬫槸榪欐牱鐨?
HRESULT Recordset15::Open ( const _variant_t & Source, 
			const _variant_t & ActiveConnection, 
			enum CursorTypeEnum CursorType, 
			enum LockTypeEnum LockType, 
			long Options ) 
鍏朵腑錛?
鈶燬ource鏄暟鎹煡璇?A  target=_blank>瀛楃涓?
鈶ctiveConnection鏄凡緇忓緩绔嬪ソ鐨勮繛鎺ワ紙鎴戜滑闇瑕佺敤Connection瀵硅薄鎸囬拡鏉ユ瀯閫犱竴涓猒variant_t瀵硅薄) 
鈶ursorType鍏夋爣綾誨瀷錛屽畠鍙互鏄互涓嬪間箣涓,璇風湅榪欎釜鏋氫婦緇撴瀯:
enum CursorTypeEnum
{
	adOpenUnspecified = -1,///涓嶄綔鐗瑰埆鎸囧畾
	adOpenForwardOnly = 0,///鍓嶆粴闈欐佸厜鏍囥傝繖縐嶅厜鏍囧彧鑳藉悜鍓嶆祻瑙堣褰曢泦錛屾瘮濡傜敤MoveNext鍚戝墠婊氬姩,榪欑鏂瑰紡鍙互鎻愰珮嫻忚閫熷害銆備絾璇稿BookMark,RecordCount,AbsolutePosition,AbsolutePage閮戒笉鑳戒嬌鐢?
	adOpenKeyset = 1,///閲囩敤榪欑鍏夋爣鐨勮褰曢泦鐪嬩笉鍒板叾瀹冪敤鎴風殑鏂板銆佸垹闄ゆ搷浣滐紝浣嗗浜庢洿鏂板師鏈夎褰曠殑鎿嶄綔瀵逛綘鏄彲瑙佺殑銆?
	adOpenDynamic = 2,///鍔ㄦ佸厜鏍囥傛墍鏈?A  target=_blank>鏁版嵁搴?/A>鐨勬搷浣滈兘浼氱珛鍗沖湪鍚勭敤鎴瘋褰曢泦涓婂弽搴斿嚭鏉ャ?
	adOpenStatic = 3///闈欐佸厜鏍囥傚畠涓轟綘鐨勮褰曢泦浜х敓涓涓潤鎬佸浠斤紝浣嗗叾瀹冪敤鎴風殑鏂板銆佸垹闄ゃ佹洿鏂版搷浣滃浣犵殑璁板綍闆嗘潵璇存槸涓嶅彲瑙佺殑銆?
};
鈶ockType閿佸畾綾誨瀷錛屽畠鍙互鏄互涓嬪間箣涓錛岃鐪嬪涓嬫灇涓劇粨鏋勶細
enum LockTypeEnum
{
	adLockUnspecified = -1,///鏈寚瀹?
	adLockReadOnly = 1,///鍙璁板綍闆?
	adLockPessimistic = 2,鎮茶閿佸畾鏂瑰紡銆傛暟鎹湪鏇存柊鏃墮攣瀹氬叾瀹冩墍鏈夊姩浣滐紝榪欐槸鏈瀹夊叏鐨勯攣瀹氭満鍒?
	adLockOptimistic = 3,涔愯閿佸畾鏂瑰紡銆傚彧鏈夊湪浣犺皟鐢║pdate鏂規硶鏃舵墠閿佸畾璁板綍銆傚湪姝や箣鍓嶄粛鐒跺彲浠ュ仛鏁版嵁鐨勬洿鏂般佹彃鍏ャ佸垹闄ょ瓑鍔ㄤ綔
	adLockBatchOptimistic = 4錛屼箰瑙傚垎鎵規洿鏂般傜紪杈戞椂璁板綍涓嶄細閿佸畾錛屾洿鏀廣佹彃鍏ュ強鍒犻櫎鏄湪鎵瑰鐞嗘ā寮忎笅瀹屾垚銆?
}; 
鈶ptions鍙互鍙栧涓嬪間箣涓錛?
	adCmdText:琛ㄦ槑CommandText鏄枃鏈懡浠?
	adCmdTable:琛ㄦ槑CommandText鏄竴涓〃鍚?
	adCmdProc:琛ㄦ槑CommandText鏄竴涓瓨鍌ㄨ繃紼?
	adCmdUnknown:鏈煡
 5. 璁板綍闆嗙殑閬嶅巻銆佹洿鏂?BR>    鏍規嵁鎴戜滑鍒氭墠閫氳繃鎵цSQL鍛戒護寤虹珛濂界殑users琛紝瀹冨寘鍚洓涓瓧孌?ID,username,old,birthday
浠ヤ笅鐨勪唬鐮佸疄鐜幫細鎵撳紑璁板綍闆嗭紝閬嶅巻鎵鏈夎褰曪紝鍒犻櫎絎竴鏉¤褰曪紝娣誨姞涓夋潯璁板綍錛岀Щ鍔ㄥ厜鏍囧埌絎簩鏉¤褰曪紝
鏇存敼鍏跺勾榫勶紝淇濆瓨鍒?A target=_blank>鏁版嵁搴?/A>銆?/TD>
_variant_t vUsername,vBirthday,vID,vOld;
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open("SELECT * FROM users",
		_variant_t((IDispatch*)m_pConnection,true),
		adOpenStatic,
		adLockOptimistic,
		adCmdText);
while(!m_pRecordset->adoEOF)
{
    vID = m_pRecordset->GetCollect(_variant_t((long)0));///鍙栧緱絎?鍒楃殑鍊?浠?寮濮嬭鏁幫紝
    ///浣犱篃鍙互鐩存帴緇欏嚭鍒楃殑鍚嶇О錛屽涓嬩竴琛?
    vUsername = m_pRecordset->GetCollect("username");///鍙栧緱username瀛楁鐨勫?
    vOld = m_pRecordset->GetCollect("old");
    vBirthday = m_pRecordset->GetCollect("birthday");
    ///鍦―EBUG鏂瑰紡涓嬬殑OUTPUT紿楀彛杈撳嚭璁板綍闆嗕腑鐨勮褰?
    if(vID.vt != VT_NULL && vUsername.vt != VT_NULL && vOld.vt != VT_NULL && vBirthday.vt != VT_NULL)
        TRACE("id:%d,濮撳悕:%s,騫撮緞:%d,鐢熸棩:%s\r\n",
		vID.lVal,
		(LPCTSTR)(_bstr_t)vUsername,
		vOld.lVal,
		(LPCTSTR)(_bstr_t)vBirthday);
    m_pRecordset->MoveNext();///縐誨埌涓嬩竴鏉¤褰?
}
m_pRecordset->MoveFirst();///縐誨埌棣栨潯璁板綍
m_pRecordset->Delete(adAffectCurrent);///鍒犻櫎褰撳墠璁板綍
///娣誨姞涓夋潯鏂拌褰曞茍璧嬪?
for(int i=0;i<3;i++)
{
    m_pRecordset->AddNew();///娣誨姞鏂拌褰?
    m_pRecordset->PutCollect("ID",_variant_t((long)(i+10)));
    m_pRecordset->PutCollect("username",_variant_t("鍙跺埄閽?));
    m_pRecordset->PutCollect("old",_variant_t((long)71));
    m_pRecordset->PutCollect("birthday",_variant_t("1930-3-15"));
}
m_pRecordset->Move(1,_variant_t((long)adBookmarkFirst));///浠庣涓鏉¤褰曞線涓嬬Щ鍔ㄤ竴鏉¤褰?鍗崇Щ鍔ㄥ埌絎簩鏉¤褰曞
m_pRecordset->PutCollect(_variant_t("old"),_variant_t((long)45));///淇敼鍏跺勾榫?
m_pRecordset->Update();///淇濆瓨鍒板簱涓?   
澶囨敞錛氬嬈℃煡璇㈠彲鎶婃煡璇㈣繃紼嬪仛鎴愪竴涓嚱鏁癊xecuteSQL璁﹎_pRecordset鑾峰緱榪炴帴鎸囬拡m_pConnection鏌ヨ緇撴灉
void ExecuteSQL(_ConnectionPtr  m_pConnection, _RecordsetPtr  m_pRecordset,CString strSql)
{
    //鎵цSelect 璇彞
    BSTR bstrSQL = strSql.AllocSysString();           
     try
     {
        m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText); 
            //adOpenDynamic錛氬姩鎬? adLockOptimistic涔愯灝侀攣娉? adCmdText錛氭枃鏈煡璇㈣鍙?

     }

     catch(_com_error error)
     {
        CString errorMessage;
        errorMessage.Format("%s",(LPTSTR)error.Description());
        AfxMessageBox(errorMessage);
     }
}        

//鍑洪敊澶勭悊錛?
3127鈥斺旀病鏈夋壘鍒扮洰鏍囪〃
3092鈥斺旂洰鏍囪〃宸茬粡瀛樺湪
渚嬪錛?
catch(const _com_error e)
{
     AfxMessageBox(e.Description());
     long errorCode=e.WCode();
     if(3127==errorCode) AfxMessageBox("琛ㄤ笉瀛樺湪");
     if(3092==errorCode) AfxMessageBox("琛ㄥ凡緇忓瓨鍦?);
     return FALSE;
} 
    


]]>
ADO榪炴帴瀛楃涓?/title><link>http://m.shnenglu.com/ivenher/articles/827.html</link><dc:creator>鐖遍キ鐩?/dc:creator><author>鐖遍キ鐩?/author><pubDate>Mon, 24 Oct 2005 08:19:00 GMT</pubDate><guid>http://m.shnenglu.com/ivenher/articles/827.html</guid><wfw:comment>http://m.shnenglu.com/ivenher/comments/827.html</wfw:comment><comments>http://m.shnenglu.com/ivenher/articles/827.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/ivenher/comments/commentRss/827.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ivenher/services/trackbacks/827.html</trackback:ping><description><![CDATA[<div id="hvzpftn" class=postTitle><A id=_f3879933b975fd50_HomePageDays_DaysList__ctl0_DayItem_DayList__ctl0_TitleUrl >www.connectionstrings.com</A> </DIV> <div id="hvzpftn" class=postText> <DIV><FONT size=2><span id="hvzpftn" class=toplvl ondblclick=menu(sqlserver); style="CURSOR: hand" onclick=menu(sqlserver);><FONT face=Courier size=3> </FONT> <LI style="LIST-STYLE-IMAGE: url(icon/iconsql.gif)"> SQL Server </SPAN> <UL><SPAN id=sqlserver><span id="hvzpftn" class=seclvl ondblclick=menu(sqlserverodbc); style="CURSOR: hand" onclick=menu(sqlserverodbc);> <LI style="LIST-STYLE-IMAGE: url(icon/iconsql.gif)"> ODBC </SPAN><BR><BR><SPAN id=sqlserverodbc style="CURSOR: default"> <UL> <LI><B> Standard Security:</B><BR> <DIV>"Driver={SQL Server};Server=Aron1;Database=pubs;Uid=sa;Pwd=asdasd;" </DIV><BR><BR> <LI><B> Trusted connection:</B><BR> <DIV>"Driver={SQL Server};Server=Aron1;Database=pubs;Trusted_Connection=yes;" </DIV><BR><BR> <LI><B> Prompt for username and password:</B><BR> <DIV>oConn.Properties("Prompt") = adPromptAlways<BR>oConn.Open "Driver={SQL Server};Server=Aron1;DataBase=pubs;" </DIV><BR><BR></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(sqlserveroledb); style="CURSOR: hand" onclick=menu(sqlserveroledb);> <LI style="LIST-STYLE-IMAGE: url(icon/iconsql.gif)"> OLE DB, OleDbConnection (.NET) </SPAN><BR><BR><SPAN id=sqlserveroledb style="CURSOR: default"> <UL> <LI><B> Standard Security:</B><BR> <DIV>"Provider=sqloledb;Data Source=Aron1;Initial Catalog=pubs;User Id=sa;Password=asdasd;" </DIV><BR><BR> <LI><B> Trusted Connection:</B><BR> <DIV>"Provider=sqloledb;Data Source=Aron1;Initial Catalog=pubs;Integrated Security=SSPI;" <BLOCKQUOTE><I>(use serverName\instanceName as Data Source to use an specifik SQLServer instance, only SQLServer2000)</I></BLOCKQUOTE></DIV> <LI><B> Prompt for username and password:</B><BR> <DIV>oConn.Provider = "sqloledb"<BR>oConn.Properties("Prompt") = adPromptAlways<BR>oConn.Open "Data Source=Aron1;Initial Catalog=pubs;" </DIV><BR><BR> <LI><B> Connect via an IP address:</B><BR> <DIV>"Provider=sqloledb;Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=pubs;User ID=sa;Password=asdasd;" <BLOCKQUOTE><I>(DBMSSOCN=TCP/IP instead of Named Pipes, at the end of the Data Source is the port to use (1433 is the default))</I></BLOCKQUOTE></DIV></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(sqlserveradonet); style="CURSOR: hand" onclick=menu(sqlserveradonet);> <LI style="LIST-STYLE-IMAGE: url(icon/iconsql.gif)"> SqlConnection (.NET) </SPAN><BR><BR><SPAN id=sqlserveradonet style="CURSOR: default"> <UL> <LI><B> Standard Security:</B><BR> <DIV>"Data Source=Aron1;Initial Catalog=pubs;User Id=sa;Password=asdasd;" <BR><I>   - or -</I><BR>"Server=Aron1;Database=pubs;User ID=sa;Password=asdasd;Trusted_Connection=False" <BR><I>   (booth connection strings produces the same result)</I><BR></DIV><BR><BR> <LI><B> Trusted Connection:</B><BR> <DIV>"Data Source=Aron1;Initial Catalog=pubs;Integrated Security=SSPI;" <BR><I>   - or -</I><BR>"Server=Aron1;Database=pubs;Trusted_Connection=True;" <BR><I>   (booth connection strings produces the same result)</I><BR> <BLOCKQUOTE><I>(use serverName\instanceName as Data Source to use an specifik SQLServer instance, only SQLServer2000)</I></BLOCKQUOTE></DIV> <LI><B> Connect via an IP address:</B><BR> <DIV>"Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=pubs;User ID=sa;Password=asdasd;" <BLOCKQUOTE><I>(DBMSSOCN=TCP/IP instead of Named Pipes, at the end of the Data Source is the port to use (1433 is the default))</I></BLOCKQUOTE></DIV> <LI><B> Declare the SqlConnection:</B><BR> <DIV> <BLOCKQUOTE><I><U>C#:</U><BR>using System.Data.SqlClient;<BR>SqlConnection oSQLConn = new SqlConnection();<BR>oSQLConn.ConnectionString="my connectionstring";<BR>oSQLConn.Open(); </BLOCKQUOTE></DIV><BR><BR><U>VB.NET:</U><BR>Imports System.Data.SqlClient<BR>Dim oSQLConn As SqlConnection = New SqlConnection()<BR>oSQLConn.ConnectionString="my connectionstring"<BR>oSQLConn.Open() <DIV></DIV><BR><BR></I> <BLOCKQUOTE></BLOCKQUOTE></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(sqlserverother); style="CURSOR: hand" onclick=menu(sqlserverother);> <LI style="LIST-STYLE-IMAGE: url(icon/iconsql.gif)"> Data Shape </SPAN><BR><BR><SPAN id=sqlserverother style="CURSOR: default"> <UL> <LI><B> MS Data Shape</B><BR>"Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=Aron1;Initial Catalog=pubs;User ID=sa;Password=asdasd;" <BLOCKQUOTE><I>Want to learn data shaping? Check out 4GuyfFromRolla's <A title=http://www.4guysfromrolla.com/webtech/092599-1.shtml >great article about Data Shaping >></A></I></BLOCKQUOTE></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(sqlserverreadmore); style="CURSOR: hand" onclick=menu(sqlserverreadmore);> <LI style="LIST-STYLE-IMAGE: url(icon/iconreadmore.gif)"> Read more </SPAN><BR><BR><SPAN id=sqlserverreadmore style="DISPLAY: none; CURSOR: default"> <UL><span id="hvzpftn" class=seclvl ondblclick=menu(sqlserverreadmorenetprot); style="CURSOR: hand" onclick=menu(sqlserverreadmorenetprot);> <LI style="LIST-STYLE-IMAGE: url(icon/iconreadmore.gif)"> How to define wich network protocol to use<BR><BR></SPAN><SPAN id=sqlserverreadmorenetprot style="DISPLAY: none; CURSOR: default"> <UL> <LI style="LIST-STYLE-IMAGE: url(icon/iconreadmore.gif)"> <DIV>Example:<BR>"Provider=sqloledb;Data Source=190.190.200.100,1433;<B><U>Network Library=DBMSSOCN</U></B>;Initial Catalog=pubs;User ID=sa;Password=asdasd;" <BR><BR> <TABLE> <TBODY> <TR> <TD width=100><FONT size=0><B><U>Name</U></B></FONT></TD> <TD><FONT size=0><B><U>Network library</U></B></FONT></TD></TR> <TR> <TD><FONT size=0>dbnmpntw</FONT></TD> <TD><FONT size=0>Win32 Named Pipes</FONT></TD></TR> <TR> <TD><FONT size=0>dbmssocn</FONT></TD> <TD><FONT size=0>Win32 Winsock TCP/IP</FONT></TD></TR> <TR> <TD><FONT size=0>dbmsspxn</FONT></TD> <TD><FONT size=0>Win32 SPX/IPX</FONT></TD></TR> <TR> <TD><FONT size=0>dbmsvinn</FONT></TD> <TD><FONT size=0>Win32 Banyan Vines</FONT></TD></TR> <TR> <TD><FONT size=0>dbmsrpcn</FONT></TD> <TD><FONT size=0>Win32 Multi-Protocol (Windows RPC)</FONT></TD></TR></TBODY></TABLE><FONT size=0><BR><BR><B>Important note!</B> <BR>When connecting through the SQLOLEDB provider use the syntax <I><U>Network Library</U>=dbmssocn</I><BR>and when connecting through MSDASQL provider use the syntax <I><U>Network</U>=dbmssocn</I> <BR><BR></FONT></DIV></LI></UL></SPAN></LI></UL> <UL><span id="hvzpftn" class=seclvl ondblclick=menu(sqlserverreadmoreallprops); style="CURSOR: hand" onclick=menu(sqlserverreadmoreallprops);> <LI style="LIST-STYLE-IMAGE: url(icon/iconreadmore.gif)"> All SqlConnection connectionstring properties<BR><BR></SPAN><SPAN id=sqlserverreadmoreallprops style="DISPLAY: none; CURSOR: default"> <UL> <LI style="LIST-STYLE-IMAGE: url(icon/iconreadmore.gif)"> <DIV>This table shows all connectionstring properties for the ADO.NET SqlConnection object. Most of the properties are also used in ADO. All properties and descriptions is from msdn. <BR><BR> <TABLE class=normaltxt style="BORDER-COLLAPSE: collapse" borderColor=#aaaaaa cellSpacing=0 cellPadding=4 border=1> <TBODY> <TR vAlign=top bgColor=#cccccc> <TH>Name</TH> <TH>Default</TH> <TH>Description</TH></TR> <TR vAlign=top> <TD>Application Name</TD> <TD> </TD> <TD>The name of the application, or '.Net SqlClient Data Provider' if no application name is provided.</TD></TR> <TR vAlign=top> <TD>AttachDBFilename<BR>-or-<BR>extended properties<BR>-or-<BR>Initial File Name</TD> <TD> </TD> <TD>The name of the primary file, including the full path name, of an attachable database. The database name must be specified with the keyword 'database'.</TD></TR> <TR vAlign=top> <TD>Connect Timeout<BR>-or-<BR>Connection Timeout</TD> <TD>15</TD> <TD>The length of time (in seconds) to wait for a connection to the server before terminating the attempt and generating an error.</TD></TR> <TR vAlign=top> <TD>Connection Lifetime</TD> <TD>0</TD> <TD>When a connection is returned to the pool, its creation time is compared with the current time, and the connection is destroyed if that time span (in seconds) exceeds the value specified by connection lifetime. Useful in clustered configurations to force load balancing between a running server and a server just brought on-line.</TD></TR> <TR vAlign=top> <TD>Connection Reset</TD> <TD>'true'</TD> <TD>Determines whether the database connection is reset when being removed from the pool. Setting to 'false' avoids making an additional server round-trip when obtaining a connection, but the programmer must be aware that the connection state is not being reset.</TD></TR> <TR vAlign=top> <TD>Current Language</TD> <TD> </TD> <TD>The SQL Server Language record name.</TD></TR> <TR vAlign=top> <TD>Data Source<BR>-or-<BR>Server<BR>-or-<BR>Address<BR>-or-<BR>Addr<BR>-or-<BR>Network Address</TD> <TD> </TD> <TD>The name or network address of the instance of SQL Server to which to connect.</TD></TR> <TR vAlign=top> <TD>Enlist</TD> <TD>'true'</TD> <TD>When true, the pooler automatically enlists the connection in the creation thread's current transaction context.</TD></TR> <TR vAlign=top> <TD>Initial Catalog<BR>-or-<BR>Database</TD> <TD> </TD> <TD>The name of the database.</TD></TR> <TR vAlign=top> <TD>Integrated Security<BR>-or-<BR>Trusted_Connection</TD> <TD>'false'</TD> <TD>Whether the connection is to be a secure connection or not. Recognized values are 'true', 'false', and 'sspi', which is equivalent to 'true'.</TD></TR> <TR vAlign=top> <TD>Max Pool Size</TD> <TD>100</TD> <TD>The maximum number of connections allowed in the pool.</TD></TR> <TR vAlign=top> <TD>Min Pool Size</TD> <TD>0</TD> <TD>The minimum number of connections allowed in the pool.</TD></TR> <TR vAlign=top> <TD>Network Library<BR>-or-<BR>Net</TD> <TD>'dbmssocn'</TD> <TD>The network library used to establish a connection to an instance of SQL Server. Supported values include dbnmpntw (Named Pipes), dbmsrpcn (Multiprotocol), dbmsadsn (Apple Talk), dbmsgnet (VIA), dbmsipcn (Shared Memory) and dbmsspxn (IPX/SPX), and dbmssocn (TCP/IP). <BR>The corresponding network DLL must be installed on the system to which you connect. If you do not specify a network and you use a local server (for example, "." or "(local)"), shared memory is used.</TD></TR> <TR vAlign=top> <TD>Packet Size</TD> <TD>8192</TD> <TD>Size in bytes of the network packets used to communicate with an instance of SQL Server.</TD></TR> <TR vAlign=top> <TD>Password<BR>-or-<BR>Pwd</TD> <TD> </TD> <TD>The password for the SQL Server account logging on.</TD></TR> <TR vAlign=top> <TD>Persist Security Info</TD> <TD>'false'</TD> <TD>When set to 'false', security-sensitive information, such as the password, is not returned as part of the connection if the connection is open or has ever been in an open state. Resetting the connection string resets all connection string values including the password.</TD></TR> <TR vAlign=top> <TD>Pooling</TD> <TD>'true'</TD> <TD>When true, the SQLConnection object is drawn from the appropriate pool, or if necessary, is created and added to the appropriate pool.</TD></TR> <TR vAlign=top> <TD>User ID</TD> <TD> </TD> <TD>The SQL Server login account.</TD></TR> <TR vAlign=top> <TD>Workstation ID</TD> <TD>the local computer name</TD> <TD>The name of the workstation connecting to SQL Server.</TD></TR></TBODY></TABLE><FONT size=0><BR><BR><B>Note</B> <BR>Use ; to separate each property.<BR>If a name occurs more than once, the value from the last one in the connectionstring will be used.<BR>If you are building your connectionstring in your app using values from user input fields, make sure the user can't change the connectionstring by inserting an additional property with another value within the user value. </FONT></DIV></LI></UL></SPAN></LI></UL></SPAN></LI></UL></SPAN> <UL></UL><span id="hvzpftn" class=toplvl ondblclick=menu(access); style="CURSOR: hand" onclick=menu(access);> <LI style="LIST-STYLE-IMAGE: url(icon/iconaccess.gif)"> Access </SPAN> <UL><SPAN id=access><span id="hvzpftn" class=seclvl ondblclick=menu(accessodbc); style="CURSOR: hand" onclick=menu(accessodbc);> <LI style="LIST-STYLE-IMAGE: url(icon/iconaccess.gif)"> ODBC </SPAN><BR><BR><SPAN id=accessodbc style="CURSOR: default"> <UL> <LI><B> Standard Security:</B><BR> <DIV>"Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=;" </DIV><BR><BR> <LI><B> Workgroup:</B><BR> <DIV>"Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;SystemDB=C:\mydatabase.mdw;" </DIV><BR><BR> <LI><B> Exclusive:</B><BR> <DIV>"Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Exclusive=1;Uid=admin;Pwd=" </DIV><BR><BR></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(jetoledb); style="CURSOR: hand" onclick=menu(jetoledb);> <LI style="LIST-STYLE-IMAGE: url(icon/iconaccess.gif)"> OLE DB, OleDbConnection (.NET) </SPAN><BR><BR><SPAN id=jetoledb style="CURSOR: default"> <UL> <LI><B> Standard security:</B><BR> <DIV>"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;User Id=admin;Password=;" </DIV><BR><BR> <LI><B> Workgroup (system database):</B><BR> <DIV>"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;Jet OLEDB:System Database=system.mdw;" </DIV><BR><BR> <LI><B> With password:</B><BR> <DIV>"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;Jet OLEDB:Database Password=MyDbPassword;" </DIV><BR><BR></LI></UL></SPAN></SPAN></LI></UL><span id="hvzpftn" class=toplvl ondblclick=menu(oracle); style="CURSOR: hand" onclick=menu(oracle);> <LI style="LIST-STYLE-IMAGE: url(icon/iconoracle.gif)"> Oracle </SPAN> <UL><SPAN id=oracle><span id="hvzpftn" class=seclvl ondblclick=menu(oracleodbc); style="CURSOR: hand" onclick=menu(oracleodbc);> <LI style="LIST-STYLE-IMAGE: url(icon/iconoracle.gif)"> ODBC </SPAN><BR><BR><SPAN id=oracleodbc style="CURSOR: default"> <UL> <LI><B> New version:</B><BR> <DIV>"Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=Username;Pwd=asdasd;" </DIV><BR><BR> <LI><B> Old version:</B><BR> <DIV>"Driver={Microsoft ODBC Driver for Oracle};ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword;" </DIV><BR><BR></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(oracleoledb); style="CURSOR: hand" onclick=menu(oracleoledb);> <LI style="LIST-STYLE-IMAGE: url(icon/iconoracle.gif)"> OLE DB, OleDbConnection (.NET) </SPAN><BR><BR><SPAN id=oracleoledb style="CURSOR: default"> <UL> <LI><B> Standard security:</B><BR> <DIV>"Provider=msdaora;Data Source=MyOracleDB;User Id=UserName;Password=asdasd;" <BLOCKQUOTE><I>This one's from Microsoft, the following are from Oracle</I></BLOCKQUOTE></DIV> <LI><B> Standard Security:</B><BR> <DIV>"Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=Username;Password=asdasd;" </DIV><BR><BR> <LI><B> Trusted Connection:</B><BR> <DIV>"Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;OSAuthent=1;" </DIV><BR><BR></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(oracleadonet); style="CURSOR: hand" onclick=menu(oracleadonet);> <LI style="LIST-STYLE-IMAGE: url(icon/iconoracle.gif)"> OracleConnection (.NET) </SPAN><BR><BR><SPAN id=oracleadonet style="CURSOR: default"> <UL> <LI><B> Standard:</B><BR> <DIV>"Data Source=Oracle8i;Integrated Security=yes"; <BLOCKQUOTE><I>This one works only with Oracle 8i release 3 or later</I></BLOCKQUOTE></DIV> <LI><B> Declare the OracleConnection:</B><BR> <DIV> <BLOCKQUOTE><I><U>C#:</U><BR>using System.Data.OracleClient;<BR>OracleConnection oOracleConn = new OracleConnection();<BR>oOracleConn.ConnectionString = "my connectionstring";<BR>oOracleConn.Open(); </BLOCKQUOTE></DIV><BR><BR><U>VB.NET:</U><BR>Imports System.Data.OracleClient<BR>Dim oOracleConn As OracleConnection = New OracleConnection()<BR>oOracleConn.ConnectionString = "my connectionstring"<BR>oOracleConn.Open() <DIV></DIV><BR><BR></I> <BLOCKQUOTE></BLOCKQUOTE></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(oradirect); style="CURSOR: hand" onclick=menu(oradirect);> <LI style="LIST-STYLE-IMAGE: url(icon/iconoracle.gif)"> Core Labs OraDirect (.NET) </SPAN><BR><BR><SPAN id=oradirect style="CURSOR: default"> <UL> <LI><B> Standard:</B><BR>"User ID=scott; Password=tiger; Host=ora; Pooling=true; Min Pool Size=0;Max Pool Size=100; Connection Lifetime=0" <BLOCKQUOTE>Read more at <I><A title=http://www.crlab.com/ >Core Lab</A> and the <A title=http://www.crlab.com/oranet/ >product page</A>.</I></BLOCKQUOTE></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(oracleother); style="CURSOR: hand" onclick=menu(oracleother);> <LI style="LIST-STYLE-IMAGE: url(icon/iconoracle.gif)"> Data Shape </SPAN><BR><BR><SPAN id=oracleother style="CURSOR: default"> <UL> <LI><B> MS Data Shape:</B><BR>"Provider=MSDataShape.1;Persist Security Info=False;Data Provider=MSDAORA;Data Source=orac;user id=username;password=mypw" <BLOCKQUOTE><I>Want to learn data shaping? Check out 4GuyfFromRolla's <A title=http://www.4guysfromrolla.com/webtech/092599-1.shtml >great article about Data Shaping >></A></I></BLOCKQUOTE></LI></UL></SPAN></SPAN></LI></UL><span id="hvzpftn" class=toplvl ondblclick=menu(mysql); style="CURSOR: hand" onclick=menu(mysql);> <LI style="LIST-STYLE-IMAGE: url(icon/iconmysql.gif)"> MySQL </SPAN> <UL><SPAN id=mysql><span id="hvzpftn" class=seclvl ondblclick=menu(mysqlodbc); style="CURSOR: hand" onclick=menu(mysqlodbc);> <LI style="LIST-STYLE-IMAGE: url(icon/iconmysql.gif)"> ODBC </SPAN><BR><BR><SPAN id=mysqlodbc style="CURSOR: default"> <UL> <LI><B> Local database:</B><BR> <DIV>"Driver={mySQL};Server=mySrvName;Option=16834;Database=mydatabase;" </DIV><BR><BR> <LI><B> Remote database:</B><BR> <DIV>"Driver={mySQL};Server=data.domain.com;Port=3306;Option=131072;Stmt=;Database=my-database;Uid=username;Pwd=password;" </DIV><BR><BR></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(mysqloledb); style="CURSOR: hand" onclick=menu(mysqloledb);> <LI style="LIST-STYLE-IMAGE: url(icon/iconmysql.gif)"> OLE DB, OleDbConnection (.NET) </SPAN><BR><BR><SPAN id=mysqloledb style="CURSOR: default"> <UL> <LI><B> Standard:</B><BR> <DIV>"Provider=MySQLProv;Data Source=mydb;User Id=UserName;Password=asdasd;" </DIV></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(mysqladonet); style="CURSOR: hand" onclick=menu(mysqladonet);> <LI style="LIST-STYLE-IMAGE: url(icon/iconmysql.gif)"> MySqlConnection (.NET) </SPAN><BR><BR><SPAN id=mysqladonet style="CURSOR: default"> <UL> <LI><B> eInfoDesigns.dbProvider:</B><BR> <DIV>"Data Source=server;Database=mydb;User ID=username;Password=pwd;Command Logging=false" <BLOCKQUOTE><I>This one is used with <A title=http://www.einfodesigns.com/ >eInfoDesigns</A> dbProvider, an add-on to .NET</I></BLOCKQUOTE></DIV> <LI><B> Declare the MySqlConnection:</B><BR> <DIV> <BLOCKQUOTE><I><U>C#:</U><BR>using eInfoDesigns.dbProvider.MySqlClient;<BR>MySqlConnection oMySqlConn = new MySqlConnection();<BR>oMySqlConn.ConnectionString = "my connectionstring";<BR>oMySqlConn.Open(); </BLOCKQUOTE></DIV><BR><BR><U>VB.NET:</U><BR>Imports eInfoDesigns.dbProvider.MySqlClient<BR>Dim oMySqlConn As MySqlConnection = New MySqlConnection()<BR>oMySqlConn.ConnectionString = "my connectionstring"<BR>oMySqlConn.Open() <DIV></DIV><BR><BR></I> <BLOCKQUOTE></BLOCKQUOTE></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(mysqlclient); style="CURSOR: hand" onclick=menu(mysqlclient);> <LI style="LIST-STYLE-IMAGE: url(icon/iconmysql.gif)"> SevenObjects MySqlClient (.NET) </SPAN><BR><BR><SPAN id=mysqlclient style="CURSOR: default"> <UL> <LI><B> Standard:</B><BR> <DIV>"Host=server; UserName=myusername; Password=mypassword;Database=mydb;" <BLOCKQUOTE><I>This is a freeware ADO.Net data provider from <A title=http://www.sevenobjects.com/ >SevenObjects</A></I></BLOCKQUOTE></DIV></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(mysqldirect); style="CURSOR: hand" onclick=menu(mysqldirect);> <LI style="LIST-STYLE-IMAGE: url(icon/iconmysql.gif)"> Core Labs MySQLDirect (.NET) </SPAN><BR><BR><SPAN id=mysqldirect style="CURSOR: default"> <UL> <LI><B> Standard:</B><BR> <DIV>"User ID=root; Password=pwd; Host=localhost; Port=3306; Database=test;Direct=true; Protocol=TCP; Compress=false; Pooling=true; Min Pool Size=0;Max Pool Size=100; Connection Lifetime=0" <BLOCKQUOTE>Read more at <I><A title=http://www.crlab.com/ >Core Lab</A> and the <A title=http://www.crlab.com/mysqlnet/ >product page</A>.</I></BLOCKQUOTE></DIV></LI></UL></SPAN></SPAN></LI></UL><span id="hvzpftn" class=toplvl ondblclick=menu(interbase); style="CURSOR: hand" onclick=menu(interbase);> <LI style="LIST-STYLE-IMAGE: url(icon/iconinterbase.gif)"> Interbase </SPAN> <UL><SPAN id=interbase><span id="hvzpftn" class=seclvl ondblclick=menu(interbaseeasysoft); style="CURSOR: hand" onclick=menu(interbaseeasysoft);> <LI style="LIST-STYLE-IMAGE: url(icon/iconinterbase.gif)"> ODBC, Easysoft </SPAN><BR><BR><SPAN id=interbaseeasysoft style="CURSOR: default"> <UL> <LI><B> Local computer:</B><BR> <DIV>"Driver={Easysoft IB6 ODBC};Server=localhost;Database=localhost:C:\mydatabase.gdb;Uid=username;Pwd=password" </DIV><BR><BR> <LI><B> Remote Computer:</B><BR> <DIV>"Driver={Easysoft IB6 ODBC};Server=ComputerName;Database=ComputerName:C:\mydatabase.gdb;Uid=username;Pwd=password" <BLOCKQUOTE><I>Read more about this driver: <A title=http://www.easysoft.com/products/2201/ >Easysoft ODBC-Interbase driver >></A><BR></I></BLOCKQUOTE></DIV></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(interbaseintersolv); style="CURSOR: hand" onclick=menu(interbaseintersolv);> <LI style="LIST-STYLE-IMAGE: url(icon/iconinterbase.gif)"> ODBC, Intersolv </SPAN><BR><BR><SPAN id=interbaseintersolv style="CURSOR: default"> <UL> <LI><B> Local computer:</B><BR> <DIV>"Driver={INTERSOLV InterBase ODBC Driver (*.gdb)};Server=localhost;Database=localhost:C:\mydatabase.gdb;Uid=username;Pwd=password" </DIV><BR><BR> <LI><B> Remote Computer:</B><BR> <DIV>"Driver={INTERSOLV InterBase ODBC Driver (*.gdb)};Server=ComputerName;Database=ComputerName:C:\mydatabase.gdb;Uid=username;Pwd=password" <BLOCKQUOTE><I>This driver are provided by <A title=http://www.datadirect-technologies.com/ >DataDirect Technologies >></A> (formerly Intersolv) </I></BLOCKQUOTE></DIV><BR><BR></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(interbasesibprovider); style="CURSOR: hand" onclick=menu(interbasesibprovider);> <LI style="LIST-STYLE-IMAGE: url(icon/iconinterbase.gif)"> OLE DB, SIBPROvider </SPAN><BR><BR><SPAN id=interbasesibprovider style="CURSOR: default"> <UL> <LI><B> Standard:</B><BR> <DIV>"provider=sibprovider;location=localhost:;data source=c:\databases\gdbs\mygdb.gdb;user id=SYSDBA;password=masterkey" </DIV><BR><BR> <LI><B> Specifying character set:</B><BR> <DIV>"provider=sibprovider;location=localhost:;data source=c:\databases\gdbs\mygdb.gdb;user id=SYSDBA;password=masterkey;character set=ISO8859_1" </DIV><BR><BR> <LI><B> Specifying role:</B><BR> <DIV>"provider=sibprovider;location=localhost:;data source=c:\databases\gdbs\mygdb.gdb;user id=SYSDBA;password=masterkey;role=DIGITADORES" <BLOCKQUOTE><I><A title=http://www.sibprovider.com/en_us/default.asp >Read more about SIBPROvider >></A> </I></BLOCKQUOTE></DIV><BR><BR></LI></UL></SPAN><BR><I>Read more about connecting to Interbase in this Borland Developer Network article <A title=http://community.borland.com/article/0,1410,27152,00.html >http://community.borland.com/article/0,1410,27152,00.html</A> </I><BR><BR></SPAN></LI></UL><span id="hvzpftn" class=toplvl ondblclick=menu(db2); style="CURSOR: hand" onclick=menu(db2);> <LI style="LIST-STYLE-IMAGE: url(icon/icondb2.gif)"> IBM DB2 </SPAN> <UL><SPAN id=db2><span id="hvzpftn" class=seclvl ondblclick=menu(db2oledb); style="CURSOR: hand" onclick=menu(db2oledb);> <LI style="LIST-STYLE-IMAGE: url(icon/icondb2.gif)"> OLE DB, OleDbConnection (.NET) from ms </SPAN><BR><BR><SPAN id=db2oledb style="CURSOR: default"> <UL> <LI><B> TCP/IP:</B><BR> <DIV>"Provider=DB2OLEDB;Network Transport Library=TCPIP;Network Address=XXX.XXX.XXX.XXX;Initial Catalog=MyCtlg;Package Collection=MyPkgCol;Default Schema=Schema;User ID=MyUser;Password=MyPW" </DIV><BR><BR> <LI><B> APPC:</B><BR> <DIV>"Provider=DB2OLEDB;APPC Local LU Alias=MyAlias;APPC Remote LU Alias=MyRemote;Initial Catalog=MyCtlg;Package Collection=MyPkgCol;Default Schema=Schema;User ID=MyUser;Password=MyPW" </DIV><BR><BR></LI></UL></SPAN></SPAN></LI></UL><span id="hvzpftn" class=toplvl ondblclick=menu(sybase); style="CURSOR: hand" onclick=menu(sybase);> <LI style="LIST-STYLE-IMAGE: url(icon/iconsybase.gif)"> Sybase </SPAN> <UL><SPAN id=sybase><span id="hvzpftn" class=seclvl ondblclick=menu(sybaseodbc); style="CURSOR: hand" onclick=menu(sybaseodbc);> <LI style="LIST-STYLE-IMAGE: url(icon/iconsybase.gif)"> ODBC </SPAN><BR><BR><SPAN id=sybaseodbc style="CURSOR: default"> <UL> <LI><B> Standard Sybase System 12 (or 12.5) Enterprise Open Client:</B><BR> <DIV>"Driver={SYBASE ASE ODBC Driver};Srvr=Aron1;Uid=username;Pwd=password" </DIV><BR><BR> <LI><B> Standard Sybase System 11:</B><BR> <DIV>"Driver={SYBASE SYSTEM 11};Srvr=Aron1;Uid=username;Pwd=password;" <BLOCKQUOTE><I>Do you know a userguide for Sybase System 11, 12, 12.5? <A title=mailto:info@connectionstrings.com href="mailto:info@connectionstrings.com">E-mail the URL to connectionstrings.com now!! >> </A></I></BLOCKQUOTE></DIV> <LI><B> Intersolv 3.10:</B><BR> <DIV>"Driver={INTERSOLV 3.10 32-BIT Sybase};Srvr=Aron1;Uid=username;Pwd=password;" </DIV><BR><BR> <LI><B> Sybase SQL Anywhere (former Watcom SQL ODBC driver):</B><BR> <DIV>"ODBC; Driver=Sybase SQL Anywhere 5.0; DefaultDir=c:\dbfolder\;Dbf=c:\mydatabase.db;Uid=username;Pwd=password;Dsn=""""" <BLOCKQUOTE><I>Note! The two double quota following the DSN parameter at the end are escaped quotas (VB syntax), you may have to change this to your language specific escape syntax. The empty DSN parameter is indeed critical as not including it will result in error 7778. </BLOCKQUOTE></DIV><BR><BR><A title=http://manuals.sybase.com/onlinebooks/group-im/imcore5/conndb/@Generic__BookView/3404;cs=default;ts=default >Read more in the Sybase SQL Anywhere User Guide >></A> </I> <BLOCKQUOTE></BLOCKQUOTE></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(sybaseoledb); style="CURSOR: hand" onclick=menu(sybaseoledb);> <LI style="LIST-STYLE-IMAGE: url(icon/iconsybase.gif)"> OLE DB </SPAN><BR><BR><SPAN id=sybaseoledb style="CURSOR: default"> <UL> <LI><B> Adaptive Server Anywhere (ASA):</B><BR> <DIV>"Provider=ASAProv;Data source=myASA" <BLOCKQUOTE><I><A title=http://manuals.sybase.com/onlinebooks/group-sas/awg0702e/dbugen7/@ebt-link;pt=13894;uf=0?target=0;window=new;showtoc=true;book=dbugen7 >Read more in the ASA User Guide >></A> </I></BLOCKQUOTE></DIV> <LI><B> Adaptive Server Enterprise (ASE) with Data Source .IDS file:</B><BR> <DIV>"Provider=Sybase ASE OLE DB Provider; Data source=myASE" <BLOCKQUOTE><I>Note that you must create a Data Source .IDS file using the Sybase Data Administrator. These .IDS files resemble ODBC DSNs. </I></BLOCKQUOTE></DIV> <LI><B> Adaptive Server Enterprise (ASE):</B><BR> <DIV>"Provider=Sybase.ASEOLEDBProvider;Srvr=myASEserver,5000;Catalog=myDBname;User Id=username;Password=password" <BR><I>   - some reports on problem using the above one, try the following as an alternative -</I><BR><BR>"Provider=Sybase.ASEOLEDBProvider;Server Name=myASEserver,5000;Initial Catalog=myDBname;User Id=username;Password=password" <BLOCKQUOTE><I>This one works only from Open Client 12.5 where the server port number feature works,鐕糽lowing fully qualified connection strings to be used without defining鐕糿y .IDS Data Source files. </I></BLOCKQUOTE></DIV></LI></UL></SPAN></SPAN></LI></UL><span id="hvzpftn" class=toplvl ondblclick=menu(informix); style="CURSOR: hand" onclick=menu(informix);> <LI style="LIST-STYLE-IMAGE: url(icon/iconinformix.gif)"> Informix </SPAN> <UL><SPAN id=informix><span id="hvzpftn" class=seclvl ondblclick=menu(informixodbc); style="CURSOR: hand" onclick=menu(informixodbc);> <LI style="LIST-STYLE-IMAGE: url(icon/iconinformix.gif)"> ODBC </SPAN><BR><BR><SPAN id=informixodbc style="CURSOR: default"> <UL> <LI><B> Informix 3.30:</B><BR> <DIV>"Dsn='';Driver={INFORMIX 3.30 32 BIT};Host=hostname;Server=myserver;Service=service-name;Protocol=olsoctcp;Database=mydb;UID=username;PWD=myPwd </DIV><BR><BR> <LI><B> Informix-CLI 2.5:</B><BR> <DIV>"Driver={Informix-CLI 2.5 (32 Bit)};Server=myserver;Database=mydb;Uid=username;Pwd=myPwd" </DIV><BR><BR></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(informixoledb); style="CURSOR: hand" onclick=menu(informixoledb);> <LI style="LIST-STYLE-IMAGE: url(icon/iconinformix.gif)"> OLE DB </SPAN><BR><BR><SPAN id=informixoledb style="CURSOR: default"> <UL> <LI><B> IBM Informix OLE DB Provider:</B><BR> <DIV>"Provider=Ifxoledbc.2;password=myPw;User ID=myUser;Data Source=dbName@serverName;Persist Security Info=true" </DIV><BR><BR></LI></UL></SPAN></SPAN></LI></UL><span id="hvzpftn" class=toplvl ondblclick=menu(mimer); style="CURSOR: hand" onclick=menu(mimer);> <LI style="LIST-STYLE-IMAGE: url(icon/iconmimer.gif)"> Mimer SQL </SPAN> <UL><SPAN id=mimer><span id="hvzpftn" class=seclvl ondblclick=menu(mimerodbc); style="CURSOR: hand" onclick=menu(mimerodbc);> <LI style="LIST-STYLE-IMAGE: url(icon/iconmimer.gif)"> ODBC </SPAN><BR><BR><SPAN id=mimerodbc style="CURSOR: default"> <UL> <LI><B> Standard Security:</B><BR> <DIV>"Driver={MIMER};Database=mydb;Uid=myuser;Pwd=mypw;" </DIV><BR><BR> <LI><B> Prompt for username and password:</B><BR> <DIV>"Driver={MIMER};Database=mydb;" </DIV><BR><BR></LI></UL></SPAN></SPAN></LI></UL><span id="hvzpftn" class=toplvl ondblclick=menu(postgre); style="CURSOR: hand" onclick=menu(postgre);> <LI style="LIST-STYLE-IMAGE: url(icon/iconpostgre.gif)"> PostgreSQL </SPAN> <UL><SPAN id=postgre><span id="hvzpftn" class=seclvl ondblclick=menu(postgresqldirect); style="CURSOR: hand" onclick=menu(postgresqldirect);> <LI style="LIST-STYLE-IMAGE: url(icon/iconpostgre.gif)"> Core Labs PostgreSQLDirect (.NET) </SPAN><BR><BR><SPAN id=postgresqldirect style="CURSOR: default"> <UL> <LI><B> Standard:</B><BR> <DIV>"User ID=root; Password=pwd; Host=localhost; Port=5432; Database=testdb;Pooling=true; Min Pool Size=0; Max Pool Size=100; Connection Lifetime=0" <BLOCKQUOTE>Read more at <I><A title=http://www.crlab.com/ >Core Lab</A> and the <A title=http://www.crlab.com/pgsqlnet/ >product page</A>.</I></BLOCKQUOTE></DIV><BR><BR></LI></UL></SPAN></SPAN></LI></UL><span id="hvzpftn" class=toplvl ondblclick=menu(dsn); style="CURSOR: hand" onclick=menu(dsn);> <LI style="LIST-STYLE-IMAGE: url(icon/icondsn.gif)"> DSN </SPAN> <UL><SPAN id=dsn><span id="hvzpftn" class=seclvl ondblclick=menu(dsnodbc); style="CURSOR: hand" onclick=menu(dsnodbc);> <LI style="LIST-STYLE-IMAGE: url(icon/icondsn.gif)"> ODBC </SPAN><BR><BR><SPAN id=dsnodbc style="CURSOR: default"> <UL> <LI><B> DSN:</B><BR> <DIV>"DSN=myDsn;Uid=username;Pwd=;" </DIV><BR><BR> <LI><B> File DSN:</B><BR> <DIV>"FILEDSN=c:\myData.dsn;Uid=username;Pwd=;" </DIV><BR><BR></LI></UL></SPAN></SPAN></LI></UL><span id="hvzpftn" class=toplvl ondblclick=menu(excel); style="CURSOR: hand" onclick=menu(excel);> <LI style="LIST-STYLE-IMAGE: url(icon/iconexcel.gif)"> Excel </SPAN> <UL><SPAN id=excel><span id="hvzpftn" class=seclvl ondblclick=menu(excelodbc); style="CURSOR: hand" onclick=menu(excelodbc);> <LI style="LIST-STYLE-IMAGE: url(icon/iconexcel.gif)"> ODBC </SPAN><BR><BR><SPAN id=excelodbc style="CURSOR: default"> <UL> <LI style="LIST-STYLE-IMAGE: url(icon/iconexcel.gif)"><B> Standard:</B><BR> <DIV>"Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=C:\MyExcel.xls;DefaultDir=c:\mypath;" </DIV><BR><BR></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(exceloledb); style="CURSOR: hand" onclick=menu(exceloledb);> <LI style="LIST-STYLE-IMAGE: url(icon/iconexcel.gif)"> OLE DB </SPAN><BR><BR><SPAN id=exceloledb style="CURSOR: default"> <UL> <LI style="LIST-STYLE-IMAGE: url(icon/iconexcel.gif)"><B> Standard:</B><BR> <DIV>"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""</B>" <BLOCKQUOTE><I>"HDR=Yes;" indicates that the first row contains columnnames, not data</I></BLOCKQUOTE> <BLOCKQUOTE><I>"IMEX=1;" tells the driver to always read "intermixed" data columns as text</I></BLOCKQUOTE> <BLOCKQUOTE><I>TIP! SQL syntax: "SELECT * FROM [sheet1$]" - i.e. worksheet name followed by a "$" and wrapped in "[" "]" brackets.</I></BLOCKQUOTE></DIV></LI></UL></SPAN></SPAN></LI></UL><span id="hvzpftn" class=toplvl ondblclick=menu(text); style="CURSOR: hand" onclick=menu(text);> <LI style="LIST-STYLE-IMAGE: url(icon/icontext.gif)"> Text </SPAN> <UL><SPAN id=text><span id="hvzpftn" class=seclvl ondblclick=menu(textodbc); style="CURSOR: hand" onclick=menu(textodbc);> <LI style="LIST-STYLE-IMAGE: url(icon/icontext.gif)"> ODBC </SPAN><BR><BR><SPAN id=textodbc style="CURSOR: default"> <UL> <LI style="LIST-STYLE-IMAGE: url(icon/icontext.gif)"><B> Standard:</B><BR> <DIV>"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=c:\txtFilesFolder\;Extensions=asc,csv,tab,txt;" </DIV><BR><BR></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(textoledb); style="CURSOR: hand" onclick=menu(textoledb);> <LI style="LIST-STYLE-IMAGE: url(icon/icontext.gif)"> OLE DB </SPAN><BR><BR><SPAN id=textoledb style="CURSOR: default"> <UL> <LI style="LIST-STYLE-IMAGE: url(icon/icontext.gif)"><B> Standard:</B><BR> <DIV>"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\txtFilesFolder\;Extended Properties=""text;HDR=Yes;FMT=Delimited""" <BLOCKQUOTE><I>"HDR=Yes;" indicates that the first row contains columnnames, not data</I></BLOCKQUOTE></DIV></LI></UL></SPAN></SPAN></LI></UL><span id="hvzpftn" class=toplvl ondblclick=menu(dbf); style="CURSOR: hand" onclick=menu(dbf);> <LI style="LIST-STYLE-IMAGE: url(icon/icondbf.gif)"> DBF / FoxPro </SPAN> <UL><SPAN id=dbf><span id="hvzpftn" class=seclvl ondblclick=menu(dbfodbc); style="CURSOR: hand" onclick=menu(dbfodbc);> <LI style="LIST-STYLE-IMAGE: url(icon/icondbf.gif)"> ODBC </SPAN><BR><BR><SPAN id=dbfodbc style="CURSOR: default"> <UL> <LI><B> standard:</B><BR> <DIV>"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\mydbpath;" </DIV><BR><BR></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(dbfoledb); style="CURSOR: hand" onclick=menu(dbfoledb);> <LI style="LIST-STYLE-IMAGE: url(icon/icondbf.gif)"> OLE DB, OleDbConnection (.NET) </SPAN><BR><BR><SPAN id=dbfoledb style="CURSOR: default"> <UL> <LI><B> standard:</B><BR> <DIV>"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\folder;Extended Properties=dBASE IV;User ID=Admin;Password=" </DIV><BR><BR></LI></UL></SPAN></SPAN></LI></UL><span id="hvzpftn" class=toplvl ondblclick=menu(vfoxpro); style="CURSOR: hand" onclick=menu(vfoxpro);> <LI style="LIST-STYLE-IMAGE: url(icon/iconvfoxpro.gif)"> Visual FoxPro </SPAN> <UL><SPAN id=vfoxpro><span id="hvzpftn" class=seclvl ondblclick=menu(vfoxprooledb); style="CURSOR: hand" onclick=menu(vfoxprooledb);> <LI style="LIST-STYLE-IMAGE: url(icon/iconvfoxpro.gif)"> OLE DB, OleDbConnection (.NET) </SPAN><BR><BR><SPAN id=vfoxprooledb style="CURSOR: default"> <UL> <LI><B> Database container (.DBC):</B><BR> <DIV>"Provider=vfpoledb.1;Data Source=C:\MyDbFolder\MyDbContainer.dbc;Password=MyPassWord;Collating Sequence=machine" </DIV><BR><BR> <LI><B> Free table directory:</B><BR> <DIV>"Provider=vfpoledb.1;Data Source=C:\MyDataDirectory\;Password=MyPassWord;Collating Sequence=general" </DIV> <BLOCKQUOTE><A title=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fox7help/html/dggrfOLEDBProviderforVisualFoxPro.asp >Read more (Microsoft msdn) >></A></I></BLOCKQUOTE></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(vfoxproodbc); style="CURSOR: hand" onclick=menu(vfoxproodbc);> <LI style="LIST-STYLE-IMAGE: url(icon/iconvfoxpro.gif)"> ODBC </SPAN><BR><BR><SPAN id=vfoxproodbc style="CURSOR: default"> <UL> <LI><B> Database container (.DBC):</B><BR> <DIV>"Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=c:\myvfpdb.dbc;Exclusive=No;Collate=Machine;" </DIV><BR><BR> <LI><B> Free Table directory:</B><BR> <DIV>"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=c:\myvfpdbfolder;Exclusive=No;Collate=Machine;" <BLOCKQUOTE><I>"Collate=Machine" is the default setting, for other settings check the <A title=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/lr30b_11.asp >list of supported collating sequences >></A></I></BLOCKQUOTE></DIV></LI></UL></SPAN><BR><I>Microsoft Visual Foxpro site: <A title=http://msdn.microsoft.com/vfoxpro >http://msdn.microsoft.com/vfoxpro</A> </I><BR><BR></SPAN></LI></UL><span id="hvzpftn" class=toplvl ondblclick=menu(pervasive); style="CURSOR: hand" onclick=menu(pervasive);> <LI style="LIST-STYLE-IMAGE: url(icon/iconpervasive.gif)"> Pervasive </SPAN> <UL><SPAN id=pervasive><span id="hvzpftn" class=seclvl ondblclick=menu(pervasiveodbc); style="CURSOR: hand" onclick=menu(pervasiveodbc);> <LI style="LIST-STYLE-IMAGE: url(icon/iconpervasive.gif)"> ODBC </SPAN><BR><BR><SPAN id=pervasiveodbc style="CURSOR: default"> <UL> <LI><B> Standard:</B><BR> <DIV>"Driver={Pervasive ODBC Client Interface};ServerName=srvname;dbq=@dbname" <BLOCKQUOTE><I><A title=http://www.pervasive.com/library/index.asp?_portal=ODBC >Pervasive ODBC info >></A></I></BLOCKQUOTE></DIV></LI></UL></SPAN><span id="hvzpftn" class=seclvl ondblclick=menu(pervasiveoledb); style="CURSOR: hand" onclick=menu(pervasiveoledb);> <LI style="LIST-STYLE-IMAGE: url(icon/iconpervasive.gif)"> OLE DB </SPAN><BR><BR><SPAN id=pervasiveoledb style="CURSOR: default"> <UL> <LI><B> Standard:</B><BR> <DIV>"Provider=PervasiveOLEDB;Data Source=C:\path" <BLOCKQUOTE><I><A title=http://www.pervasive.com/library/index.asp?_portal=OLEDB >Pervasive OLE DB info >></A></I></BLOCKQUOTE></DIV></LI></UL></SPAN></SPAN></LI></UL><span id="hvzpftn" class=toplvl ondblclick=menu(udl); style="CURSOR: hand" onclick=menu(udl);> <LI style="LIST-STYLE-IMAGE: url(icon/iconudl.gif)"> UDL </SPAN> <UL><SPAN id=udl><span id="hvzpftn" class=seclvl ondblclick=menu(udludl); style="CURSOR: hand" onclick=menu(udludl);> <LI style="LIST-STYLE-IMAGE: url(icon/iconudl.gif)"> UDL </SPAN><BR><BR><SPAN id=udludl style="CURSOR: default"> <UL> <LI><B> UDL:</B><BR> <DIV>"File Name=c:\myDataLink.udl;" </DIV></LI></UL></SPAN></SPAN></LI></UL></FONT></LI></DIV></DIV><img src ="http://m.shnenglu.com/ivenher/aggbug/827.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/ivenher/" target="_blank">鐖遍キ鐩?/a> 2005-10-24 16:19 <a href="http://m.shnenglu.com/ivenher/articles/827.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://m.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://h15h15.com" target="_blank">中文精品一区二区三区</a>| <a href="http://www-90567.com" target="_blank">久久综合九色综合久99</a>| <a href="http://www-78733.com" target="_blank">欧美日韩国产免费</a>| <a href="http://666777v3.com" target="_blank">欧美在线观看视频</a>| <a href="http://tom3958.com" target="_blank">99亚洲伊人久久精品影院红桃</a>| <a href="http://770456.com" target="_blank">中文国产亚洲喷潮</a>| <a href="http://henhenai1.com" target="_blank">亚洲激情欧美激情</a>| <a href="http://woshinannan741.com" target="_blank">国产精品区一区二区三区</a>| <a href="http://quintostdio.com" target="_blank">欧美成人国产一区二区</a>| <a href="http://www520590.com" target="_blank">亚洲欧美成人一区二区三区</a>| <a href="http://jigu100.com" target="_blank">亚洲日本va午夜在线电影</a>| <a href="http://www-798009.com" target="_blank">亚洲香蕉伊综合在人在线视看</a>| <a href="http://www-00468.com" target="_blank">国产精品日韩高清</a>| <a href="http://3333347.com" target="_blank">久久国产精品99久久久久久老狼</a>| <a href="http://www17727.com" target="_blank">91久久精品网</a>| <a href="http://wwwiqiuxia.com" target="_blank">亚洲国产精品久久久久久女王</a>| <a href="http://wwwhaodd116.com" target="_blank">国产精品手机在线</a>| <a href="http://666675com.com" target="_blank">国产女主播一区二区三区</a>| <a href="http://2996611.com" target="_blank">国产精品美女在线</a>| <a href="http://liandezhi.com" target="_blank">国产精品一区二区欧美</a>| <a href="http://ll992.com" target="_blank">国产欧美日韩精品a在线观看</a>| <a href="http://gdjuba.com" target="_blank">国产伦精品一区二区三区四区免费</a>| <a href="http://www47755.com" target="_blank">欧美天堂在线观看</a>| <a href="http://596361.com" target="_blank">欧美日韩人人澡狠狠躁视频</a>| <a href="http://xxx444vip.com" target="_blank">国产精品久久77777</a>| <a href="http://sese912.com" target="_blank">国精品一区二区三区</a>| <a href="http://cnchtx.com" target="_blank">亚洲国产精品一区制服丝袜</a>| <a href="http://6hzl8.com" target="_blank">99精品国产高清一区二区</a>| <a href="http://387www.com" target="_blank">在线视频亚洲欧美</a>| <a href="http://9927tv.com" target="_blank">亚洲欧美日韩高清</a>| <a href="http://3333328.com" target="_blank">免费视频亚洲</a>| <a href="http://7v51.com" target="_blank">亚洲午夜久久久</a>| <a href="http://jjoo4.com" target="_blank">榴莲视频成人在线观看</a>| <a href="http://cabenn.com" target="_blank">国产精品久久久久影院亚瑟 </a>| <a href="http://dmzjz.com" target="_blank">久久女同精品一区二区</a>| <a href="http://huohuoglobal.com" target="_blank">久久久久久久久一区二区</a>| <a href="http://wogoyao.com" target="_blank">欧美精品一区二区在线观看</a>| <a href="http://www-438686.com" target="_blank">国产午夜精品久久久</a>| <a href="http://mmmm37.com" target="_blank">亚洲私拍自拍</a>| <a href="http://387www.com" target="_blank">aa成人免费视频</a>| <a href="http://shalitao.com" target="_blank">久久综合色播五月</a>| <a href="http://gbandal.com" target="_blank">伊人久久av导航</a>| <a href="http://9niuw.com" target="_blank">欧美在线播放视频</a>| <a href="http://fjccjq.com" target="_blank">在线亚洲伦理</a>| <a href="http://www-544778.com" target="_blank">欧美不卡在线视频</a>| <a href="http://392294.com" target="_blank">香蕉久久夜色精品</a>| <a href="http://339505.com" target="_blank">国产精品高清在线</a>| <a href="http://sp106.com" target="_blank">亚洲嫩草精品久久</a>| <a href="http://2jjzz.com" target="_blank">亚洲免费在线看</a>| <a href="http://www-14333.com" target="_blank">国产日产欧美精品</a>| <a href="http://47b8.com" target="_blank">久久亚洲图片</a>| <a href="http://388268.com" target="_blank">久久久国产成人精品</a>| <a href="http://789469.com" target="_blank">国内久久精品视频</a>| <a href="http://www311pi.com" target="_blank">久久一区二区三区四区</a>| <a href="http://www492002.com" target="_blank">亚洲欧美偷拍卡通变态</a>| <a href="http://497n.com" target="_blank">国产一区二区福利</a>| <a href="http://www-893333.com" target="_blank">欧美sm视频</a>| <a href="http://59199m.com" target="_blank">欧美日韩成人一区二区三区</a>| <a href="http://777777hb.com" target="_blank">亚洲国产综合在线</a>| <a href="http://wanshunpu.com" target="_blank">最新高清无码专区</a>| <a href="http://haomscq.com" target="_blank">国产精品日韩专区</a>| <a href="http://xingmaokeji.com" target="_blank">久久看片网站</a>| <a href="http://sese699.com" target="_blank">欧美日韩岛国</a>| <a href="http://czjrby.com" target="_blank">久久丁香综合五月国产三级网站</a>| <a href="http://hy1598.com" target="_blank">亚洲男女毛片无遮挡</a>| <a href="http://044925.com" target="_blank">亚洲大胆女人</a>| <a href="http://mruyan.com" target="_blank">一本色道久久综合亚洲精品婷婷</a>| <a href="http://023nszz.com" target="_blank">亚洲欧美国产另类</a>| <a href="http://138268.com" target="_blank">亚洲国产精品久久久久久女王</a>| <a href="http://jivbus.com" target="_blank">亚洲高清二区</a>| <a href="http://7373se.com" target="_blank">国产精品综合久久久</a>| <a href="http://www492002.com" target="_blank">欧美福利精品</a>| <a href="http://shiselol.com" target="_blank">国产精品久久久久久久久动漫 </a>| <a href="http://133255.com" target="_blank">亚洲区第一页</a>| <a href="http://phdy999.com" target="_blank">欧美性片在线观看</a>| <a href="http://133686.com" target="_blank">亚洲国产高潮在线观看</a>| <a href="http://cloakok.com" target="_blank">国产精品免费区二区三区观看</a>| <a href="http://gdjuba.com" target="_blank">欧美高清视频在线播放</a>| <a href="http://nxyhbz.com" target="_blank">欧美日韩三级一区二区</a>| <a href="http://ywy99.com" target="_blank">欧美成人黄色小视频</a>| <a href="http://xajtyd.com" target="_blank">国产精品国色综合久久</a>| <a href="http://lusaier.com" target="_blank">亚洲第一精品影视</a>| <a href="http://9966k.com" target="_blank">国产真实乱偷精品视频免</a>| <a href="http://sishengnv.com" target="_blank">亚洲美女诱惑</a>| <a href="http://balqueen.com" target="_blank">亚洲国产精品va在线观看黑人</a>| <a href="http://099553.com" target="_blank">一区二区三区四区五区精品视频</a>| <a href="http://389746.com" target="_blank">狠狠色狠狠色综合系列</a>| <a href="http://ylnnc.com" target="_blank">欧美一区二区在线免费播放</a>| <a href="http://czwangluoyouhua.com" target="_blank">一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 </a>| <a href="http://missav88.com" target="_blank">伊人成年综合电影网</a>| <a href="http://lalandapps.com" target="_blank">亚洲一区二区三区视频播放</a>| <a href="http://99hhbb.com" target="_blank">亚洲一级电影</a>| <a href="http://yymh1056.com" target="_blank">欧美日韩在线视频一区</a>| <a href="http://baidubf.com" target="_blank">99re热精品</a>| <a href="http://20074972.com" target="_blank">久久精品视频在线观看</a>| <a href="http://8eeeccc.com" target="_blank">国产精品日韩在线</a>| <a href="http://wltaste.com" target="_blank">久久精品国产99精品国产亚洲性色</a>| <a href="http://kinghongs.com" target="_blank">午夜精品久久久久久久99樱桃</a>| <a href="http://8484vivo.com" target="_blank">欧美日韩一区二区视频在线</a>| <a href="http://555yye.com" target="_blank">亚洲网站在线</a>| <a href="http://by2866.com" target="_blank">久久亚洲精品一区二区</a>| <a href="http://412342.com" target="_blank">亚洲九九九在线观看</a>| <a href="http://baoxiniao666.com" target="_blank">欧美日韩免费一区二区三区</a>| <a href="http://xzvaz.com" target="_blank">中国女人久久久</a>| <a href="http://xprinter3d.com" target="_blank">欧美**字幕</a>| <a href="http://www-34909.com" target="_blank">亚洲一区免费网站</a>| <a href="http://bgdete.com" target="_blank">黄色日韩网站</a>| <a href="http://1235656.com" target="_blank">欧美日韩午夜剧场</a>| <a href="http://zyjxyx.com" target="_blank">久久久久在线观看</a>| <a href="http://755795.com" target="_blank">亚洲免费av网站</a>| <a href="http://lianjiemenye.com" target="_blank">欧美激情中文字幕乱码免费</a>| <a href="http://fjnexpo.com" target="_blank">亚洲午夜一区二区三区</a>| <a href="http://cancerrxa.com" target="_blank">久久亚洲精品伦理</a>| <a href="http://1x118.com" target="_blank">午夜精品久久久久久99热软件</a>| <a href="http://bizhijidi.com" target="_blank">国产一区二区三区丝袜</a>| <a href="http://099idc.com" target="_blank">欧美日韩精品在线播放</a>| <a href="http://6w7y.com" target="_blank">久久久久网址</a>| <a href="http://mishangmi.com" target="_blank">亚洲一区二区免费</a>| <a href="http://www-116036.com" target="_blank">欧美成人精品</a>| <a href="http://99999zc.com" target="_blank">久久综合激情</a>| <a href="http://gztgo.com" target="_blank">久久野战av</a>| <a href="http://wwmm9.com" target="_blank">久久精品人人做人人爽</a>| <a href="http://7269003.com" target="_blank">亚洲精品一区久久久久久</a>| <a href="http://548710.com" target="_blank">亚洲第一区在线</a>| <a href="http://ythbhg.com" target="_blank">亚洲国产成人久久综合一区</a>| <a href="http://amiee88.com" target="_blank">禁断一区二区三区在线</a>| <a href="http://erosgems.com" target="_blank">国产精品中文字幕在线观看</a>| <a href="http://444yd.com" target="_blank">欧美精品日韩一本</a>| <a href="http://9952222.com" target="_blank">噜噜噜在线观看免费视频日韩</a>| <a href="http://520637.com" target="_blank">亚洲手机视频</a>| <a href="http://91nbs.com" target="_blank">亚洲欧美偷拍卡通变态</a>| <a href="http://www-401313.com" target="_blank">一区二区国产精品</a>| <a href="http://zj-jufeng.com" target="_blank">99精品福利视频</a>| <a href="http://4448884.com" target="_blank">午夜精品视频在线观看</a>| <a href="http://4466777.com" target="_blank">国产精品99久久久久久www</a>| <a href="http://77xyc77.com" target="_blank">亚洲看片网站</a>| <a href="http://86868o.com" target="_blank">亚洲欧美国产日韩中文字幕</a>| <a href="http://163263.com" target="_blank">欧美亚洲视频在线观看</a>| <a href="http://4923cc.com" target="_blank">午夜精品视频一区</a>| <a href="http://aa56789.com" target="_blank">小黄鸭精品aⅴ导航网站入口</a>| <a href="http://520637.com" target="_blank">一本色道久久99精品综合 </a>| <a href="http://anquye16.com" target="_blank">欧美精品v日韩精品v韩国精品v </a>| <a href="http://jiyixitong.com" target="_blank">欧美视频二区</a>| <a href="http://www-663345.com" target="_blank">国产精品日韩在线</a>| <a href="http://8x27.com" target="_blank">亚洲欧美高清</a>| <a href="http://am3757.com" target="_blank">久久久久久一区二区</a>| <a href="http://yzxq520.com" target="_blank">性做久久久久久免费观看欧美</a>| <a href="http://559dd.com" target="_blank">欧美综合激情网</a>| <a href="http://shiselol.com" target="_blank">欧美精品一区二区三区蜜桃</a>| <a href="http://by4425.com" target="_blank">国产精品大片</a>| <a href="http://677cn.com" target="_blank">精品二区视频</a>| <a href="http://northboiler.com" target="_blank">一区二区三区四区五区精品视频</a>| <a href="http://ckk755.com" target="_blank">一区二区三区欧美成人</a>| <a href="http://5cok.com" target="_blank">玖玖玖国产精品</a>| <a href="http://choaoxing.com" target="_blank">亚洲福利视频二区</a>| <a href="http://xingmaipet.com" target="_blank">亚洲免费在线视频一区 二区</a>| <a href="http://jrtkpx.com" target="_blank">欧美一区二区三区免费看 </a>| <a href="http://xtgoldsky.com" target="_blank">一区二区欧美日韩视频</a>| <a href="http://8946286.com" target="_blank">欧美亚洲在线视频</a>| <a href="http://6hzl8.com" target="_blank">亚洲巨乳在线</a>| <a href="http://1313js.com" target="_blank">麻豆91精品91久久久的内涵</a>| <a href="http://1313js.com" target="_blank">国产精品一二三四</a>| <a href="http://9511331.com" target="_blank">中文精品在线</a>| <a href="http://sxhrdyb.com" target="_blank">亚洲风情在线资源站</a>| <a href="http://xiangshi888.com" target="_blank">欧美一区二区女人</a>| <a href="http://987kt.com" target="_blank">国产精品日韩一区</a>| <a href="http://yw3329.com" target="_blank">一区二区三区免费在线观看</a>| <a href="http://5gn4y.com" target="_blank">欧美不卡视频一区发布</a>| <a href="http://7c3e.com" target="_blank">久久免费视频观看</a>| <a href="http://7776701.com" target="_blank">亚洲电影在线播放</a>| <a href="http://9273829.com" target="_blank">美女免费视频一区</a>| <a href="http://www-369111.com" target="_blank">久久国产一区二区三区</a>| <a href="http://491342.com" target="_blank">国产一区再线</a>| <a href="http://maokk77.com" target="_blank">久久av二区</a>| <a href="http://timonna.com" target="_blank">欧美一区二区私人影院日本 </a>| <a href="http://02326a.com" target="_blank">亚洲专区在线视频</a>| <a href="http://1277k.com" target="_blank">一区二区三区四区国产</a>| <a href="http://0855dyw.com" target="_blank">欧美精品一卡二卡</a>| <a href="http://2343ww.com" target="_blank">亚洲欧美日韩视频一区</a>| <a href="http://www30bxbx.com" target="_blank">性高湖久久久久久久久</a>| <a href="http://zqx186.com" target="_blank">国产一区二区三区精品欧美日韩一区二区三区 </a>| <a href="http://739191g.com" target="_blank">在线视频日韩精品</a>| <a href="http://www-76577c.com" target="_blank">亚洲国产精品电影</a>| <a href="http://2061856.com" target="_blank">欧美日韩精品免费看</a>| <a href="http://099idc.com" target="_blank">国产精品99久久久久久有的能看</a>| <a href="http://794278.com" target="_blank">亚洲精品久久视频</a>| <a href="http://sdluliang.com" target="_blank">欧美视频在线不卡</a>| <a href="http://cz-sensor.com" target="_blank">亚洲中无吗在线</a>| <a href="http://www218999.com" target="_blank">香蕉久久一区二区不卡无毒影院 </a>| <a href="http://www-787333.com" target="_blank">午夜精品久久久久久久99水蜜桃 </a>| <a href="http://044925.com" target="_blank">欧美三日本三级三级在线播放</a>| <a href="http://9924338.com" target="_blank">日韩视频亚洲视频</a>| <a href="http://clgtzz.com" target="_blank">欧美伊人久久</a>| <a href="http://zunguidq.com" target="_blank">av成人福利</a>| <a href="http://wwwby2232.com" target="_blank">久久久噜噜噜久久人人看</a>| <a href="http://www19898.com" target="_blank">一本不卡影院</a>| <a href="http://9y1111.com" target="_blank">久久亚洲国产成人</a>| <a href="http://zuan3344.com" target="_blank">亚洲免费在线电影</a>| <a href="http://66889h.com" target="_blank">欧美男人的天堂</a>| <a href="http://jqnyc.com" target="_blank">蜜臀久久99精品久久久画质超高清 </a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>