• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            分享知識(shí)

            與大家一起分享知識(shí)

            C++博客 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
              19 Posts :: 3 Stories :: 45 Comments :: 0 Trackbacks

            由于項(xiàng)目要發(fā)布一個(gè)單機(jī)版,原來(lái)用的數(shù)據(jù)庫(kù)是大型數(shù)據(jù)庫(kù)。需要在單機(jī)版中用Access比較方便,另外也不能讓用戶自己創(chuàng)建數(shù)據(jù)源,最終的方案就是在程序中直接訪問(*.mdb)Access數(shù)據(jù)庫(kù)文件,下面簡(jiǎn)要給出在VC6.0中的訪問Access數(shù)據(jù)庫(kù)文件的方法:
            注:data.mdb數(shù)據(jù)庫(kù)文件中有一個(gè)表(tperson),有一個(gè)字段(name)

            ?CString strSql;
            ?CString strName;
            ?CString strDriver = "MICROSOFT ACCESS DRIVER (*.mdb)";
            ?CString strDsn;
            ?CString strFile = "E:\\CurrentWork\\AccessTest\\data.mdb";
            ?strDsn.Format("ODBC;DRIVER={%s};UID=sa;PWD=;DBQ=%s",strDriver,strFile);
            ?TRY
            ?{

            ???CDatabase m_db;//加上這個(gè)定義,本來(lái)這個(gè)是一個(gè)類中的成員,暫時(shí)就放在這。
            ???m_db.Open(NULL,false,false,strDsn);
            ??CString strConnect = m_db.GetConnect();
            ??CRecordset rs(&m_db);
            ??strSql = "select * from tperson";
            ??rs.Open(CRecordset::forwardOnly,strSql,CRecordset::readOnly);
            ??while(!rs.IsEOF())
            ??{
            ???rs.GetFieldValue("name",strName);//讀取數(shù)據(jù)庫(kù)內(nèi)容的代碼
            ???rs.MoveNext();
            ??}
            ??m_db.Close();
            ?}
            ?CATCH(CDBException,e)
            ?{
            ??AfxMessageBox("Database Error:" + e->m_strError);
            ?}
            ?END_CATCH;
            其中最關(guān)鍵的地方也就是strDSN這個(gè)字符串的內(nèi)容要正確。

            posted on 2006-04-13 13:01 史傳紅 閱讀(12902) 評(píng)論(9)  編輯 收藏 引用 所屬分類: C/C++細(xì)節(jié)知識(shí)

            Feedback

            # re: VC中訪問Access數(shù)據(jù)庫(kù)的方法(不需要用戶建立ODBC數(shù)據(jù)源) 2006-04-13 13:16 Stone Jiang
            m_db 是什么呢?
            用ADO也可以呀?
            http://www.codetools.com/database 中有一個(gè)ado2的包裝類
            簡(jiǎn)單好用  回復(fù)  更多評(píng)論
              

            # re: VC中訪問Access數(shù)據(jù)庫(kù)的方法(不需要用戶建立ODBC數(shù)據(jù)源) 2006-04-13 15:10 史傳紅
            @Stone Jiang
            能把這篇文章貼出來(lái)嗎?我打開連接發(fā)現(xiàn)是好多主題。謝謝。  回復(fù)  更多評(píng)論
              

            # re: VC中訪問Access數(shù)據(jù)庫(kù)的方法(不需要用戶建立ODBC數(shù)據(jù)源) 2006-04-13 17:21 Stone Jiang
            http://www.codetools.com/database/caaadoclass1.asp

              回復(fù)  更多評(píng)論
              

            # re: VC中訪問Access數(shù)據(jù)庫(kù)的方法(不需要用戶建立ODBC數(shù)據(jù)源) 2006-05-24 14:25 hah
            支持!  回復(fù)  更多評(píng)論
              

            # re: VC中訪問Access數(shù)據(jù)庫(kù)的方法(不需要用戶建立ODBC數(shù)據(jù)源) 2010-03-30 17:31 guest
            謝謝,我遇到運(yùn)行異常問題了,提示:SQLFetchScroll/SQLExtendedFetch 之前,沒有列被綁定,按照你的方法,解決了。我想問一下,該怎么往里添加和修改數(shù)據(jù)?  回復(fù)  更多評(píng)論
              

            # re: VC中訪問Access數(shù)據(jù)庫(kù)的方法(不需要用戶建立ODBC數(shù)據(jù)源) 2010-07-22 14:51 sunnyshi
            @guest
            不好意思,我好久沒有搞這方面了,完全忘記了:)  回復(fù)  更多評(píng)論
              

            # re: VC中訪問Access數(shù)據(jù)庫(kù)的方法(不需要用戶建立ODBC數(shù)據(jù)源) 2011-04-07 12:40 Scatnow
            感謝分享,謝謝分享,謝謝  回復(fù)  更多評(píng)論
              

            # re: VC中訪問Access數(shù)據(jù)庫(kù)的方法(不需要用戶建立ODBC數(shù)據(jù)源) 2011-05-05 22:47 guest
            試試看,先謝謝了!  回復(fù)  更多評(píng)論
              

            # re: VC中訪問Access數(shù)據(jù)庫(kù)的方法(不需要用戶建立ODBC數(shù)據(jù)源) 2012-03-25 12:19 f13986203901
            void CMy24Dlg::OnButton1()
            {
            int index=0;
            CString strSql;
            CString strname;
            CString strDriver="MICROSOFT ACCESS DRIVER(*.mdb)";
            CString strDsn;
            CString strFile="F:\\user.mdb";
            TRY
            {
            strDsn.Format("ODBC;DRIVER={%S};UID=sa;PWD=;DBQ=%s",strDriver,strFile);
            CDatabase m_db;
            m_db.Open(NULL,FALSE,FALSE,strDsn);
            CString strConnect=m_db.GetConnect();
            CRecordset rs(&m_db);
            strSql="select * from usertable";
            rs.Open(CRecordset::forwardOnly,strSql,CRecordset::readOnly);
            while(!rs.IsEOF())
            {
            rs.GetFieldValue("name",strname);
            m_pList.SetItemText(index,1,strname);
            index++;
            rs.MoveNext();

            }
            rs.Close();
            m_db.Close();
            }
            CATCH(CDBException,e)
            {
            AfxMessageBox("Database Error:" + e->m_strError);
            }
            END_CATCH;
            }
            我用您的方法寫了上面那個(gè),提示:未發(fā)現(xiàn)數(shù)據(jù)源名稱和未指定默認(rèn)驅(qū)動(dòng)程序!!怎么回事?  回復(fù)  更多評(píng)論
              

            午夜不卡久久精品无码免费| 91久久精品国产成人久久| 久久精品国产亚洲精品| 亚洲欧美国产精品专区久久| 久久99九九国产免费看小说| 久久综合亚洲欧美成人| 国产精品美女久久久久av爽 | 日韩欧美亚洲国产精品字幕久久久 | 青青热久久综合网伊人| 亚洲国产精品嫩草影院久久| 久久精品国产一区二区| 精品久久久久久99人妻| 亚洲日韩中文无码久久| 狠狠久久综合伊人不卡| 国产农村妇女毛片精品久久| 狠狠人妻久久久久久综合蜜桃| 国内精品免费久久影院| 欧美与黑人午夜性猛交久久久| 欧美粉嫩小泬久久久久久久 | 女人香蕉久久**毛片精品| 久久精品国产99国产精品澳门| 亚洲国产精品成人久久蜜臀 | 久久伊人五月丁香狠狠色| 久久久久久国产精品无码下载| 久久午夜电影网| 99久久精品免费看国产| 久久午夜综合久久| 久久久久久久综合狠狠综合| 国内精品久久久久国产盗摄| 日日狠狠久久偷偷色综合96蜜桃| 日批日出水久久亚洲精品tv| 亚洲精品国产字幕久久不卡 | 国产精品嫩草影院久久| 久久精品无码免费不卡| 久久人妻AV中文字幕| 精品国际久久久久999波多野| 久久久午夜精品| 99久久99久久| 久久99国产精品久久久| 日本加勒比久久精品| 久久无码人妻一区二区三区 |