用ADO方式连接SQL SEVER的几个简单步骤
来源:互联网 发布:淘宝众筹是什么意思 编辑:程序博客网 时间:2024/05/16 15:44
特别注意:在程序中如果m_pConnection->Execute 执行的SQL语句语法不正确或者 在数据库中这个SQL语句执行后无返回结果而又在程序中想获得它的返回结果。程序会出错
其步骤一般分为:
(1) 引入ADO动态库文件
(2) 初始化COM环境
(3) 连接数据库操作数据
1、引入ADO库文件,一般是在stdAfx.h文件中添加(在你需要添加的头文件中添加)
#import "E:\\Program Files\\Common Files\\System\\ado\\msado15.dll" no_namespace rename("EOF","adoEOF")
上面所包含的路径已实际路径为准,我的是E盘下的,rename("OldName,""NewName"): rename属性用于解决名称冲突的问题。若该属性被指定,编译器将在类型库中的OldName的所有出现的地方用结果头文件中用户提供的NewName替换。此属性用于类型库中的一个名称和系统头文件中的宏定义重合时。
这条语句会在工程所在目录生成msado15.tlh和msado15.tli两个文件。
2、初始化Com环境
::CoInitialize(NULL); //初始化COM环境,在需要连接数据库的.cpp中添加
::CoUninitialize(); //释放COM环境,在断开数据库连接后添加
3、连接数据库操作数据
声明智能指针,通过这些指针可以很容易的创建和删除ADO对象
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
_CommandPtr m_pCommand;
下面在”连接函数“代码中说明如何用
BOOL OnInitADOConn(){::CoInitialize(NULL);//初始化COM环境try{m_pConnection.CreateInstance("ADODB.Connection");//创建连接对象实例_bstr_t strConnect = "Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=book;Data Source=."; //关于数据库连接的各项信息m_pConnection->Open(strConnect, "", "", adModeUnknown);//使用Open方法连接数据库}catch (_com_error e){MessageBox(NULL, "数据库连接失败", "提示", MB_ICONINFORMATION);return FALSE;}return TRUE;}
//注意,我这里写的连接字符串strConnect是通过以下步骤的得到的:
//1、新建一个文件,名字任意取,后缀名必须为udl(如何hello.udl)
//2、双击hello.udl文件,进入数据连接属性面板,
//3、测试连接成功后,再以记事本方式打开,第三行的数据就是连接字符。
下面的代码是”断开连接“的函数
void AdoSql::ExitConnect(){if (m_pRecordset != NULL)m_pRecordset->Close();m_pConnection->Close();::CoUninitialize();}
下面是示例代码:
#import "E:\\Program Files\\Common Files\\System\\ado\\msado15.dll" no_namespace rename("EOF","adoEOF") //导入库文件int main(){ OnInitADOConn();//初始化和连接数据库 bstrSQL = "SELECT UserName FROM YongHu"; m_pRecordset =m_pConnection->Execute(bstrSQL, &RecordsAffected, adCmdText); _variant_t varName; varName = m_pRecordset->GetCollect("UserName");//获取表YongHu中的列UserName的第一个值 m_pRecordset->MoveNext(); varName = m_pRecordset->GetCollect("UserName");//获取表YongHu中的列UserName的第二个值 ........ ExitConnect();//断开连接 return 0;}
1、打开记录集
m_pRecordset=m_pConnection->Execute(CommandText,RecordsAffected,Options)
说明如下:
CommandText:包含要执行的SQL语句,表名、存储过程名或特定提供者的文本;
RecordsAffected:可选,长整型,提供者返回操作的影响的记录数目;
Options:常量,可选,长整型,具体如下:
adCmdText:指示提供者应将CommandText赋值为命令的文本定义
adCmdTable:返回CommandText命名的表中的所有行
adCmdTableDirect:与上类同,返回表的所有行
adCmdStoredProc:应将CommandText赋值为存储过程
adCmdUnknown:CommandText参数中的命令类型未知
adExecuteAsync:命令应异步执行
adFetchAsync:指示CacheSize属性指定的初始数量之后的行应异步提取。
例:m_pRecordset=m_pConnection->Execute(L"select * from p_users",NULL,adCmdText
2、使用记录集
A、读取数据
_variant_t varValue;
varValue=m_pRecordset->GetFields()->GetItem((long)i)->Value;//读取当前记录的第i+1个字段的值
varValue=m_pRecordset->GetFields()->GetItem((long)i)->Name;//读取当前记录的第i+1个字段的名字
也可根据字段名来访问该字段的值:
varValue=m_pRecordset->GetCollect(L"字段名"); //读取当前记录的第i+1个字值的值
读取这个字段的下一个值只需要将指针向下移动一次即可
m_pRecordset->MoveNext()
varValue=m_pRecordset->GetCollect(L"字段名")//第i+2个字值的值
B、更新数据
_bstr_t bstrValue="新数据";
m_pRecordset->GetFields()->GetItem((long)i)->Value=bstrValue; //更新当前记录第i+1个字段的值
m_pRecordset->Update();
C、添加数据
if (m_pRecordset->Support(adAddNew)&&m_pRecordset->Support(adUpdate))
{
m_pRecordset->AddNew();//插入一条新记录
m_pRecordset->GetFields()->GetItem((long)0)->Value=L"YP00100"; //为每个字段赋值
m_pRecordset->GetFields()->GetItem((long)1)->Value=L"速效感冒胶囊";
m_pRecordset->GetFields()->GetItem((long)2)->Value=L"SXGMJN";
m_pRecordset->Update();//更新记录集
}
D、删除数据
m_pRecordset->Delete(adAffectCurrent);//默认,仅删除当前记录
m_pRecordset->Delete(adAffectGroup);//删除满足当前Filter属性设置的记录。
以上操作相对麻烦,采用Connection对象的Execute方法,可能更简单些,举例如下:
添加数据:
CString sSql,sName,sXingBie,sStipend,sID;
sName="张三";
sXingBie="男";
sStipend="2200";
sID="5";
sSql.Format("insert into 员工信息表 Value(%s,%s,%s,%s)",sName,sXingBie,sStipend,sID);
m_pRecordset=m_pConnection->Execute((_bstr_t)sSql,NULL,adCmdText);
其它操作类同。
我尽可能的使代码简单,所以省略了很多细节,尤其是忽略了很多好的编程习惯(比如检查大多数COM方法都返回的HRESULT值)。
- 用ADO方式连接SQL SEVER的几个简单步骤
- VS2010中MFC用ADO方式连接 SQL SERVER 2008 EXPRESS的步骤。
- ADO远程连接数据库SQL sever
- VC++的ADO连接SQL Server步骤
- 如何简单的连接SQL SEVER 和oracle
- sql sever 三种分页方式效率的简单测试
- sql sever 2008表连接方式总结
- SQL Sever 2008的安装步骤
- sql sever中几个函数的用法
- 在VS2010环境下用ADO方式连接SQL2008的步骤
- Hibernate框架连接SQL sever 2016完整详细步骤
- sql sever的连接以及使用
- sql sever的连接以及使用
- sql sever客户端连接的问题
- mfc用ado的方式连接access
- SQL Sever 中的连接
- ADO连接SQL数据库的几种方式
- ADO连接SQL数据库的几种方式
- 阅读笔记《c++ primer》
- 阅读笔记《孙鑫-VC++深入详解》
- 阅读笔记《C++标准程序库》
- C++中extern “C”含义深层探索
- 阅读笔记《全景探秘游戏设计艺术》
- 用ADO方式连接SQL SEVER的几个简单步骤
- 基于mirror driver的windows屏幕录像
- 股指期货模拟系统
- 阅读笔记《游戏策划教程》
- 几个基本的设计原则
- 异或特性
- IOS 学习五 ----ViewController
- c++11多线程库
- cocos2dx新建android项目lib拷贝、访问权限等问题集