zoukankan      html  css  js  c++  java
  • 解决小问题VC2008通过ADO连接ACCESS (转)

    总结如下:

    1、在导入ADO库时,在stdafx.h的最后插入语句:

    #import "c:\program files\common files\system\ado\msado15.dll" named_guids rename_namespace("ADOCG") rename("EOF", "EndOfFile") rename("BOF","FirstOfFile")
    using namespace ADOCG;
    #include "icrsint.h"

    2、数据库连接字符串最好使用绝对路径

    strCon.Format(L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",L"D:\\VCplusProject\\CommodityDB.mdb");

    3、SQL语句中的字段注意不能跟系统保留字冲突,最好都加上中括号,如

    pRst=pConn->Execute("select * from [Table]",NULL,adCmdText);

        如果Table没有中括号就会报错

    4、获取RecordSet中数据时,要保证列名正确,否则编译没问题,但是运行会报错,如

    ((CListBox*)GetDlgItem(IDC_LIST1))->InsertString(-1,(_bstr_t)pRst->Fields->GetItem(L"Commoditys")->Value);

        我就是因为Commoditys写成了Commodity,找错误找的快抓狂了。

    5、完整连接代码如下

    //操作数据库
    CoInitialize(NULL);
    _ConnectionPtr pConn(__uuidof(Connection));
    _RecordsetPtr pRst(__uuidof(Recordset));
    _CommandPtr pCmd(__uuidof(Command));

    CString strCon;

    strCon.Format(L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",L"D:\\VCplusProject\\CommodityDB.mdb");

    pConn->ConnectionString=_bstr_t(strCon);
    pConn->Open("","","",adModeUnknown);

    pRst=pConn->Execute("select * from [Table]",NULL,adCmdText);

    while(!pRst->EndOfFile)
    {
        ((CListBox*)GetDlgItem(IDC_LIST1))->InsertString(-1,(_bstr_t)pRst->Fields->GetItem(L"Commoditys")->Value);
        pRst->MoveNext();
    }

    pRst->Close();
    pConn->Close();
    pCmd.Release();
    pRst.Release();
    pConn.Release();
    CoUninitialize();

    6、如果只做插入操作,则更简单一些,代码如下

    1. CoInitialize(NULL); 
    2.     _ConnectionPtr pConn(__uuidof(Connection)); 
    3.     _RecordsetPtr pRst(__uuidof(Recordset)); 
    4.     _CommandPtr pCmd(__uuidof(Command)); 
    5.  
    6.  
    7.     CString strCon; 
    8.      
    9.     strCon.Format(L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",L"D:\\VCplusProject\\CommodityDB.mdb"); 
    10.  
    11.     pConn->ConnectionString=_bstr_t(strCon); 
    12.     pConn->Open("","","",adModeUnknown); 
    13.      
    14.     CString strInsert; 
    15.     strInsert.Format(L"INSERT INTO [Table](Commoditys) VALUES ('%s')",strRandItems); 
    16.  
    17.     _variant_t RecordsAffected; 
    18.  
    19.     pConn->Execute(_bstr_t(strInsert),&RecordsAffected,adCmdText); 
    20.      
    21.  
    22.     pConn->Close(); 
    23.     pCmd.Release(); 
    24.     pConn.Release(); 
    25.     CoUninitialize(); 
  • 相关阅读:
    mysql5大引擎之间的区别和优劣之分
    关于集合
    泛型
    集合2
    easyui 入门讲解
    <input>和<textarea>
    php中echo(),print(),print_r(),var_dump()间的区别
    PHP图形操作之生成图像验证码
    JZ046圆圈中最后剩下的数
    Python3连接MySQL
  • 原文地址:https://www.cnblogs.com/rainbowzc/p/2119010.html
Copyright © 2011-2022 走看看