鱼C论坛

 找回密码
 立即注册
查看: 1674|回复: 1

c++ ado 访问SQL的空表问题

[复制链接]
发表于 2015-6-10 12:29:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
测试C++ ADO 访问修改SQL数据的时候 发现表内数据为空的时候会报指针的错误.下面上图片和上代码
  1. #include <icrsint.h>
  2. #include<iostream>
  3. #include<iomanip>
  4. #include <string>

  5. #import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") rename("BOF", "adoBOF")


  6. class cSQL
  7. {
  8. public:
  9.         cSQL()
  10.         {
  11.                 CoInitialize(NULL);
  12.                 HRESULT hr = sqlSp.CreateInstance(__uuidof(Connection));
  13.                 if (FAILED(hr))
  14.                 {
  15.                         std::cout << "初始化指针失败!" << std::endl;
  16.                         return;
  17.                 }
  18.                 else
  19.                 {               
  20.                         if (FAILED(m_pRecordset.CreateInstance(_uuidof(Recordset))))
  21.                         {
  22.                                 std::cout << "记录集对象指针实例化失败!" << std::endl;
  23.                                 return;
  24.                         }
  25.                 }
  26.         }
  27.         ~cSQL()
  28.         {

  29.                 m_pRecordset->Close();
  30.                 sqlSp->Close();
  31.                 CoUninitialize();
  32.         }

  33.         void INIT(char password[])
  34.         {
  35.                 sprintf_s(bueffer, 256, "Driver={sql server};server=127.0.0.1,1433;uid=sa;pwd=%s;database=wx2008db;", password);
  36.                 _bstr_t strConnect = bueffer;

  37.                 try
  38.                 {                       
  39.                         sqlSp->Open(strConnect, "", "", NULL);
  40.                 }
  41.                 catch (_com_error &e)
  42.                 {
  43.                         std::cout << e.Description() << std::endl;
  44.                 }

  45.                 try
  46.                 {
  47.                         m_pRecordset->Open("select * from  tStat", (IDispatch*)sqlSp, adOpenDynamic, adLockOptimistic, adCmdText);
  48.                 }
  49.                 catch (_com_error &e)
  50.                 {
  51.                         std::cout << e.Description() << std::endl;
  52.                 }

  53.                 try
  54.                 {
  55.                         m_pRecordset->MoveFirst();
  56.                         while (!m_pRecordset->adoEOF)   ////遍历并读取sPassword列的记录并输出   直到结尾
  57.                         {
  58.                                 insertTime = (char *)(_bstr_t)m_pRecordset->GetCollect("sCardID");//方法一;
  59.                                 //m_pRecordset->Fields->GetItem(_variant_t("sCardID"))->Value);
  60.                                 std::cout << "\t" << insertTime << std::endl;
  61.                                 m_pRecordset->MoveNext();


  62.                         }
  63.                 }
  64.                 catch (_com_error &e)
  65.                 {
  66.                         std::cout << e.Description()<< std::endl;
  67.                 }

  68.         }
  69. protected:
  70.         _ConnectionPtr  sqlSp=NULL;
  71.         _RecordsetPtr        m_pRecordset;
  72.         char bueffer[256], serverip[256], password[256];
  73.         std::string insertTime;

  74. };


  75. void main()
  76. {
  77.         cSQL mysql;
  78.         mysql.INIT("Sicent110");
  79.         system("pause");
  80. }
复制代码


谁能看下要怎么改呢

读取到空数据时报错

读取到空数据时报错

数据的查看

数据的查看
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-6-10 20:29:59 | 显示全部楼层
难道没有悬赏没有人出手?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-20 03:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表