ado.笔记

ado中的9个对象和4个集合

对象名称C++描述
对象Connection object_ConnectionPtr指向一个数据源的唯一链接
对象Command object_CommandPtr执行一条指定的sql语句
对象Recordset object_RecordsetPtr代表执行一条语句后的结果或者基本表的全部记录集合.(包含行和列)
对象Record object一行(条)结果的集合.Recordset 的子项
对象Stream object一个文本或者2进制的流对象.例如,可以加载一个xml文件到一个流里面,用作数据输入,或者从一个查询当中返回流对象.一个流对象可以操作字段或者流数据中包含的一条记录.
对象Parameter object_ParameterPtr关联到Command 对象的,基于参数化查询或者存储过程的一条语句或者参数.
对象Field object字段对象.每个字段对象对象Recordset对象的一列.
对象Property object属性对象.代表数据源(sqlserver)定义的ADO的特性(属性?).分为内建和动态2中.内建属性有ado实现并且可以立即生效.
对象Error objecErrorPtr包含错误的详细信息.
集合Fields collection字段集合包含Recordset或者Record对象的所有字段.
集合Properties collection包含一个对象实例的全部属性
集合Parameters collection包含一个Command对象的所有参数集合
集合Errors collection一个错误响应中创建的所有错误对象.?

导入ado

// compile with: /EHsc
#import "msado15.dll" no_namespace rename("EOF", "EndOfFile")

链接数据库

链接字串(ConnectionString )

使用Connection 对象链接数据(_ConnectionPtr )

  1. 创建对象 _ConnectionPtr .CreateInstance(__uuidof(Connection));
  2. 构建链接字串: “Provider=’SQLOLEDB’;Password=’%s’;Persist Security Info=True;User ID=’%s’;Initial Catalog=’%s’;Data Source=’%s,%ld’;”
    以分号分隔,每个属性用单引号括起来.
  3. 打开链接 _ConnectionPtr ->Open(strCnn, “”, “”, adConnectUnspecified);
  4. 关闭链接 _ConnectionPtr ->Close()

获取错误信息

try{
    //....
}
catch(_com_error &e) {
    // Notify the user of errors if any.
    _bstr_t bstrSource(e.Source());
    _bstr_t bstrDescription(e.Description());

    PrintProviderError(pConnection);
    PrintComError(e)
}
void PrintProviderError(_ConnectionPtr pConnection) {
   // Print Provider Errors from Connection object.
   // pErr is a record object in the Connection's Error collection.
   ErrorPtr pErr = NULL;
   long nCount = 0;
   long i = 0;

   if ( (pConnection->Errors->Count) > 0) {
      nCount = pConnection->Errors->Count;
      // Collection ranges from 0 to nCount -1.
      for (i = 0 ; i < nCount ; i++) {
         pErr = pConnection->Errors->GetItem(i);
         printf("Error number: %x\t%s", pErr->Number, (LPCSTR)pErr->Description);
      }
   }
}
void PrintComError(_com_error &e) {
   _bstr_t bstrSource(e.Source());
   _bstr_t bstrDescription(e.Description());

   // Print COM errors. 
   printf("Error\n");
   printf("\tCode = %08lx\n", e.Error());
   printf("\tCode meaning = %s\n", e.ErrorMessage());
   printf("\tSource = %s\n", (LPCSTR) bstrSource);
   printf("\tDescription = %s\n", (LPCSTR) bstrDescription);
}

ADO Code Examples in Visual C++

ado task table

sqlserver和c++数据类型对应

sql类型c++类型
tinyintunsigned char
smallintsigned short
intsigned int
bigintsigned long long

sql server数据库中char,varchar,nchar,nvarchar字段的区别

char,varchar存储非unicode.
nchar,nvarchar存储unicode.
char,nchar存储定长数据.
varchar,nvarchar存储非定长数据.

Char(n)Varchar(n)Nvarchar(n)
N 最大值800080004000
数据长度固定(不足用空格填充)可变(实际数据长度)可变(实际数据长度)
可存储最多英文(数字)800080004000
最多汉字数400040004000
英文(数字)所占字节112
汉字所占字节222
declare @value nvarchar(20)
set @value = N'value'--在字符前加N表示将其转化为unicode字符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值