版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、VS2010連接數(shù)據(jù)庫(access和sql 2008)現(xiàn)在很多人開始用VS2010的C+了,以前大家都是從VC6.0開始使用,對6.0比較熟悉,網(wǎng)上很多關(guān)于連接數(shù)據(jù)庫的方法都是針對VC6.0的,很多人用2010用了一段時間之后不隨手就放棄了,繼續(xù)使用VC6.0.作者作為一名VS2010版本開始學(xué)習(xí)使用的人在數(shù)據(jù)庫連接的時候也遇到很多問題,在這里和大家分享如下:首先是用ACCESS 方式連接數(shù)據(jù)庫:以前VC6.0怎么連接相信大家都能夠百度得到了,他是通過首先打開控制面板-管理工具-數(shù)據(jù)源(ODBC)就到了圖一界面:圖一然后點擊右邊的添加按鈕:很多書里面都叫添加時候選第二項,也就是圖二里面所以深
2、色背景那項:圖二Vc6.0的操作就是這樣選擇。但在VS2010里面就不對。我用的是VS2010然后用ACCESS2007做數(shù)據(jù)庫保留后綴名:accdb如圖三圖三選擇這一項在VS2010里面就不會出錯了我在這里添加了一個叫:liyixu的access數(shù)據(jù)庫這就配置好了數(shù)據(jù)源接下來,講VS2010里面怎樣連接這個數(shù)據(jù)庫:在VC6.0里面是通過添加類的方法來添加數(shù)據(jù)庫里面的具體某一個表。而在VS2010里面也差不多。但是當(dāng)我們按照VC6.0添加正常類的時候發(fā)現(xiàn),他沒有基類CRecordset類可以選擇:圖四比如:如果選擇圖四中的MFC類圖五他里面沒有CRecordset基類可供選擇,也就無從選擇數(shù)據(jù)
3、源和表。那么VS2010里面其實是有專門的ODBC使用者設(shè)置的。選擇:圖六圖六中的MFC ODBC使用者選項,不需要輸入名稱位置,點擊添加按鈕:圖七進(jìn)入MFC ODBC使用者向?qū)В狐c擊數(shù)據(jù)源按鈕,進(jìn)入選擇數(shù)據(jù)源對話框,把文件數(shù)據(jù)源視圖切換到系統(tǒng)數(shù)據(jù)源視圖:圖八選擇之前在數(shù)據(jù)源中定義的liyixu 用戶數(shù)據(jù)源點擊確定出現(xiàn)登陸界面:圖九這里我登錄名和密碼是在添加數(shù)據(jù)源時在高級選項中設(shè)置的,如果你沒有設(shè)置,當(dāng)然就沒有,直接單擊確定按鈕就可以連接了圖十出現(xiàn)圖示界面 我的數(shù)據(jù)庫里面只有一個表會員信息,所以直接選擇他,然后單擊確定回到向?qū)Ы缑?,單擊完成,完成連接在這里你可以自定義自己的類的名稱:圖 十一我
4、在這里就直接以(huiyuaninfo)會員信息為類名了。在圖十一中我勾選了綁定所有列 然后就會被卡住程序崩潰,然后不勾選就沒有這種情況,如果在前面圖九中你設(shè)置了登陸名和密碼,程序也會發(fā)出警告,所有密碼出現(xiàn)在代碼中,編譯也會不成功,這時候把#error那一行注釋掉就行了。這樣就能以O(shè)DBC方式連接上ACCESS數(shù)據(jù)庫很清楚吧下面講一講怎樣連接SQL 2008 (這個是重點):很多人連接SQL失敗是數(shù)據(jù)庫配置的問題,權(quán)限沒有,所以訪問被拒絕。這個要從SQL 2008的安裝說起,由于是一時興起寫這篇文章,所以我就不把自己的數(shù)據(jù)庫卸載了重裝了,其實就一個地方。在SQL 2008安裝過程中,很多教材都
5、叫選擇windows登陸模式,默認(rèn)實例。而不管是這里講的ODBC模式連接SQL 還是ADO方式這種比較方便的方式連接都需要登錄名和密碼。你在單擊上做練習(xí)的話 當(dāng)然是不需要什么登錄名的了,window驗證,開機(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ù)源:以一個簡單實例來說明:學(xué)籍管理系統(tǒng)。 打開SQL Server management Studio以SQL server方式連接數(shù)據(jù)庫:圖 十三新建數(shù)據(jù)庫 member。在member數(shù)據(jù)庫里面創(chuàng)建兩個表:user和score。我之后會以O(shè)DBC方式連接score表設(shè)計score表:圖 十四有上圖所示的一些列。然后再自己先編寫一些內(nèi)容:比如:圖 十五這是我隨意編寫的一些信息然后開始同前面設(shè)置ACCESS數(shù)據(jù)源一樣的操作:這里添加選SQL Server選項:圖
7、 十六圖 十七 服務(wù)器選自己的電腦,因為單機(jī)練習(xí)嘛,最簡單了,點擊完成。出現(xiàn)圖十八所示界面:圖 十八你可以單擊測試數(shù)據(jù)源,測試一下,如果照前面的設(shè)置進(jìn)行了的話,連接就會成功,出現(xiàn)如圖十九的對話框:圖 十九至此,ODBC的sql數(shù)據(jù)源設(shè)置好了:圖 二十然后打開VS2010新建項目,創(chuàng)建MFC對話框程序。在VS2010中創(chuàng)建對話框向?qū)]有連接數(shù)據(jù)源的選項,單文檔和多文檔是有的。那么先不管,先來設(shè)計學(xué)籍管理系統(tǒng)的對話框界面如下:圖 二十一這個界面,相信學(xué)過MFC的同學(xué)都會做了,然后對相應(yīng)的變量進(jìn)行設(shè)計。然后創(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)登陸界面:圖 二十四這時候就必須輸入sa用戶和密碼,sa用戶的創(chuàng)建在前面說了,要在數(shù)據(jù)庫安裝的時候設(shè)置,單擊確定選擇score表:圖 二十五至此,數(shù)據(jù)庫連接成功然后創(chuàng)建了一個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 支持?/ 實現(xiàn)?#ifdef _DEBUGv
10、irtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;#endif;VS2010的注釋粘貼到word里面會亂碼,我也不知道怎么回事,不過這不影響程序的理解,可以看到,這個類定義了六個變量和兩個虛函數(shù)再看他的源程序:/ score.h : Cscore 類的?實現(xiàn)?/ Cscore 實現(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。可能需
12、要a將?此?密碼?存?/ 儲為a其?他?格?式?或使1用?其?他?的?用?戶身份Y驗證。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值轉(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他把表中的六列和六個變量建立了關(guān)系。然后我們就可以通過這六個變量來對數(shù)據(jù)庫進(jìn)行操作
15、了。下面給出對話框初始化函數(shù)里面的代碼:BOOL CxuejiDlg:OnInitDialog()CDialogEx:OnInitDialog();/打開a數(shù)y據(jù)Y集,?建立數(shù)y據(jù)Y集和對?話框變?量?之?間?的?聯(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é)號?,LVCFMT_CENTER,65,0
17、);m_list.InsertColumn(1,L姓?名?,LVCFMT_CENTER,65,0);m_list.InsertColumn(2,L班級?,LVCFMT_CENTER,65,0);m_list.InsertColumn(3,L平?時成績,LVCFMT_CENTER,65,0);m_list.InsertColumn(4,L期末?成績,LVCFMT_CENTER,65,0);m_list.InsertColumn(5,L總評成績,LVCFMT_CENTER,65,0);CString strsql;strsql.Format(Lselect * from score order b
18、y stuid);ListAll(strsql);首先建立了一個列表框,然后要通過最后一行的ListAll函數(shù)來把數(shù)據(jù)庫里面的所有信息顯示到列表控件里面來,初始化函數(shù)主要寫了列表控件的初始化信息。列表控件的使用可以查詢MSDN有詳細(xì)的說明。最后來看看ListAll函數(shù)是怎樣實現(xiàn)對數(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錯誤,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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年甲乙丙平房交易合同
- 醫(yī)療美容機(jī)構(gòu)空間設(shè)計與體驗提升
- 商業(yè)策略新思維創(chuàng)新管理與競爭
- 創(chuàng)新型企業(yè)運(yùn)營中的風(fēng)險管理策略
- 2025中國鐵塔校園招聘高頻重點提升(共500題)附帶答案詳解
- 2025中國電信集團(tuán)限公司云網(wǎng)運(yùn)營部社會招聘高頻重點提升(共500題)附帶答案詳解
- 2025中國大唐集團(tuán)限公司華北電力運(yùn)營分公司招聘(內(nèi))高頻重點提升(共500題)附帶答案詳解
- 2025下半年湖南益陽市資陽區(qū)事業(yè)單位招聘工作人員16人高頻重點提升(共500題)附帶答案詳解
- 2025下半年浙江湖州經(jīng)開投資發(fā)展集團(tuán)限公司及其下屬子公司招聘18人高頻重點提升(共500題)附帶答案詳解
- 2025下半年廣東潮州饒平縣衛(wèi)健系統(tǒng)事業(yè)單位招聘206人高頻重點提升(共500題)附帶答案詳解
- 低壓送電施工方案
- 廣州中醫(yī)藥大學(xué)2022學(xué)年第一學(xué)期《護(hù)理學(xué)基礎(chǔ)》期末考試附答案
- 五年級上冊數(shù)學(xué)試題-《組合圖形的面積》測試卷A北師大版 (含答案)
- FZ/T 71001-2015精梳毛針織絨線
- 第11章樓蓋資料課件
- 計算機(jī)基礎(chǔ)知識整理課件
- 蔬菜主要病蟲害識別及防治技術(shù)(培訓(xùn)課件)
- 2022-2023學(xué)年福建廈門九年級上學(xué)期期末質(zhì)檢模擬考語文試題及答案
- 高一數(shù)學(xué)必修2《事件的關(guān)系和運(yùn)算》課件
- 2023年6月福建高中會考生物試題
- 《鱒魚》教學(xué)課件
評論
0/150
提交評論