VC 6.0 通过ADO 远程连接VS2008

步骤及代码如下:

1、首先在Stdafx.h头文件中引入ADO库,代码如下:

//引入ADO库
#import "C:\Program Files\common files\system\ado\msado15.dll" no_namespace rename("EOF","EndOfFile") rename("BOF","FirstOfFile")    

//rename("EOF","EndOfFile")表示将"EOF"重新定义为"EndOfFile"

2、在需要连接数据库的.CPP文件中加入数据库操作代码: 
   ::CoInitialize(NULL);  .                             //初始化COM库
 _ConnectionPtr  m_pstartconn;                //连接对象指针
 m_pstartconn.CreateInstance(__uuidof(Connection)); //初始化对象
 _RecordsetPtr pRecordsetstart;             //数据集对象指针
 pRecordsetstart.CreateInstance(__uuidof(Recordset));   //初始化数据集指针

//连接数据库的字符串

 CString strConnect= "Provider=SQLOLEDB.1;Password=123;Persist Security Info=False;User ID=123;Initial Catalog=datatest;Data Source=10.1.8.221";

注释:Provider字段指 打开数据库用哪种方式连接,Password指数据库的认证密码,Persist Security Info指是否保存安全信息,User ID指数据库的认证用户名,Initial Catalog指数据库的名称或者目录,Data Source指远程的数据库(服务器)IP地址

 

下面是有两种打开数据库方式,一个是以m_pstartconn打开数据库,另一个以pRecordsetstart连接数据库,实际操作可以任选其一

1>以m_pstartconn打开数据库:

try
    {
        if (m_pConnection->State)
        {
            m_pConnection->Close();
        }
        // 设置超时时间为3秒钟
        m_pConnection->PutConnectionTimeout(3);
        m_pConnection->Open(_bstr_t(strConnect),"","",adModeUnknown);
       }
    catch(_com_error e)
    {
         CString strmessage;
        strmessage.FormatMessage("数据库连接失败!",e.Description());
        AfxMessageBox(strmessage);
     }

2>下面是以pRecordsetstart打开数据库并连接f_test_tb表及异常处理:
 try
    {
        if (m_pstartconn->State)
        {
            m_pstartconn->Close();
        }
        m_pstartconn->PutConnectionTimeout(5);                     // 设置超时时间为5秒钟
       pRecordsetstart->Open("select * from f_test_tb", _bstr_t(strConnect),
      adOpenDynamic, adLockOptimistic, adCmdUnknown);        //打开数据库中的f_test_tb表,得到数据集,并赋给pRecordsetstart

      }
    catch(_com_error e)
    {
       CString strmessage;
       strmessage.FormatMessage("数据库连接失败!",e.Description());
        AfxMessageBox(strmessage);
    }

 

3、上面连接数据库的步骤已经完成,下面是对数据库表的操作:

 //插入数据

  CString strSQL = "insert into f_data(order,pn,testname,testvalue) values('312','GS','wcd,'30')";//插入字符串

  pRecordsetftest->AddNew();
  pRecordsetftest->PutCollect("order",12); //插入列数据,order指表中的字段,12指插入此列的数据
  pRecordsetftest->PutCollect("pn",34); //插入列数据,pn指表中的字段,34指插入此列的数据
  pRecordsetftest->Update(); //更新数据库表
 

   //获得数据库表的数据:

    CString strpn=((_variant_t)pRecordsetstart->GetCollect("pn")).bstrVal;  //pn 指表中的字段,获取到的数据赋给变量strpn。  

  // 删除数据库的数据:

    CString strpn=((_variant_t)pRecordsetstart->GetCollect("pn")).bstrVal;  //pn 指表中的字段,获取到的数据赋给变量strpn,再删除

    pRecordsetstart->Delete(adAffectCurrent);

    pRecordsetstart.->Update();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值