纯C++ 连接SQL Server2005 数据库读写操作的小例子

摘要:
m_pRecordset-˃EndOfFile){vsName=m_pRecordset-˃GetCollect(“名称”);vsPassWd=m_pRecordset-˃GetCollect(“PassWd”);vsID=m_pRecordset-˃GetCollege(“ID”);如果(vsnum.vt!=vt_NULL&&vsName.vt!=vt_NULL&&vsPassWd.vt!=vt_NULL&&vsID.vt!

一个测试c++链接 sql server 数据库的例子
// 数据库说明
// 数据库用户为 sa , 密码为 空
// 数据库为 MyDB
// 表为 UserInfo
// 表字段为 Name 、 PassWd 、ID

// TestSQL.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <iomanip>
#import "c:Program FilesCommon FilesSystemADOmsado15.dll" no_namespace rename("EOF", "EndOfFile")
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
// 初始化COM接口
CoInitialize(NULL);

// _RecordsetPtr智能指针,可以用来打开库内数据表,并可以对表内的记录、字段等进行各种操作
_RecordsetPtr m_pRecordset("ADODB.Recordset");//定义记录集对象

// _ConnectionPtr智能指针,通常用于打开、关闭一个库连接或用它的Execute方法来执行一个不返回结果的命令语句
_ConnectionPtr m_pConnection("ADODB.Connection");//定义数据库连接对象

try
{
// 创建Connection对象
m_pConnection.CreateInstance("ADODB.Connection");

// 设置连接字符串,若数据库在网络上则Server为形如(192.168.253.253,3340)
_bstr_t strConnect = "Provider=SQLOLEDB; Server=Localhost; Database=MyDB; uid=sa; pwd=;";

// 建立与服务器连接
m_pConnection->Open(strConnect,"","",adModeUnknown);
if (m_pConnection ==NULL)
{
cerr<<"Lind data ERROR! ";
}

m_pRecordset.CreateInstance(__uuidof(Recordset));//创建记录集对象

//取得表中的记录
_bstr_t bstrSQL("select *from UserInfo");//查询语句
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

_variant_t vsnum, vsName,vsPassWd, vsID,vsmajor;//对应库中的snum,sname,sage,ssex,smajor

cout<<"姓名 密码 ID ";
cout<<"------------------------------------------- ";

while (!m_pRecordset->EndOfFile)
{
vsName= m_pRecordset->GetCollect("Name");
vsPassWd= m_pRecordset->GetCollect("PassWd");
vsID= m_pRecordset->GetCollect("ID");

if (vsnum.vt !=VT_NULL && vsName.vt !=VT_NULL&& vsPassWd.vt!=VT_NULL && vsID.vt != VT_NULL&& vsmajor.vt!=VT_NULL)
{
cout.setf(ios::left);
cout<<setw(14) <<(char*)(_bstr_t)vsName;
cout<<setw(14) <<(char*)(_bstr_t)vsPassWd;
cout<<setw(14) <<(char*)(_bstr_t)vsID;
cout.unsetf(ios::left);
cout<<endl;
}

//移动下一条记录
m_pRecordset->MoveNext();
}

cout<<" ------------------------------------------ ";

//用Execute执行sql语句来创建表
m_pConnection->Execute("CREATE TABLE Employee(EmID INTEGER,EmName TEXT,EmAge INTEGER,EmBirthday DATETIME)", NULL, adCmdText);

m_pRecordset->Close();//关闭记录集
}
catch (_com_error e)
{
e.Description();//抛出异常
}

if (m_pConnection->State)
{
m_pConnection->Close();
}

::CoUninitialize();
return 0;
}

免责声明:文章转载自《纯C++ 连接SQL Server2005 数据库读写操作的小例子》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MAC误删Chrome书签解决方案C#模拟鼠标键盘控制其他窗口(一)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

VSCode插件MSSQL教程(昨天提了一下)

推荐一个跨平台SQL IDE:https://docs.microsoft.com/zh-cn/sql/sql-operations-studio/download 什么数据库都木有(系统自带的不算) 插件自己安装一下 按F1,输命令 连接就输入名字,创建就空着 用户名 下次就不用再输了 可以不填 连接成功了 创建数据库,创建表等等...

MySQL mysqldump数据导出详解

  转自:http://www.cnblogs.com/chenmh/p/5300370.html 介绍  在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具;它自带的功能参数非常多,文章中会列举出一些常用的操作,在文章末尾会将所有的参数详细说明列出来。 语法: 默认不带参数的导出,导出文本内容大概如...

修改Windows帐户密码,导致Sql Server 2000无法启动

修改Windows帐户密码,导致Sql Server 2000无法启动。 --现象以管理员或同等权限用户登录 Windows XP,建立 Sql Server 2000 数据库。之后,在修改此 Windows 帐户密码后,Sql Server 2000 不能启动,出错提示为:“未能建立与数据库的连接。原因:Sql Server 不存在或访问被拒绝”。“发生...

在Vue中使用了Swiper ,从后台获取动态数据后,swiper滑动失效

原因是因为Swiper提前初始化了,然而数据还没有加载完成。解决方法如下: 1、在Swiper初始化时 swiper0 = new Swiper('.w0', { initialSlide :0, observer:true,//修改swiper自己或子元素时,自动初始化swiper observeParents:true,//修改...

SQL基础之 时间戳

本文转载:http://www.cnblogs.com/liuhh/archive/2011/05/14/2046544.html 一直对时间戳这个概念比较模糊,相信有很多朋友也都会误认为:时间戳是一个时间字段,每次增加数据时,填入当前的时间值。其实这误导了很多朋友。 1.基本概念 时间戳:数据库中自动生成的唯一二进制数字,与时间和日期无关的, 通常...

造轮子之数据库对比工具DataBaseComparer

最近同时在维护好几个项目,有些项目是SqlServer的,另一些是MySql的,DBA推荐了一个线上库和线下库的对比工具,用的时候经常会在对比时,半天都没有进度。索性自己这次造个轮子,做了一个纯对比数据库表结构的工具,表之间可以对比字段名、类型、长度,出现这些不同就会显示在差异中。 程序运行的界面如下: 下一步之后: 这个是差异显示界面,用的是树形控件...