Visual C++使用ADO操作SQL最精简例子代码

已经不使用Visual C++多年了,最近应邀为朋友修改一个现存的VC++操作SQL Server2000的老程序,所以重新回顾了一下基本的代码格式。发布到这里,以便于以后再用到时迅速复习。

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 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;}

版权声明:本文为博主原创文章,未经博主允许不得转载。

要温暖还是怕麻烦。

Visual C++使用ADO操作SQL最精简例子代码

相关文章:

你感兴趣的文章:

标签云: