ADO编程常见问题总结
来源:互联网 发布:淘宝电商装修代运营 编辑:程序博客网 时间:2024/06/03 17:26
直接利用ADO对象编程需要注意的问题做一个总结:
一:编程步骤:
直接使用ADO对象和ADO动态链接库文件编程,需要注意编程的步骤,一般必须包括如下几步:
1.利用import命令引入动态链接库文件“msado*.dll”
2.利用CoInitialize(NULL)和CoUninitialize()函数初始化和释放COM库
3.添加ADO对象指针变量,并实例化指针,之后才能够使用该对象的方法和属性
4.在给ADO对象的方法传递参数或者给属性赋值时,需要把C++数据类型转换为COM的数据类型
5.在调用ADO对象的方法时需要用try/catch语句来处理异常,防止程序在发生异常时退出
二:SQL语句
虽然各种DBMS的SQL语句都遵循标准的SQL语言,但是不同的数据库软件实际上SQL语言的语法还是有差异的。在开发程序中,需要确定数据库软件中的SQL语法。如果在程序中发送了错误的SQL命令,不仅不能够进行正常的数据库操作,还会引起程序中断或其他错误。
如在SQL server中的查询语句为:
CString strSQL;
strSQL="select * from tbStudent where Birth='1990-12-20";
而在Access中该时间是使用一对#符合括起来的
CString strSQL;
strSQL="select * from tbStudent where Bitth=#1990-12-20#";
可以看出在不同的数据库软件,其SQL语句是不同的,在SQL server中,可以利用查询分析器来检查程序中的SQL语句语法是否正确
三:连接串格式:
可以使用UDL文件进行数据库的连接,而在实际应用中经常使用"Name1=Value1,Name2=Value2,Name3=Value3....."字符串来进行数据库连接的设置。
下面给出在使用ADO连接SQL Server服务器时连接串的格式:
1.访问标准安全模的SQL Server服务器时连接串格式如下:
strConnect=_T("Prvoider=sqloledb;Data Source=(local);Persist Secutity Info=False;Initial Catalog=myDatebaseName;UserID =myUsername;Password=myPassword;");
其中Provider要包含版本信息,目前一般为“SQLOLEDB.1”,Data Source为服务器的名称,如果在程序和SQL Server服务器在同一台机器上则一定要设置为"(local)",其它情况下则为服务器的计算机名称,Initial Catalog应赋值为要访问的数据库名称。UserID和Password分别赋值为SQL Server服务器分配的登录用户名和秘密
2.访问集成安全模式的SQL Server服务器时连接串格式如下:
strConnect=T("Provide=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=myUsername;Initial Catalog=myDatabaseName;Data Source=MyServerName");
可以看到在使用集成安全模式时,不需要提供密码,而且增加了Integrated Security项。
3.访问远程计算机上的SQL Server服务器时,连接串格式可以如下所示:
strConnect=_T("Provider=SQLOLEDB.1;Persist Security Info=False;User ID=myUsername;Password=myPassword;Initial Catalog=myDatabase;Data Source=211.71.12.26,1433")
可以看到在连接远程SQL Server服务器时,需要在Data Source项中给出服务器的IP地址和端口号
四:设置记录集的过滤条件:
在之前的实例中直接使用Recordset对象的Open方法,在参数中直接指定SQL查询语句。在实际应用中,可能需要对得到的记录集的数据再进行筛选。
Recordset对象的Filter属性可以表示当前记录集的过滤条件。它的值可以是以AND或OR连接起来的条件表达式(不含WHERE关键字)或ADO提供的FilterGroupEnum枚举值。为Filter属性设置新值后Recordset的当前记录指针会自动移动到满足过滤条件的的第一个记录。
下面给出一个例子说明如何使用Filter属性设置记录集的过滤。
CString strSQL=“select * from tbStudent where BirthYear=1984”;
pRS->Open((_bstr_t)strSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdTable);
pRS->Filter=(_bstr_t)(Age>20 and Sex='F');
其中pRS是记录集对象指针。在Filter表达式中可以使用ADO和OR构成更复杂的过滤条件。此外还可以使用LINK。LINK后可以是一个含有通配符“*”的字符串,星号表示若干个任意的字符。下面是一个例子。
pRS->Filter=(_bstr_t)(Name LINK ‘*梅*’);
表示在记录集中过滤名字中间包括"梅“的学生记录。
五:访问远程SQL Server数据库
使用本地SQL Server数据库,不需要特别的网络设置,在UDL文件或者连接串中设置数据库服务器名都设置为(local),在实际应用中,大部分情况下数据库应用程序和SQL Server数据库不在同一台机器上,它们可以在同一局域网中或者不在同一局域网中,而需要使用IP地址访问该SQL Server
当数据库应用程序和SQL Server数据库在同一局域网中时,程序中的设置只要把(local)设置为该计算机名即可。下面主要介绍如何设置SQL Server,从而可以通过网络访问SQL Server。在数据库服务器所在的计算机上,选择开始\所有程序\Microsoft SQL Server\服务器网络实用工具命令,打开SQL Server网络使用工具对话框,如图所示
选中左下角启动WinSock代理模式复选框,然后可以设置WinSock代理地址和WinSock代理端口,分别在文本框中输入服务器的IP地址和端口号1433
如果成功,应该能够在客户机器上使用telent命令而不出现错误,具体方法是在命令行方式下输入如下命令。
telent<服务器的IP地址>1433
- ADO编程常见问题总结
- VC数据库编程 ADO常见问题
- ADO编程总结
- ADO编程 核心总结
- ADO编程总结
- ODBC+ADO编程总结
- ADO数据库编程 - 总结
- ADO编程总结
- ADO数据库编程 - 总结
- ADO数据库编程总结
- ADO数据库编程 - 总结
- ADO数据库编程 - 总结
- ADO数据库编程 - 总结
- ADO数据库编程--总结
- VC6.0+ADO+Access编程常见问题勘误
- Ado.Net读取Excel常见问题总结
- Ado.Net读取Excel常见问题总结
- --------------------Ado.Net读取Excel常见问题总结---------------------------
- 【已解决】打开的Word 2007文档自动变成只读
- Soap wsdl
- IOS学习笔记37——ViewController生命周期详解
- OMAP3530资料
- 汉字高地位字节判断
- ADO编程常见问题总结
- 关于volatile的用法
- [11月29日的脚本] 向用户配置文件添加Window小工具的脚本 (PowerShell)
- CxImage与OpenGL结合,用于读入多种格式的纹理以及用来把屏幕保存为各种格式的图像文件
- 李煜 天涯 青砚1989
- javascript 中的 void(0) 是指什么
- 在“开始”“运行”中输入cmd, calc, winmine是干什么?
- Android自动化测试
- 给激活了WS_HSCROLL,WS_VSCROLL的RichEdit增加自动换行的控制(转)