日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

使用纯C++实现SQL Server2005 数据库读写操作详细步骤

發(fā)布時(shí)間:2023/11/27 生活经验 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用纯C++实现SQL Server2005 数据库读写操作详细步骤 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

環(huán)境:虛擬機(jī)windows xpvs2008 + SQLServer 2005 Express

數(shù)據(jù)庫訪問技術(shù)采用ADO

需要安裝的軟件包括:microsoft_dotnetfxchs2.0.exeWindowsInstaller-KB893803-v2-x86.exeSQLEXPR32_CHS.EXESQLServer2005_SSMSEE.msiSQLServer2005SP3-KB955706-x86-CHS.exe

數(shù)據(jù)庫的一些屬性配置及注意事項(xiàng)見后面參考文獻(xiàn)。

初始數(shù)據(jù)庫表的建立及代碼參考http://www.yesky.com/277/1893277.shtml

?

#include"stdafx.h"

#include<iostream>

#include<iomanip>//for setw()

#include"windows.h"

?

usingnamespace std;

?

//導(dǎo)入ADO相關(guān)類說明,路徑名可以根據(jù)自己系統(tǒng)安裝的ADO支持文件的路徑來自行設(shè)定

//#improt語句會在工程可執(zhí)行程序輸出目錄中產(chǎn)生兩個(gè)文件,分別為*.tlh(類型庫頭文件)及*.tli(類型庫實(shí)現(xiàn)文件)

//語句no_namespace說明ADO對象不使用命名空間,rename("EOF", "EndOfFile")說明將ADO中結(jié)束標(biāo)志EOF改為EndOfFile,以避免和其它庫中命名相沖突

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

?

classSTU

{

public:

??? charsnum[10];

??? charsname[10];

??? charssex[2];

??? longsage;

??? charsmajor[20];

public:

??? STU(){}

??? ~STU(){}

};

?

int _tmain(int argc,_TCHAR* argv[])

