 |
snoopy每日一译-完美的ADO[2](下)
|
|
| |
| snoopy每日一译-完美的ADO[2](下)
by:Bob Place 1999.6.27
from:codeGuru
翻译:snoopy
可以建立两个同名方法,一个返回符号分割字符串(方法名有前缀”s”),另一个返回记录集:
STDMETHODIMP CADO::GetCustomerNameAndBalance(BSTR CustKey, _Recordset **Result)
{
// std stream used to create the SQL statement
std::strstream SQL;
// Put the BSTR into something we can deal with
_bstr_t Holder(CustKey);
SQL.str("");
SQL<<"SELECT a.cust_name, b.cust_balance FROM cust_info as a, cust_credit as b WHERE a.cust_id = '<<(char*)Holder<<" AND a.cust_key = b.cust_key";
ADOExecute(_bstr_t(SQL.str().c_str()),_bstr_t(","),Result);
retu ...
|
|
| 作者:不祥 ycr40张贴于2004-05-01 10:24:27.0,共阅读3037次,回复0次 |
|
|
 |
snoopy每日一译-完美的ADO[2](中)
|
|
| |
| snoopy每日一译-完美的ADO[2](中)
by:Bob Place 1999.6.27
from:codeGuru
翻译:snoopy
SAFEARRAY(sorry没有它的封装类)是从容易COM对象传送和接受数据的方法之一(当然,容易是相对而言)。
SAFEARRAYBOUND可以用来设置SAFEARRY的范围。你必须设定上界和下界。
让我们看看例子,假设我们要建立一个10行2列的SAFEARRAY:
//2列,因此MyBound有2维
SAFEARRAYBOUND MyBound[2];
//10行
MyBound[0].cElements = 10;
MyBound[1].cElements = 10;
//设定下界为0
MyBound[0].lLbound = 0;
MyBound[1].lLBound = 0;
//定义VARIANT指针
VARIANT *pVariant;
VariantInit(pVariant);
pVariant->vt = VT_VARIANT | VT_ARRAY;
pVariant->parray = SafeArrayCreate(VT_VARIANT2MyBound);//建立SAFEARRAY
或者你可以直接使用SAFEARRAY类型:
SAFEARRAY p ...
|
|
| 作者:不祥 ycr40张贴于2004-04-30 17:33:39.0,共阅读2971次,回复1次 |
|
|
 |
snoopy每日一译-完美的ADO[2](上)
|
|
| |
| 本文告诉你怎样使ADO在你未来的应用中更简单。但是,首先,先向你展示使用ADO的另外一些细节(在你的ATL COM对象中或在你的应用程序中)。例子中,我会向你展示如何在ATL对象中使用ADO。我们使用ATL建立business层对象的所有数据IO和规则。
这样不但允许我们在特定的应用中使用这些规则和数据,而且另外一些“相关”的应用程序可以使用它们。以下是本文接触到的内容:
1、建立一个ATL对象。
2、在ATL对象中加入ADO。
3、在接口中加入方法和属性。
4、BSTR(_bstr_t), VARIANT(_variant_t), 和 SAFEARRAY。
5、使用Connection对象连接/关闭连接,从SQL建立记录集,使用Command对象。
6、使用Command对象执行存储程序。
7、将记录集转换称符号分割字符串,并传送给客户程序。
8、封装访问ADO的business逻辑应用。
9、展示VC++和VB如何使用COM对象的方法和属性。完美的ADO II
by:Bob Place 1999.6.27
from:codeGuru
翻译:snoopy
一年多以前,我写了通用的Recordset。这是一个简单的包封了CDaoRecordset的类,令使用动态绑定大大简单化。然后,ADO来了,它缺省地使用动态绑定,跟DAO和通用的 ...
|
|
| 作者:不祥 ycr40张贴于2004-04-29 21:19:11.0,共阅读3135次,回复0次 |
|
|
 |
snoopy每日一译-完美的ADO
|
|
| |
| 本文的目的是让你感到ADO没有什么可怕的,而不是ADO的细节。我甚至没有告诉你ADO能做什么。ADO比DAO更快、更容易使用、更强大。完美的ADO
by:Bob Place 1999.4.4
from:codeGuru
翻译:snoopy
我们都很熟悉CDatabase和CDaoDatabase。它们相对比较容易去使用,它们很好地配合我们的应用程序,and they are easily distributed.使用CRecordset类,你很容易建立强大的数据库运用。
现在,当你刚刚感到用c++开发数据库项目有点把握的时候,微软推出一个叫UDA(Univeral Data Access数据统一访问)和一个相对简单,但缺乏文档说明的ADO(ActiveX Data Object)。非常不幸,微软的家伙们认为没有必要提供任何样子的文档Visual C开发人员。如果你试图从网上搜索,你会发现很难找倒有关ADO的好例子。
和ADO相处几个月后,我开始对ADO产生好感,可能将来我不用其它而只用ADO开发数据库。当你认识到ADO是多么容易使用、多么强大,你可能就会和我想的一样了。当我用DAO编写通用Recordset时,有一简单的方法使用数据动态绑定,那就是在查询(query)而不是表(table)上建立recordset。而对于ADO,缺省使用的就是数据动态绑定,这正是 ...
|
|
| 作者:不祥 ycr40张贴于2004-04-23 12:55:27.0,共阅读3871次,回复2次 |
|
|