Visual C++使用ADO操作SQL最精简例子代码
2013-09-19 12:29
274 查看
已经不使用Visual C++多年了,最近应邀为朋友修改一个现存的VC++操作SQL Server2000的老程序,所以重新回顾了一下基本的代码格式。发布到这里,以便于以后再用到时迅速复习。
1 头文件stdafx.h
2 实现文件adocpp.cpp
1 头文件stdafx.h
// stdafx.h : 标准系统包含文件的包含文件, // 或是经常使用但不常更改的 // 特定于项目的包含文件 // #pragma once #include "targetver.h" #define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的信息 // Windows 头文件: #include <windows.h> // C 运行时头文件 #include <stdlib.h> #include <malloc.h> #include <memory.h> #include <tchar.h> // TODO: 在此处引用程序需要的其他头文件 #import "C:/Program Files (x86)/Common Files/System/ado/msado15.dll" no_namespace rename("EOF", "adoEOF") rename("BOF", "FirstOfFile")
2 实现文件adocpp.cpp
// ADOCPP.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" _ConnectionPtr pConnection; _CommandPtr pCmd; _RecordsetPtr pRecord; int _tmain(int argc, _TCHAR* argv[]) { CoInitialize(NULL); try { HRESULT hr; //创建连接实例 hr = pConnection.CreateInstance("ADODB.Connection"); if(SUCCEEDED(hr)) { //连接数据库 _bstr_t connectStr = "Provider=SQLOLEDB;Data Source=服务器IP;Initial Catalog=数据库名;User ID=用户名;Password=密码"; hr = pConnection->Open(connectStr, "", "", adModeUnknown); _variant_t vAffected; _bstr_t sql; //执行查询 pRecord = pConnection->Execute("select top 10 * from 表名", &vAffected, adCmdText); //枚举查询结果集 _TCHAR buffer[100]; _variant_t vID; _variant_t vTitle; while(!pRecord->adoEOF) { vID = pRecord->GetCollect(_variant_t((long)0)); //按照序号取列值 vTitle = pRecord->GetCollect("列名"); //按照列名称取列值 if(vID.vt != NULL){ wsprintf(buffer, _T("%d-%s\r\n"), vID.intVal, (LPCWSTR)(_bstr_t)vTitle); //整数,字符串 wprintf(buffer); } pRecord->MoveNext(); } //执行更新(如果影响行数为0, 不会抛出异常) sql = "update lyb set name='hello' where ID=3"; pConnection->Execute(sql, &vAffected, adCmdText); //执行插入 sql = "insert into 表名(name, neirong) values('test', 'test')"; pConnection->Execute(sql, &vAffected, adCmdText); //执行删除(如果影响行数为0, 不会抛出异常) sql = "delete from lyb where id=20"; pConnection->Execute(sql, &vAffected, adCmdText); wsprintf(buffer, _T("%d"), vAffected.intVal); wprintf(buffer); //关闭连接和结果集 pRecord->Close(); pConnection->Close(); } else { printf("ADO组件加载失败"); } CoUninitialize(); } catch(_com_error e) //SQL系统报错(如语法错误、违反约束),才会产生异常,用户程序逻辑问题,要根据影响行数来判定 { MessageBox(NULL,e.Description(), _T("异常"), MB_OK); } return 0; }
相关文章推荐
- 代码里使用字符串操作来拼接sql语句的坏处
- java代码,使用sql语句操作mongo数据库
- 使用ADO.NET下的SqlBulkCopy类执行批量复制操作
- 操作、压缩MDB文件;使用ADO读写Mysql数据库;建立数据库和表的VBS脚本代码(2013-08-26 11:39:34)
- 代码里使用字符串操作来拼接sql语句的坏处
- SQL 游标使用的小例子,对于每行数据根据参数的不同进行Insert或Update操作.
- ADO.net——使用数据集更新数据库(例子及代码解析)
- PL/SQL Developer结合oracle精简客户端使用配置错误代码ORA-12154: TNS: 无法解析指定的连接标识符
- 自己写的一个使用ADO操作ACCESS数据库的例子
- 使用jxl读写excel(jxl操作excel)的简单例子
- 使用properties属性文件做连接数据库的操作代码
- C++/STL_中vector基本操作测试代码,vector.erase()使用方法
- 使用Java代码操作MongoDB(CRUD)方法二
- VC6.0中使用ADO操作Access数据库有感
- 高效的使用空间SQL操作空间数据库系列之二
- [代码]如何使用存储过程返回行集(LINQ to SQL)
- 不使用spring的情况下用java原生代码操作mongodb数据库的两种方式
- mapreduce-combiner函数使用例子代码
- linq to sql 三层架构中使用CRUD操作
- 使用Mycat操作Oracle数据库(七) -- JAVA代码JDBC连接Mycat