![通過ODBC連接數(shù)據(jù)庫_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/bc984c37-8958-4fc8-a63b-1f06913bef7a/bc984c37-8958-4fc8-a63b-1f06913bef7a1.gif)
![通過ODBC連接數(shù)據(jù)庫_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/bc984c37-8958-4fc8-a63b-1f06913bef7a/bc984c37-8958-4fc8-a63b-1f06913bef7a2.gif)
![通過ODBC連接數(shù)據(jù)庫_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/bc984c37-8958-4fc8-a63b-1f06913bef7a/bc984c37-8958-4fc8-a63b-1f06913bef7a3.gif)
![通過ODBC連接數(shù)據(jù)庫_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/bc984c37-8958-4fc8-a63b-1f06913bef7a/bc984c37-8958-4fc8-a63b-1f06913bef7a4.gif)
![通過ODBC連接數(shù)據(jù)庫_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/bc984c37-8958-4fc8-a63b-1f06913bef7a/bc984c37-8958-4fc8-a63b-1f06913bef7a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、通過ODBC連接數(shù)據(jù)庫(C+)C+連接數(shù)據(jù)庫的方法有很多種,在Visual C+和SQL server的實(shí)際開發(fā)中,一般使用ODBC或ADO技術(shù)進(jìn)行開發(fā),相關(guān)技術(shù)和產(chǎn)品也最為成熟。 我們這里根據(jù)課程需要采用ODBC的方法。我使用的平臺(tái)的是 VS2010和SQL server 2008,優(yōu)點(diǎn)是 VS2010支持一些比較新的特性, 編程方便了很多,缺點(diǎn)是左側(cè)的“服務(wù)器資源管理器”不支持SQL server 2000,但是沒有關(guān)系,在SQL server 2008上是可以連上的,大家如果和我的平臺(tái)不一樣的話在編程細(xì)節(jié)上可 能有些問題要注意下。有同學(xué)表示安裝了 SQL server 2008 之后只能
2、通過“ windows身份驗(yàn)證”登陸本地?cái)?shù)據(jù)庫,無法通過“ SQLserver身份驗(yàn)證”登陸,這是由于安裝的時(shí)候是通過“windows身份驗(yàn)證”安裝的,改一下配置即可:1.使用“ windows身份驗(yàn)證”登陸數(shù)據(jù)庫,點(diǎn)擊“登錄名”,右擊sa,選擇屬性,點(diǎn)擊狀服勞器角色 呂用戶映射狀態(tài)是否允許連接到埶據(jù)庫引擎*攪予©O拒絕)登錄:O啟用C禁用態(tài),確保設(shè)置如 左側(cè)圖所示。2. 右擊本地服 務(wù)器名選擇屬 性,更改安全性中的服務(wù)器身份 驗(yàn)證如下圖所示甦接QL吿穀3卩匚SQLServer丄6625強(qiáng)二J區(qū)吳器底性-KOMOUICEN-PC器過庫 E規(guī)存理¥據(jù)級限 脈常內(nèi)期茲淳數(shù)高M(jìn)
3、送_r_r計(jì)f 一3 -滬一第一船務(wù)器身份驗(yàn)證Windows身份瞪證揆式0 SQL Server和Windows身份驗(yàn)證櫃我g)4. 如何還有問題的話查看目錄 “ D:Program Files'Microsoft SQL ServerMSSQL10.MSSQLSERVERMSSQLLog ” 下的 ERRORLOG 文件,找到錯(cuò)誤代碼, google 之打開SQL server 2008連接一個(gè)我們測試用的數(shù)據(jù)庫,使用的10.214698上的數(shù)據(jù)庫db27,用戶名和密碼都是 user277,執(zhí)行以下命令:bnochar ( 8),categorychar ( 10),ti tleva
4、rchar (40) not null,pressvarchar ( 30) not null,byearint CHECK( byear > 0 ),authorvarchar ( 20) not null,pricedecimal ( 7, 2) CHECK( prictotalint CHECK( total>= 0 ),stockint CHECK( stock >= 0 ),CONSTRAINTck CHECK( stock <= totalbook ()use db27 CREATE Table> 0 ),bookVALUES,數(shù)據(jù)庫,數(shù)據(jù)庫系統(tǒng)原理教
5、程,清華大學(xué)出版社',1998 ,('12342378','數(shù)據(jù)庫',數(shù)據(jù)庫'清華大學(xué)出版社,1998 ,'王珊',27.9,3,0)INSERT INTO book VALUES('12341278','數(shù)據(jù)庫',數(shù)據(jù)庫'清華大學(xué)出版社,1998 ,'王珊',27.9,3,0)INSERT INTO book VALUES('14345678','數(shù)據(jù)庫',數(shù)據(jù)庫'清華大學(xué)出版社,1998 ,'王珊',27.9,3,0
6、)'王珊book VALUES上面SQL語句執(zhí)行的結(jié)果是在db27數(shù)據(jù)庫中創(chuàng)建了一個(gè)名為book的表,里面有 9列,INSERT INTO('12345678' ',27.9 , 3, 0) INSERT INTO隨后添加了 4個(gè)測試數(shù)據(jù),現(xiàn)在將該數(shù)據(jù)源添加到 ODBC數(shù)據(jù)源管理器中,打開路徑“控制面板所有控制面板項(xiàng) 管理工具”下的數(shù)據(jù)源(ODBC),添加新的數(shù)據(jù)源,選擇SQL Server ”名稱設(shè)置為db27,服務(wù)器在10.214.6.98,使用user277用戶登錄,完成后點(diǎn)擊測試數(shù)據(jù)源看能不能連上,顯示測試成功后,在用戶數(shù)據(jù)源中會(huì)看到剛剛添加的DSN:我
7、們編寫一個(gè)簡單的圖形化界面,打開VS2010,新建項(xiàng)目,選擇“ MFC應(yīng)用程序”,建立一個(gè)名為“ DataBaseODBC的項(xiàng)目,彈出的向?qū)е懈膽?yīng)用程序類型為“基于對話框”,大家在實(shí)際編程中可以需要選擇,這里只是為了做個(gè)示例,其他保持默認(rèn)。點(diǎn)擊工具箱中“ListControl”空間,拖到面板中,完成之后應(yīng)該是下圖這個(gè)樣子:工第-?治啟匚Text屣 Picture Control3E Hprizo-ntalBar§ Vertical Scroll Bar Slider Control? Spirt ControlEE Progress Control 噸 Hot Key3 List
8、Controlfl* Tree Control 賈 Tab Cortrol 日 Animation Contrail 空 Rich EditControl座 Date Timr& Picker 晝 Month Calendar Cc-,- IP Address Control 土:ExtiE-nde-d Combo BCControlSy&Link ControlDataB a s-eODBCrc.DIALOG - Dialog"調(diào)整控件的view屬性為Report,如下圖所示,控件的樣式會(huì)有相應(yīng)的改變。21 CfitaBnscODBCxIDC.USTl CList
9、Control) IUstE> -Static Edge FakeTransparent False冥u之一:圏標(biāo)(】tonL小圖標(biāo)CQrriall Imnl 閒I需fl箱害廣R色邑呂色紅色色右擊ListControl,添加變量,在對話框中輸入名稱,女口m_ListCtrl湊加成夷變量庖導(dǎo)-Data BaseODBC歡迎使用澹加廉員變里向異訪問0);pUMiC"0控件變里©變里類型迪:控件功:類別:CListCtrlviBcjisriControl蠻里宅:控件類型QP:最夫字符數(shù):SysListVi訊32最屮值QP:最夫值:»文件電):揃入心量戲龜卜匱 卜f
10、注釋觀)(/不零要表示法):n將這個(gè)ListControl設(shè)置成9列,并設(shè)置一些格式:CRect rc;m_ListCtrl.GetWi ndowRect(&rc);/ 獲取控件大小設(shè)置了 9列,大小是一樣的m ListCtrl.l nsertColum n( 0, T("書號 “),LVCFMT CENTER, rc.Size().cx/9, 0);m_ListCtrl.l nsertColum n( 1, _T(m_ListCtrl.I nsertColum n( 2, _T(m_ListCtrl.I nsertColum n( 3, _T(m_ListCtrl.l ns
11、ertColum n(4, _T(m_ListCtrl.I nsertColum n( 5, _T(m_ListCtrl.I nsertColum n(6, _T(m_ListCtrl.I nsertColum n(7, _T( m_ListCtrl.I nsertColum n(8, _T("類別"),LVCFMT_CENTER, rc.Size().cx/9, 1);"書名"),LVCFMT_CENTER, rc.Size().cx/9, 2);"岀版社"),LVCFMT_CENTER, rc.Size().cx/9, 3);&q
12、uot;岀版年份"),LVCFMT_CENTER, rc.Size().cx/9, 4);"作者"),LVCFMT_CENTER, rc.Size().cx/9, 5);"價(jià)格"),LVCFMT_CENTER, rc.Size().cx/9, 6);"總藏書量"),LVCFMT_CENTER, rc.Size().cx/9, 7);"目前庫存數(shù)"),LVCFMT_CENTER, rc.Size().cx/9, 8);LVS_EX_GRIDLINES是希望顯示網(wǎng)格; LVS_EX_FULLROWSELECT
13、是希望被選中時(shí)整行反色顯示; LVS_EX_HEADERDRAGDROP 是讓其支持點(diǎn)擊表頭排序;/LVS EX TWOCLICKACTIVATE 是希望有鼠標(biāo)在未被選中的行上移動(dòng)的時(shí)候有一些效果m_ListCtrl.SetExtendedStyle(m_ListCtrl.GetExtendedStyle() | LVS_EX_GRIDLINES |LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP |LVS EX TWOCLICKACTIVATE);把這些代碼放在 BOOL CDataBaseODBCDIg:OnlnitDialog(函數(shù)的return前
14、,運(yùn)行就有相應(yīng)的效果。在頭文件 DataBaseODBCDlg.h 中添加 #include "afxdb.h" , "afxdb.h"即 MFC的 ODBC類包括以下要用到的類:CDatabase類:主要功能是建立與數(shù)據(jù)源的連接。CRecordsel類:該類代表從數(shù)據(jù)源選擇的一組記錄(記錄集),程序可以選擇數(shù)據(jù)源中的某個(gè)表作為一個(gè)記錄集,也可以通過對表的查詢得到記錄集,還可以合并同一數(shù)據(jù)源中多個(gè)表的列到一個(gè)記錄集中.通過該類可對記錄集中的記錄進(jìn)行滾動(dòng)、修改、增加和刪除等操作。CDBException類:代表ODBC類產(chǎn)生的異常。概括地講,CDataba
15、se針對某個(gè)數(shù)據(jù)庫,它負(fù)責(zé)連接數(shù)據(jù)源;CRecordset#對數(shù)據(jù)源中的記錄集,它負(fù)責(zé)對記錄的操作。在頭文件中添加一些定義,其中CDBVariant對象表示用于MFC ODBC類的可變數(shù)據(jù)類型。private:CDatabase m_db;public :/將CDBVariant轉(zhuǎn)化成字符串CStri ng Varia ntToCStr in g(CDBVaria nt* var);為了方便,我就不添加新的按鈕,雙擊對話框的“確定”按鈕,進(jìn)入函數(shù),注釋掉里面 的OnOK函數(shù),添加如下代碼:連接數(shù)據(jù)庫,打開數(shù)據(jù)源,這里的 DSN就是之前在ODBC中設(shè)置的DSNif(!m_db.lsOpe n()
16、 && !m_db.Ope nEx(_T( "DSN=db27;UID=user277;PWD=user277" ), CDatabase:ope nReadO nly | CDatabase: no OdbcDialog)MessageBox(L "連接錯(cuò)誤!");return;/CRecordset類:代表從數(shù)據(jù)源選擇一組記錄(記錄集)CRecordset m_set (&m_db);/Open方法打開記錄集m_set.Open(CRecordset:forwardOnly,_T("SELECT * from boo
17、k"),CRecordset:readO nly);CDBVariant var; /記錄有數(shù)據(jù)的類型和數(shù)據(jù)的值,它封閉了VARIANT數(shù)據(jù)類型m_ListCtrl.DeleteAllltems();刪除所有的項(xiàng)目short nF ields = m_set.GetODBCFieldCou nt();得到列的數(shù)目int i = 0;添加所有內(nèi)容到控件while (!m_set.lsEOF()for(short in dex = 0; in dex < nF ields; in dex+)m_set.GetFieldValue(index, var);/ do somethi n
18、g with varValue/添加一行記錄if(i ndex = 0)m_ListCtrl.Insertltem(i, VariantToCString(&var);繼續(xù)增加記錄的其他項(xiàng)elsem_ListCtrl.SetItemText(i, index, VariantToCString(&var);m_set.MoveNext();i+;m_set.Close(); /凡打開m_db.Close(); /皆關(guān)閉VariantToCSting函數(shù)將 CDBVariantX寸象轉(zhuǎn)成 CString,用以顯示。CStri ng CDataBaseODBCDlg:Varia n
19、tToCStri ng(CDBVaria nt* var)CString str; /轉(zhuǎn)換以后的字符串if(!var)str = "NULL Var Parameter"return str;switch (var->m_dwType)case DBVT_SHORT:str.Format(L "%d" ,(int )var->mVal);break;case DBVT_LONG:str.Format(L "%d" ,var->mVal);break;case DBVT_SINGLE:str.Format(L &quo
20、t;%10.6f (double )var->m_fltVal);break;case DBVT_DOUBLE:str.Format(L "%10.6f" ,var->m_dblVal);break;case DBVT_BOOL:str = (var->m_boolVal=0) ?L "FALSE" : L"TRUE"break;case DBVT_STRING:str = var->m_pstri ng->GetBuffer();break;case DBVT_ASTRING:str = var->
21、;m_pstri ngA->GetBuffer();break;case DBVT_WSTRING:str = var->m_pstri ngW->GetBuffer();break;case DBVT_DATE:str.Format(L "%d-%d-%d" ,(var->m_pdate)->year,(var->m_pdate)->month,(var->m_pdate)->day );break;default:str.Format(L "Unk type %dn" ,var->m_dwT
22、ype); TRACE(L "Unknown type %dn" ,var->m_dwType);return str;根據(jù)CDBVarian俚的m_dwType屬性可以知道里面的內(nèi)容是什么類型的,然后對應(yīng)的顯示就OK了,其中DBVT_DAT漏性可以根據(jù)需要自己更改格式。至此,運(yùn)行程序,點(diǎn)擊“確定”按鈕就能看到圖示結(jié)果,可以完成查詢工作了。書號類別 書名 出版社出版 作者 介格 總藏 目前12341. .1232.12345. .14345. .清華 猜華 猗華 請華199&199& 1如B 1W827.9027.9027.9027.900000確走取
23、消不妨再添加一個(gè)"butt on ”控件用以添加記錄,從工具集中拖一個(gè)button控件,雙擊標(biāo)記代碼:void CDataBaseODBCDIg:O nBn ClickedBt nadd()/ TODO:在此添加控件通知處理程序代碼if(!m_db.lsOpe n() && !m_db.Ope nEx(_T("DSN=db27;UID=user277;PWD=user277" ),CDatabase:ope nRead Only | CDatabase: no OdbcDialog)MessageBox(L "連接錯(cuò)誤!");r
24、eturn ;trym_db.ExecuteSQL(_T("INSERT INTO book VALUES")_T("('87654321','其他','其他 1','浙江大學(xué)岀版社',1984,'韓寒',12.9,4,2)");catch (CDBException* pe)/ The error code is in pe->m_ nRetCodepe->ReportError();pe->Delete();m db.Close();運(yùn)行后,點(diǎn)擊新添加的
25、按鈕可以增加一條記錄。站 Data BaseODBC書號類別 書名 出版社 出版亠 作音 瞬 總磁 目前123斗12342. .12345. .14345. 87654+.B數(shù)數(shù)數(shù)其埶敎數(shù)數(shù)S 8 B B 4a 9印9 g 一I 1- -w-H 1|珊冊冊冊寒 王王王王韓27.903027.903027.903027.90 3012.90 42增加 髓 1 耽肖:再添加一個(gè)可以實(shí)現(xiàn)刪除的button,雙擊之后添加代碼如下。POSITION pos = m_ListCtrl.GetFirstSelectedltemPositio n();if (pos = NULL)TRACE(_T( "No items were selected!n");elsewhile (pos)得到選中的itemint nItem = m_ListCtrl.GetNextSelectedltem(pos)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年福州貨運(yùn)資格證模擬考試題庫
- 2024-2025學(xué)年九年級科學(xué)上冊第4章代謝與平衡第1節(jié)食物與營養(yǎng)作業(yè)設(shè)計(jì)新版浙教版
- 2024-2025學(xué)年七年級數(shù)學(xué)上冊第二章有理數(shù)及其運(yùn)算2.12用計(jì)算器進(jìn)行運(yùn)算教案新版北師大版
- 《橋梁監(jiān)測方案》
- 個(gè)人簡歷表格模板14篇
- 教師個(gè)人年度工作成效總結(jié)
- 秋季學(xué)期六年級語文組工作總結(jié)
- 湘教版地理八年級上冊《第一節(jié) 中國的地形》聽課評課記錄3
- 青年干部培訓(xùn)計(jì)劃
- 部編人教版道德與法治九年級上冊3.2《參與民主生活》聽課評課記錄
- 2021屆高考英語887核心詞(打印、詞頻、出處、例句、背誦)
- 天津市鄉(xiāng)鎮(zhèn)衛(wèi)生院街道社區(qū)衛(wèi)生服務(wù)中心地址醫(yī)療機(jī)構(gòu)名單
- 公司機(jī)關(guān)管理類責(zé)任矩陣
- 山東省青島市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)及行政區(qū)劃代碼
- 《鉆井液用磺甲基酚醛樹脂技術(shù)要求》
- 數(shù)學(xué)-九宮數(shù)獨(dú)100題(附答案)
- 中國農(nóng)業(yè)發(fā)展銀行XX支行 關(guān)于綜合評價(jià)自評情況的報(bào)告
- 2010年宣武區(qū)第六屆中小學(xué)生地理知識競賽題庫
- QC課題提高檢查井周邊壓實(shí)
- 應(yīng)征公民體格檢查表(征兵)
- ACL磁致伸縮液位計(jì)說明書
評論
0/150
提交評論