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





原创粉丝点击