MFC 数据库编程
来源:互联网 发布:linux tmp系统清理 编辑:程序博客网 时间:2024/05/15 05:07
使用ADO进行数据库编程
ADO对象:Connection对象:用来建立和维护与数据库的连接。在打开之前,用连接信息配置该对象,包括数据库位置,用户ID以及密码。一旦所有这些信息都正确地匹配了,Connection对象将立即调用其Open方法,以打开连接。可以调用Connection对象的Close对象来关闭数据库的连接。
Command对象:在数据库中执行命令,可以使用这个语句来运行SQL语句或调用存储过程。无论何时需要命令返回数据行,都必须将Command对象与Recordset对象相关联,以返回存储在记录集中的数据,
Recordset:包含数据库的一个记录集,该记录集是一条命令被送入数据库之后所返回的一组记录,可以像在其他数据库访问技术一样,在Recordset对象中定位,也可以通过和Recordset相关联的Field对象,访问Recordset的每一条记录中的字段,可以更新Recordset的记录,然后使用Recordset来更新数据库。此外还可以给Recordset插入新记录,或删除记录,然后使用Recordset来更新数据库。
Error:当数据库发生错误时,来自数据库的错误信息就被放入ADO Error对象。Error对象中的错误信息是数据库的错误信息,而非ADO的错误信息。当遇到一个错误并需要查看错误信息以判定哪出错时,需要检验数据库错误代码以说明,而不是ADO的错误代码。
Parameter对象:用来传递变量和调用存储的过程或参数化的查询.这些功能都将与Command对象相关联,用来调用已经编入Command对象的命令。当调用存储过程时,通常需要给该过程传递参数,为了传递参数,必须把这一系列的Parameter对象与Command对象相关联。每个Parameter对象都有一个参数名,用来保存参数的值,此值应该被传递给数据库的特定参数。
Field:表示Recordset中的一个列。每个Field对象都包含列名,数据值以及数据值的表示方式。由于ADO是设计用于微软的脚本语言,而脚本语言中唯一可以用的数据类型是Variant数据类型,Field字段始终包含一个Variant数据值。当更新到数据库时,数据值被自动转换为正确的数据类型。(使用ADO对象时必须把数据值从Variant数据类型转换为所需要的类型,而更新数据值时则又换回Variant数据类型。)
通常情况下,要使用ADO访问数据库的时候,要经过以后几个步骤:(1)导入ADO DLL(2)初始化COM环境(3)创建连接对象,与数据库建立连接(4)执行命令并返回记录集
#import "C:\program files\common files\system\ado\msado15.dll" no_namespace,rename("EOF","adoEOF")//写入stdafx.h文件中
::CoInitialize(NULL);//初始化COM环境
_ConnectionPtr con;
con->ConnectionTimeout = 5;//设置连接延时
_RecordsetPtr rst(__uuidof(Recordset));
HRESULT hr;
_bstr_t StrStatement="123456";
_bstr_t StrUser="sa";
_bstr_t Str_Psw;
_variant_t ID;
_variant_t SID;
hr = con.CreateInstance(__uuidof(Connection));
StrStatement = "Provider=SQLOLEDB.1;Server=127.0.0.1;Database=DBMonitorV1.0_xinjiang;uid=sa;pwd=123456";
if(SUCCEEDED(hr))
{
hr = con->Open(StrStatement,StrUser,Str_Psw,adModeUnknown);//数据库连接
if(FAILED(hr)) //if(((HRESULT)(hr)) < 0) //判断连接是否成功
{
throw _T("Can't linked sql");//代表打开数据库失败
}
else
{
rst = con->Execute(_bstr_t("select * from Alarms"),NULL,-1);//执行SQL语句
while(!rst->adoEOF)
{
ID = rst->GetCollect("alarmid");//获取alarmid项的值
SID = rst->GetCollect("strategyId");
rst->MoveNext();
}
}
}
rst->Close();
rst->Open(_variant_t("select * from Alarms"),_variant_t((IDispatch *)con), adOpenDynamic,adLockOptimistic,-1);//AddNew之前要先Open
rst->AddNew();
rst->PutCollect("alarmType",_variant_t("100"));//往结果集里面写数据
rst->Update();//更新数据库
rst->Delete(adAffectCurrent);//删除当前项
rst->Close();
if(con->State)
{
con->Close();
}
con = NULL;
- MFC ADO 数据库编程
- MFC DAO数据库编程
- ADO + MFC 数据库编程
- MFC ODBC数据库编程
- MFC 数据库编程
- 开始学习MFC数据库编程
- [MFC]ADO 数据库编程参考
- MFC中的数据库编程技巧
- MFC中的ADO数据库编程
- MFC ODBC数据库操作编程
- MFC+Access数据库(ADO数据库编程)
- vc数据库编程-mfc odbc
- vc数据库编程-mfc odbc
- VC6.0数据库编程之MFC ODBC
- VC数据库编程-MFC ODBC
- VC6.0数据库编程之MFC ODBC
- MFC数据库管理系统编程(二)
- MFC数据库管理系统编程(三)
- voip客户端的选型(转载)
- ORACLE导出数据库数据 JAVA
- CEF3自研究笔记 三、将CEF嵌入到MFC对话框程序中去
- reactor & proactor
- Xcode 常用快捷键
- MFC 数据库编程
- Java 反射最佳实践
- usb虚拟串口功能CDC或者叫VCP参考
- 资源大全系列(1):Java
- NOIP 2015
- find_first_of()和 find_last_of() 【获取路径、文件名】
- C++中的强制类型转换
- .gitignore使用方法和规范
- HTTP 长连接和短连接