<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    將數組存入數據庫的解決方法及用VC與數據庫交互

    implode()  ---把數組轉換成字符串  
    explode() ---把字符串轉換成數組
    對于一維數組可以簡單的用
    implode()
    explode()
    函數做數組——串的變換,但需注意分隔符要使用數組中不存在的字符
    對于多維數組可以用序列化函數處理
    serialize()
    unserialize()
    ---------------------------------------
    ADO連接數據庫,使用控件
    Microsoft ADO Data Control 6.0 (SP6) (OLEDB)
    ADO庫包含三個基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。
    聲明兩個變量:
    _ConnectionPtr l_pConnection;
    _RecordsetPtr l_pRecordset;
    下面開始連接數據庫
    l_pConnection.CreateInstance("ADODB.Connection");
    也可以是l_pConnection.CreateInstance(__uuidof(Connection));二者選一。

    下面列出了連接三種數據庫的語句
    CString strConn;
    1、連接SQL SERVER
    strConn.Format("driver={SQL Server}; Server=%s; DATABASE=%s; UID=%s; PWD=%s", strServer, dbName, user, psw);
    strServer是服務器名,如果訪問本地數據庫,可是設strServer = “172.0.0.1”或”.”;這是我試過的,都可以。
    dbName是數據庫名稱,user, psw是用戶名和密碼。
    2、連接ORACLE
    trConn.Format("Provider=MSDAORA.1;Data Source=%s;", "%s", "%s", adModeUnknown, dbName, user, psw);
    dbName, user, psw分別是數據庫名,用戶名,密碼。
    3、連接ACCESS
    strConn.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;
    Persist Security Info=False;Jet OLEDB:Database Password=%s", dbName, psw);
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=fnamepath","","",adModeUnknown
    dbName是數據庫路徑名,如“F:\\DB\\hermes.mdb”,psw是密碼。

    設置了連接語句,下面要和數據庫進行連接了,對于上面三種數據庫都是要執行下面這個連接的,下面語句是打一開連接的語句。
    connPtr->Open((_bstr_t)strConn, "", "", adModeUnknown);
    adModeUnknown:缺省。當前的許可權未設置
    adModeRead:只讀
    adModeWrite:只寫
    adModeReadWrite:可以讀寫
    adModeShareDenyRead:阻止其它Connection對象以讀權限打開連接
    adModeShareDenyWrite:阻止其它Connection對象以寫權限打開連接
    adModeShareExclusive:阻止其它Connection對象以讀寫權限打開連接
    adModeShareDenyNone:阻止其它Connection對象以任何權限打開連接

    4、連接UDL
    CString strConnect = "File Name=" + udlDir;
    connPtr->Open((_bstr_t)strConnect, (_bstr_t)user, (_bstr_t)psw, adModeUnknown);
    字符串udlDir是udl文件路徑,user和pssw是udl連接數據庫的用戶名和密碼。

    得到記錄集:
    l_pRecordset.CreateInstance("ADODB.Recordset");
    l_pRecordset->Open(_bstr_t(l_strSQLConn),
    _variant_t((IDispatch*)l_pConnection, true),
    adOpenStatic, adLockOptimistic, adCmdText);
    l_strSQLConn是select語句

    // 遍歷結果集
    while( !l_pRecordset->adoEOF)
    {
    ……// 在這里添加操作結果集的代碼如:
    strTemp = (LPCSTR)(_bstr_t)l_pRecordsetTable->GetCollect(_variant_t((long)i));// 得到某個字段的記錄。
    l_pRecordset->MoveNext();
    }
    對數據庫的操作一般使用異常機制。也就是try{…}catch(){..}
    注意,一個_RecordsetPtr的對象只能得到一個記錄集,重復用時就會出錯。當要打開兩個數據庫時最好定義兩個_RecordsetPtr對象

    四、關閉記錄集和連接
    關閉記錄集:
    l_pRecordsetTable->Close();
    l_pRecordsetTable = NULL;

    關閉連接:
    l_pConnection->Close();
    l_pConnection = NULL;

    // 釋放環境
    ::CoUninitialize();
    附加:
    l_pRecordset執行select語句后就可以得到表的字段名,字段數,字段大小,我寫了三個函數,分別得到指定表的字段數,
    指定字段的字段名及字段大小。

    // 得到字段名
    BOOL CLx4Dlg::GetFieldsName(_RecordsetPtr RcdPtr, int nField, CString & strFieldName)
    {
    if(NULL == RcdPtr || nField >= RcdPtr->GetFields()->Count)return FALSE;
    _variant_t vt((long)nField);
    strFieldName.Format(_T("%s"), (char*)(RcdPtr->GetFields()->Item[vt]->Name));
    return true;
    }

    // 得到字段大小
    int CLx4Dlg::GetFieldsSize(_RecordsetPtr RcdPtr, int nField)
    {
    if(NULL == RcdPtr || nField >= RcdPtr->GetFields()->Count)return FALSE;
    _variant_t vt((long)nField);
    int nSize = RcdPtr->GetFields()->Item[vt]->DefinedSize; // 返回已聲明的字段大小
    //int nSize = RcdPtr->GetFields()->Item[vt]->ActualSize; // 返回給定字段中數據的實際大小
    return nSize;
    }
    SQL 語句:
    得到SQL SERVER的所有用戶類型的表
    select name from sysobjects where xtype='U'

    得到ORACLE的所有用戶表
    select tname from tab where tabtype='TABLE'

    得到ACCESS的所有用戶建的表
    SELECT Name FROM MSysObjects WHERE Flags=0 AND Type=1
    SELECT MSysObjects.Name FROM MSysObjects WHERE Type=1

    posted on 2011-12-21 11:09 weisa 閱讀(290) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2011年12月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    常用鏈接

    留言簿

    隨筆檔案

    搜索

    最新評論

    主站蜘蛛池模板: 精品国产综合成人亚洲区| www.亚洲色图.com| 亚洲高清美女一区二区三区| 香港a毛片免费观看| 久久久婷婷五月亚洲97号色 | 久久综合亚洲色HEZYO社区| 久久狠狠躁免费观看2020| 亚洲高清在线观看| 91精品免费观看| 亚洲国产成人资源在线软件| 成人免费无码大片A毛片抽搐色欲| 亚洲日产乱码一二三区别 | 亚洲一级特黄大片在线观看| 一个人免费观看视频在线中文 | 亚洲国产精品免费视频| 麻豆视频免费观看| 亚洲精品无码久久久久YW| 日产国产精品亚洲系列| 免费在线黄色电影| 亚洲人成人77777网站不卡| 四色在线精品免费观看| 深夜特黄a级毛片免费播放| 亚洲精品无码专区久久久| 色欲色香天天天综合网站免费 | 四虎成人免费观看在线网址| 男女啪啪免费体验区| 久久精品国产精品亚洲蜜月| 性做久久久久久久免费看| 黄色毛片免费网站| 亚洲国产精品一区| 免费A级毛片无码久久版| 日韩精品免费视频| 亚洲国产成人久久一区二区三区| 久久精品国产亚洲7777| 黄+色+性+人免费| 成人午夜影视全部免费看| 亚洲黄色一级毛片| 亚洲国产成人精品91久久久| 99久热只有精品视频免费看| 老妇激情毛片免费| 亚洲国产成AV人天堂无码|