




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、VS2010連接數(shù)據(jù)庫(access和sql 2008)現(xiàn)在很多人開始用VS2010的C+了,以前大家都是從VC6.0開始使用,對(duì)6.0比較熟悉,網(wǎng)上很多關(guān)于連接數(shù)據(jù)庫的方法都是針對(duì)VC6.0的,很多人用2010用了一段時(shí)間之后不隨手就放棄了,繼續(xù)使用VC6.0.作者作為一名VS2010版本開始學(xué)習(xí)使用的人在數(shù)據(jù)庫連接的時(shí)候也遇到很多問題,在這里和大家分享如下:首先是用ACCESS 方式連接數(shù)據(jù)庫:以前VC6.0怎么連接相信大家都能夠百度得到了,他是通過首先打開控制面板-管理工具-數(shù)據(jù)源(ODBC)就到了圖一界面:圖一然后點(diǎn)擊右邊的添加按鈕:很多書里面都叫添加時(shí)候選第二項(xiàng),也就是圖二里面所以深
2、色背景那項(xiàng):圖二Vc6.0的操作就是這樣選擇。但在VS2010里面就不對(duì)。我用的是VS2010然后用ACCESS2007做數(shù)據(jù)庫保留后綴名:accdb如圖三圖三選擇這一項(xiàng)在VS2010里面就不會(huì)出錯(cuò)了我在這里添加了一個(gè)叫:liyixu的access數(shù)據(jù)庫這就配置好了數(shù)據(jù)源接下來,講VS2010里面怎樣連接這個(gè)數(shù)據(jù)庫:在VC6.0里面是通過添加類的方法來添加數(shù)據(jù)庫里面的具體某一個(gè)表。而在VS2010里面也差不多。但是當(dāng)我們按照VC6.0添加正常類的時(shí)候發(fā)現(xiàn),他沒有基類CRecordset類可以選擇:圖四比如:如果選擇圖四中的MFC類圖五他里面沒有CRecordset基類可供選擇,也就無從選擇數(shù)據(jù)
3、源和表。那么VS2010里面其實(shí)是有專門的ODBC使用者設(shè)置的。選擇:圖六圖六中的MFC ODBC使用者選項(xiàng),不需要輸入名稱位置,點(diǎn)擊添加按鈕:圖七進(jìn)入MFC ODBC使用者向?qū)В狐c(diǎn)擊數(shù)據(jù)源按鈕,進(jìn)入選擇數(shù)據(jù)源對(duì)話框,把文件數(shù)據(jù)源視圖切換到系統(tǒng)數(shù)據(jù)源視圖:圖八選擇之前在數(shù)據(jù)源中定義的liyixu 用戶數(shù)據(jù)源點(diǎn)擊確定出現(xiàn)登陸界面:圖九這里我登錄名和密碼是在添加數(shù)據(jù)源時(shí)在高級(jí)選項(xiàng)中設(shè)置的,如果你沒有設(shè)置,當(dāng)然就沒有,直接單擊確定按鈕就可以連接了圖十出現(xiàn)圖示界面 我的數(shù)據(jù)庫里面只有一個(gè)表會(huì)員信息,所以直接選擇他,然后單擊確定回到向?qū)Ы缑?,單擊完成,完成連接在這里你可以自定義自己的類的名稱:圖 十一我
4、在這里就直接以(huiyuaninfo)會(huì)員信息為類名了。在圖十一中我勾選了綁定所有列 然后就會(huì)被卡住程序崩潰,然后不勾選就沒有這種情況,如果在前面圖九中你設(shè)置了登陸名和密碼,程序也會(huì)發(fā)出警告,所有密碼出現(xiàn)在代碼中,編譯也會(huì)不成功,這時(shí)候把#error那一行注釋掉就行了。這樣就能以O(shè)DBC方式連接上ACCESS數(shù)據(jù)庫很清楚吧下面講一講怎樣連接SQL 2008 (這個(gè)是重點(diǎn)):很多人連接SQL失敗是數(shù)據(jù)庫配置的問題,權(quán)限沒有,所以訪問被拒絕。這個(gè)要從SQL 2008的安裝說起,由于是一時(shí)興起寫這篇文章,所以我就不把自己的數(shù)據(jù)庫卸載了重裝了,其實(shí)就一個(gè)地方。在SQL 2008安裝過程中,很多教材都
5、叫選擇windows登陸模式,默認(rèn)實(shí)例。而不管是這里講的ODBC模式連接SQL 還是ADO方式這種比較方便的方式連接都需要登錄名和密碼。你在單擊上做練習(xí)的話 當(dāng)然是不需要什么登錄名的了,window驗(yàn)證,開機(jī)就可以用自然很方便,但是其他軟件要訪問它,必然要給他權(quán)限和接口,所以選擇混合模式,設(shè)置SQL登錄方式中用戶名sa的密碼。注意:密碼一定要復(fù)雜不然還通不過。這是其一。二、打開SQL Server 2008 配置工具-SQL Server 配置管理器。首先確保sql server服務(wù)開啟,然后圖 十二我安裝的學(xué)習(xí)版哈,見笑了,設(shè)置SQL Server網(wǎng)絡(luò)配置中SQL EXPRESS和MSSQL
6、SERVER中的TCP/IP和Named Pipes協(xié)議的狀態(tài)為啟用,默認(rèn)是不啟用的。設(shè)置完成后重啟服務(wù)就可以了。然后配置ODBC數(shù)據(jù)源:以一個(gè)簡單實(shí)例來說明:學(xué)籍管理系統(tǒng)。 打開SQL Server management Studio以SQL server方式連接數(shù)據(jù)庫:圖 十三新建數(shù)據(jù)庫 member。在member數(shù)據(jù)庫里面創(chuàng)建兩個(gè)表:user和score。我之后會(huì)以O(shè)DBC方式連接score表設(shè)計(jì)score表:圖 十四有上圖所示的一些列。然后再自己先編寫一些內(nèi)容:比如:圖 十五這是我隨意編寫的一些信息然后開始同前面設(shè)置ACCESS數(shù)據(jù)源一樣的操作:這里添加選SQL Server選項(xiàng):圖
7、 十六圖 十七 服務(wù)器選自己的電腦,因?yàn)閱螜C(jī)練習(xí)嘛,最簡單了,點(diǎn)擊完成。出現(xiàn)圖十八所示界面:圖 十八你可以單擊測試數(shù)據(jù)源,測試一下,如果照前面的設(shè)置進(jìn)行了的話,連接就會(huì)成功,出現(xiàn)如圖十九的對(duì)話框:圖 十九至此,ODBC的sql數(shù)據(jù)源設(shè)置好了:圖 二十然后打開VS2010新建項(xiàng)目,創(chuàng)建MFC對(duì)話框程序。在VS2010中創(chuàng)建對(duì)話框向?qū)]有連接數(shù)據(jù)源的選項(xiàng),單文檔和多文檔是有的。那么先不管,先來設(shè)計(jì)學(xué)籍管理系統(tǒng)的對(duì)話框界面如下:圖 二十一這個(gè)界面,相信學(xué)過MFC的同學(xué)都會(huì)做了,然后對(duì)相應(yīng)的變量進(jìn)行設(shè)計(jì)。然后創(chuàng)建數(shù)據(jù)庫連接,還是添加類里面選擇ODBC數(shù)據(jù)庫使用者圖 二十二出現(xiàn)數(shù)據(jù)源選擇界面,單擊數(shù)據(jù)源
8、按鈕,出現(xiàn)數(shù)據(jù)源菜單,切換到系統(tǒng)數(shù)據(jù)源視口,然后選擇之前設(shè)置的huiyuaninfo sql 數(shù)據(jù)庫。圖 二十三單擊確定,出現(xiàn)登陸界面:圖 二十四這時(shí)候就必須輸入sa用戶和密碼,sa用戶的創(chuàng)建在前面說了,要在數(shù)據(jù)庫安裝的時(shí)候設(shè)置,單擊確定選擇score表:圖 二十五至此,數(shù)據(jù)庫連接成功然后創(chuàng)建了一個(gè)Cscore類,然后我們來看看他都有哪些內(nèi)容:#pragma once/ 代碼?生成在 2013年1月?22日?, 10:26class Cscore : public CRecordsetpublic:Cscore(CDatabase* pDatabase = NULL);DECLARE_DYNA
9、MIC(Cscore)CStringWm_stuid;CStringWm_stuname;CStringWm_stuclass;longm_usualscore;longm_testscore;longm_totalscore;public:virtual CString GetDefaultConnect();/ 默?認(rèn)?連?接字?符?串?virtual CString GetDefaultSQL(); / 記?錄?集的?默?認(rèn)? SQLvirtual void DoFieldExchange(CFieldExchange* pFX);/ RFX 支持?/ 實(shí)現(xiàn)?#ifdef _DEBUGv
10、irtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;#endif;VS2010的注釋粘貼到word里面會(huì)亂碼,我也不知道怎么回事,不過這不影響程序的理解,可以看到,這個(gè)類定義了六個(gè)變量和兩個(gè)虛函數(shù)再看他的源程序:/ score.h : Cscore 類的?實(shí)現(xiàn)?/ Cscore 實(shí)現(xiàn)?/ 代碼?生成在 2013年1月?22日?, 10:26#include stdafx.h#include score.hIMPLEMENT_DYNAMIC(Cscore, CRecordset)Cscore:Csco
11、re(CDatabase* pdb): CRecordset(pdb)m_stuid = L;m_stuname = L;m_stuclass = L;m_usualscore = 0;m_testscore = 0;m_totalscore = 0;m_nFields = 6;m_nDefaultType = dynaset;/#error 安2全?問題a:o連?接字?符?串?可能包含?密碼?。/ 此?連?接字?符?串?中D可能包含?明文?密碼?和/或其?他?重?要a/ 信?息。請?在查看完此?連?接字?符?串?并找到?所有D與?安2全?/ 有D關(guān)?的?問題a后移?除y #error??赡苄?/p>
12、要a將?此?密碼?存?/ 儲(chǔ)為a其?他?格?式?或使1用?其?他?的?用?戶身份Y驗(yàn)證。CString Cscore:GetDefaultConnect()return _T(DSN=xuejiguanli;Trusted_Connection=Yes;APP=Microsoftx00ae Visual Studiox00ae 2010;WSID=LIYI;DATABASE=member;Network=DBMSSOCN);CString Cscore:GetDefaultSQL()return _T(dbo.score);void Cscore:DoFieldExchange(CFieldE
13、xchange* pFX)pFX-SetFieldType(CFieldExchange:outputColumn);/ RFX_Text() 和 RFX_Int() 這a類宏依賴的?是?/ 成員變?量?的?類型,?而?不?是?數(shù)y據(jù)Y庫a字?段?的?類型。/ ODBC 嘗試?自?動(dòng)將?列D值轉(zhuǎn)a換?為a所請?求的?類型RFX_Text(pFX, _T(stuid), m_stuid);RFX_Text(pFX, _T(stuname), m_stuname);RFX_Text(pFX, _T(stuclass), m_stuclass);RFX_Long(pFX, _T(usualscore
14、), m_usualscore);RFX_Long(pFX, _T(testscore), m_testscore);RFX_Long(pFX, _T(totalscore), m_totalscore);/ Cscore 診?斷?#ifdef _DEBUGvoid Cscore:AssertValid() constCRecordset:AssertValid();void Cscore:Dump(CDumpContext& dc) constCRecordset:Dump(dc);#endif /_DEBUG他把表中的六列和六個(gè)變量建立了關(guān)系。然后我們就可以通過這六個(gè)變量來對(duì)數(shù)據(jù)庫進(jìn)行操作
15、了。下面給出對(duì)話框初始化函數(shù)里面的代碼:BOOL CxuejiDlg:OnInitDialog()CDialogEx:OnInitDialog();/打開a數(shù)y據(jù)Y集,?建立數(shù)y據(jù)Y集和對(duì)?話框變?量?之?間?的?聯(lián)a系Cscore m_set;m_set.Open();m_set.MoveFirst();m_stuid=m_set.m_stuid;m_stuname=m_set.m_stuname;m_testscore=m_set.m_testscore;m_usualscore=m_set.m_usualscore;m_totalscore=m_set.m_totalscore;Upda
16、teData(false);/設(shè)置?列D表框的?風(fēng)?格?DWORD dwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE;m_list.SetExtendedStyle(dwExStyle);m_list.SetTextColor(RGB(255,0,0);m_list.SetBkColor(RGB(240,247,233);/初?始?化列D表 插?入?6列D,?設(shè)置?寬度m_list.InsertColumn(0,L學(xué)號(hào)?,LVCFMT_CENTER,65,0
17、);m_list.InsertColumn(1,L姓?名?,LVCFMT_CENTER,65,0);m_list.InsertColumn(2,L班級(jí)?,LVCFMT_CENTER,65,0);m_list.InsertColumn(3,L平?時(shí)成績,LVCFMT_CENTER,65,0);m_list.InsertColumn(4,L期末?成績,LVCFMT_CENTER,65,0);m_list.InsertColumn(5,L總評(píng)成績,LVCFMT_CENTER,65,0);CString strsql;strsql.Format(Lselect * from score order b
18、y stuid);ListAll(strsql);首先建立了一個(gè)列表框,然后要通過最后一行的ListAll函數(shù)來把數(shù)據(jù)庫里面的所有信息顯示到列表控件里面來,初始化函數(shù)主要寫了列表控件的初始化信息。列表控件的使用可以查詢MSDN有詳細(xì)的說明。最后來看看ListAll函數(shù)是怎樣實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的顯示的:void CxuejiDlg:ListAll(CString str)m_list.DeleteAllItems();Cscore m_score;/tryif(m_score.IsOpen()m_score.Close();if(!m_score.Open(CRecordset:snapshot,str)MessageBox(L打開a數(shù)y據(jù)Y庫a失敗!?,L數(shù)y據(jù)Y庫a錯(cuò)誤,MB_OK);return;catch(CDBException *e)e-ReportError();/int nindex=0;m_score.MoveFirst();CString uscore,tscore,fscore;while(!m_score.IsEOF()LV_ITEM litem;litem.mask=LVIF_TEXT;litem.iItem=nindex;litem.iSubItem=0;litem.pszText=L;/在最?后
溫馨提示
- 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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 介入護(hù)理進(jìn)修后回院匯報(bào)
- 教培安全培訓(xùn)
- 個(gè)人股份轉(zhuǎn)讓的合同范例二零二五年
- 合同擔(dān)保的含義和類型
- 商標(biāo)授權(quán)協(xié)議書范例二零二五年
- 轉(zhuǎn)讓股權(quán)協(xié)議書范文二零二五年
- 二零二五版辦公用品采購協(xié)議合同
- 開票協(xié)議書范例
- 不同行業(yè)廣告創(chuàng)意
- 廚房安全生產(chǎn)課件
- DB34∕T 3791-2021 智慧藥房驗(yàn)收規(guī)范
- 阿里巴巴操作手冊
- 專利挖掘課件
- 地下綜合管廊工程機(jī)電安裝工程施工方案
- 2024年甘肅省定西市中考地理試卷(含答案解析)
- 高速公路路網(wǎng)數(shù)字底座研究與建設(shè)
- 藥學(xué)專業(yè)崗位分析報(bào)告范文
- 七年級(jí)道法上冊 第一單元 少年有夢 單元測試卷(人教版 2024年秋)
- 一年級(jí)古詩帶拼音
- DL-T586-2008電力設(shè)備監(jiān)造技術(shù)導(dǎo)則
- 河南省南陽市唐河縣2023-2024學(xué)年八年級(jí)下學(xué)期期末數(shù)學(xué)試題
評(píng)論
0/150
提交評(píng)論