{

??? STUstudent;

?

??? ::CoInitialize(NULL);//初始化OLE/COM庫環(huán)境,為訪問ADO接口做準(zhǔn)備

?

??? //_RecordsetPtr智能指針,可以用來打開庫內(nèi)數(shù)據(jù)表,并可以對表內(nèi)的記錄、字段等進(jìn)行各種操作

??? _RecordsetPtr m_pRecordset("ADODB.Recordset");//定義記錄集對象

?

??? //_ConnectionPtr智能指針,通常用于打開、關(guān)閉一個(gè)庫連接或用它的Execute方法來執(zhí)行一個(gè)不返回結(jié)果的命令語句

??? _ConnectionPtr m_pConnection("ADODB.Connection");//定義數(shù)據(jù)庫連接對象

?

??? _bstr_tbstrSQL("select *from stu_info");//查詢語句

?

??? char*query_cmd = "DELETEFROM stu_info WHERE sname = '本拉登'";

?

??? try

??? {??

??????? m_pConnection.CreateInstance("ADODB.Connection");//創(chuàng)建Connection對象

?

??????? //設(shè)置連接字符串,必須是BSTR型或者_(dá)bstr_t類型,若數(shù)據(jù)庫在網(wǎng)絡(luò)上則Server為形如(192.168.1.5,3340)?

??????? _bstr_t strConnect = "Provider=SQLOLEDB; Server=.\\sqlexpress;Database=student; uid=sa; pwd=123456;";

???????

??????? m_pConnection->Open(strConnect,"","",adModeUnknown);//NULL、adConnectUnspecified、//建立與服務(wù)器連接

?

??????? if (m_pConnection ==NULL)

??????? {

??????????? cerr<<"Lind data ERROR!\n";

??????? }

?

??????? m_pRecordset.CreateInstance(__uuidof(Recordset));//創(chuàng)建記錄集對象

?

??????? //取得表中的記錄

??????? m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

?

??????? _variant_t vsnum, vsname,vsage, vssex,vsmajor;//對應(yīng)庫中的snum,sname,sage,ssex,smajor

?

??????? cout<<"學(xué)號姓名年齡性別專業(yè)";

??????? cout<<"\n-------------------------------------------\n";

?

??????? while (!m_pRecordset->EndOfFile)

??????? {

??????????? vsnum= m_pRecordset->GetCollect(_variant_t((long)0));//這兒給字段編號和字段名都可以

??????????? vsname= m_pRecordset->GetCollect("sname");

??????????? vsage= m_pRecordset->GetCollect("sage");

??????????? vssex= m_pRecordset->GetCollect("ssex");

??????????? vsmajor= m_pRecordset->GetCollect("smajor");

?

??????????? if (vsnum.vt !=VT_NULL && vsname.vt !=VT_NULL&& vsage.vt!=VT_NULL &&

??????????????? vssex.vt != VT_NULL&& vsmajor.vt!=VT_NULL)

??????????? {

??????????????? cout.setf(ios::left);

??????????????? cout<<setw(14)<<(char*)(_bstr_t)vsnum;

??????????????? cout<<setw(14)<<(char*)(_bstr_t)vsname;

??????????????? cout<<setw(8)<<vsage.lVal;

??????????????? cout<<setw(8)<<(char*)(_bstr_t)vssex;

??????????????? cout<<setw(20)<<(char*)(_bstr_t)vsmajor;

??????????????? cout.unsetf(ios::left);

??????????????? cout<<endl;

??????????? }

?

??????????? m_pRecordset->MoveNext();//移動下一條記錄

??????? }

?

??????? cout<<"\n------------------------------------------\n";

??????? cout<<"\n請輸入你要添加的學(xué)生信息\n";

??????? cout<<"學(xué)號:";

??????? cin>>student.snum;

??????? cout<<"\n姓名:";

??????? cin>>student.sname;

??????? cout<<"\n年齡:";

??????? cin>>student.sage;

??????? cout<<"\n性別:";

??????? cin>>student.ssex;

??????? cout<<"\n專業(yè):";

??????? cin>>student.smajor;

?

??????? m_pRecordset->MoveFirst();//移動到第一條記錄

??????? m_pRecordset->AddNew();//添加新記錄

??????? m_pRecordset->PutCollect("snum",_variant_t(student.snum));

??????? m_pRecordset->PutCollect("sname",_variant_t(student.sname));

??????? m_pRecordset->PutCollect("sage",_variant_t(student.sage));

??????? m_pRecordset->PutCollect("ssex",_variant_t(student.ssex));

??????? m_pRecordset->PutCollect("smajor",_variant_t(student.smajor));

??????? m_pRecordset->Update();

?

??????? m_pConnection->Execute(query_cmd,NULL, 1);//用Execute執(zhí)行sql語句來刪除

?

??????? m_pRecordset->Close();//關(guān)閉記錄集

??? }

??? catch (_com_errore)//捕捉異常

??? {

??????? cerr<<"\nERROR:"<<(char*)e.Description();//拋出異常

??? }

???

??? if (m_pConnection->State)

??? {

??????? m_pConnection->Close();

??? }

?

??? ::CoUninitialize();

?

??? return 0;

}

參考文獻(xiàn):

1、? http://wenku.baidu.com/view/f1ff0c1d964bcf84b9d57bbd.html

2、? http://www.yesky.com/277/1893277.shtml

3、? http://blog.csdn.net/hqw7286/article/details/5441000

4、? http://blogger.org.cn/blog/more.asp?name=fishyqd&id=13038

5、? http://www.west263.com/www/info/66267-1.htm

6、? http://www.cnblogs.com/Chinaluis/archive/2008/10/06/1304634.html

7、? http://zhidao.baidu.com/question/98140032.html

8、? http://blog.csdn.net/qingshansima/article/details/4059167

總結(jié)

以上是生活随笔為你收集整理的使用纯C++实现SQL Server2005 数据库读写操作详细步骤的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

歡迎分享!

轉(zhuǎn)載請說明來源于"生活随笔",并保留原作者的名字。

本文地址:使用纯C++实现SQL Server2005 数据库读写操作