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 }
时间: 2024-12-26 21:19:57

ADO实例的相关文章

C++使用ADO连接数据库及其实例

读写数据库的技术很多,现在多用ADO.ADO以COM方式提供,所以它的很多行为遵循COM规范.首先,要引入ADO的COM文件,它的位置一般在"C:/Program Files/Common Files/System/ado/msado15.dll". 1. 引入ADO 打开预编译头文件StdAfx.h,写上引入声明: #import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace

ADO.NET(Connection、DataSet)查询实例大全

ADO.NET的名称起源于ADO(ActiveX Data Objects),是一个COM组件库,用于在以往的Microsoft技术中访问数据.之所以使用ADO.NET名称,是因为Microsoft希望表明,这是在NET编程环境中优先使用的数据访问接口. 传统的资料处理主要是依赖相互连接的双层式模型.随着资料处理朝多层次架构发展,程式设计人员也逐渐改用中断连接的方式,使应用程序更具延展性(Scalability).ADO .NET3.0 中用于存取和管理资料的两个主要元件是 .NET Frame

DotNerCore的ADO.NET操作实例

依赖环境 .Net Core 1.0.0-preview2-003121 VSCode 一.创建.Net Core项目 1.打开命令行选择好工作目录后执行 dotnet new,生成2个文件(Program.cs.project.json) 2.执行 dotnet restore 还原整个项目的依赖库 生成相应文件 3.执行 dotnet build 编译程序 4.执行 dotnet run 默认输出 helloworld 此时默认的.net core  console程序已经完成创建 解析依赖

ADO.NET使用MySqlCommand实例获取数据

using MySql.Data.MySqlClient; using System; namespace ConsoleTest { class Program { static string connectionString = "server=localhost;user id=lqs2011;password=******;database=toucai"; static void Main(string[] args) { MySqlConnection connection

LINQ To SQL 语法及实例大全

LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句. Where操作包括3种形式,分别为简单形式.关系条件形式.First()形式.下面分别用实例举例下: 1.简单形式: 例如:使用where筛选在伦敦的客户 var q = from c in db.Customers where c.City == "London" select c

升讯威ADO.NET增强组件(源码):送给喜欢原生ADO.NET的你

不提码代码,光是写博客就要写一整个晚上,对您有用的话还请赞一个~ 目前我们所接触到的许多项目开发,大多数都应用了 ORM 技术来实现与数据库的交互,ORM 虽然有诸多好处,但是在实际工作中,特别是在大型项目开发中,容易发现 ORM 存在一些缺点,在复杂场景下,反而容易大大增加开发的复杂度及牺牲灵活度.使用 ORM 不写 SQL 而使数据库交互变得简单易行,是否能够达到预期效果,要画一个问号. 主要问题可能存在于以下几点: 1.大幅度牺牲性能. 2.虽然隐藏了数据层面的设计,但并没有从根本上降低数

第二天 ado.net, asp.net ,三层笔记

1. ado.net步骤:     一:倒入命名空间      using System.Data;      using System.Data.sqlclient;     二:第一个模型 int  ExecuteNonQuery();返回受影响的行数      准备连接字符串      准备sql语句      创建连接对象(sqlconnection)      创建执行对象 (sqlcommand)      打开连接      执行操作      关闭    整合:      str

猎豹MFC--CFile类家族介绍ADO连接数据库 打开数据库 关闭数据库 连接字符串

  ODBC最古老,但到今天还在使用.偶尔使用. DAO  和RDO  为旧接口. OLE DB新,复杂  微软 出了ADO. VC++   +  ADO是主流: MySQL  和Oracle都有专用接口. ADO底层是OLE DB实现.ADO是COM组件. ADO 专用文件夹: 要用msADO15.dll 打开stdafx.h头文件:在其内导入该库: 在初始化实例时  初始化ADO: 下面都是COM编程要求做的: windows内部大量使用COM. 异常处理: 然后整个项目就可以使用ADO了.

Java进击C#——语法之ADO.NET

本章简言 上一章讲到关于C#语法的基础部分.了解相关的基础部分之后我们就要去了解一下C#是什么样子访问数库的.C#把访问数据库这一部分的知识点叫作ADO.NET.即是JAVA常常讲到的JDBC这一部分的知识点了.笔者根据使用数据库方式的不同又分为有线连接和无线连接(关于有线和无线的叫法是笔者个人定义的.因为看了不同的书里面很多叫法).不管是什么样子的叫法.只要明白有线是保持连接的状态下操作数据库.而无线是连接之后复制一份副本,关闭连接,对副本进行操作之后,在连接更新数据库.笔者认为如果只是使用的