• ADO实例


      1 //rename作用:解决EOF重定义问题,dll中定义的EOF和程序定义的EOF冲突
      2 /*no_namespace作用:
      3 #import msado15.dll 生成文件 msado15.tlh,默认是有namespace ADODB {},
      4 所有内容都包在这个名字空间中,访问时需要输入命名空间;
      5 用了no_namespace 生成的头文件中没有namespace,所有内容是全局的,方便访问。 
      6 也可以使用 using namespace ADODB。
      7 */
      8 #import "C:\Program Files\Common Files\System\ado\msado15.dll" rename("EOF", "adoEOF") no_namespace
      9 //using namespace ADODB;
     10 
     11 /*CONNSTRING生成过程:
     12 新建一个记事本文件,后缀改为udl,然后双击打开,配置好后用记事本打开,即可得到CONNSTRING
     13 */
     14 #define CONNSTRING "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=test;Data Source=."
     15 
     16 
     17 void CMy2014_09_11Dlg::OnBtnSelect() 
     18 {
     19     //清空listview
     20     m_ctrlResult.DeleteAllItems();
     21 
     22     //COM初始化
     23     CoInitialize(NULL);
     24     
     25     //定义连接对象的智能指针
     26     _ConnectionPtr conn;
     27     //定义记录集对象的智能指针
     28     _RecordsetPtr  rs;
     29     
     30     try
     31     {
     32         HRESULT hr;
     33         
     34         //创建连接对象(智能指针初始化,. 表示调用智能指针的成员函数)
     35         //{00000514-0000-0010-8000-00AA006D2EA4}
     36         hr = conn.CreateInstance("ADODB.Connection"); 
     37         
     38         //连接数据库(-> 表示调用智能指针指向对象的成员函数,即调用连接对象的成员函数)
     39         hr = conn->Open(CONNSTRING, "", "", adConnectUnspecified);
     40         
     41         //构造查询语句
     42         UpdateData(TRUE);
     43         CString strSQL = "select * from t_student where 1 = 1";
     44         if (m_strSno.Compare("*") != 0)
     45         {
     46             CString strChild = " and sno = '"+ m_strSno +"'";
     47             strSQL += strChild;
     48         }
     49         if (m_strSname.Compare("*") != 0)
     50         {
     51             CString strChild = " and sname = '"+ m_strSname +"'";
     52             strSQL += strChild;
     53         }
     54         if (m_strSex.Compare("*") != 0)
     55         {
     56             CString strChild = " and sex = '"+ m_strSex +"'";
     57             strSQL += strChild;
     58         }
     59         if (m_strBirthday.Compare("*") != 0)
     60         {
     61             CString strChild = " and birthday = '"+ m_strBirthday +"'";
     62             strSQL += strChild;
     63         }
     64 
     65         //执行命令
     66         rs = conn->Execute(strSQL.GetBuffer(0), NULL, adOptionUnspecified);
     67         
     68         //获取字段数量
     69         int nCount = rs->Fields->GetCount();
     70         
     71         //获取并输出数据
     72         HWND hList = m_ctrlResult.GetSafeHwnd();
     73         LVITEM lvi = {0};
     74         lvi.mask = LVIF_TEXT;
     75         while(!rs->adoEOF)
     76         {
     77             int nIndex = 0;
     78             for (int i = 0; i < nCount; i++)
     79             {
     80                 if (i == 0)
     81                 {
     82                     lvi.iItem = nIndex;
     83                     //发送LVM_INSERTITEM消息时,subitem必须为0
     84                     lvi.iSubItem = i;
     85                     CString strTmp = (char*)(_bstr_t)rs->Fields->Item[(long)i]->Value;
     86                     lvi.pszText = strTmp.GetBuffer(0);
     87                     //返回值为item的索引
     88                     nIndex = ::SendMessage(hList, LVM_INSERTITEM, 0, (LPARAM)&lvi);
     89                 }
     90                 else
     91                 {
     92                     lvi.iItem = nIndex;
     93                     lvi.iSubItem = i;
     94                     CString strTmp = (char*)(_bstr_t)rs->Fields->Item[(long)i]->Value;
     95                     lvi.pszText = strTmp.GetBuffer(0);
     96                     ::SendMessage(hList, LVM_SETITEM, 0, (LPARAM)&lvi);
     97                 }
     98             }
     99 
    100             rs->MoveNext();
    101         }
    102         
    103     }
    104     catch (_com_error e)
    105     {
    106         MessageBox(e.Description());
    107     }
    108 
    109     //关闭连接
    110     conn->Close();
    111 
    112     //COM反初始化
    113     CoUninitialize();
    114 }
  • 相关阅读:
    AjaxPro版自动完成(Autocomplete)功能实现
    推荐一款小巧的截图工具
    在VS2008中设置jquery智能提示
    Jquery选择器全总结
    MD5消息摘要算法的那些事
    C#中的集合学习笔记
    委托,文件流,扩展方法学习笔记
    Jquery实现仿腾讯微薄的广播发表
    C#中的文件流学习笔记第一篇
    ASP.NET MVC小记第一篇
  • 原文地址:https://www.cnblogs.com/luzhiyuan/p/3967866.html
Copyright © 2020-2023  润新知