深入FDO----执行SQL语句

FDO定义了大量的命令用于执行要素相关的功能,但是仍然屏蔽了对于许多数据源特有的功能。对于RDBMS类型的数据源,FDO提供了执行SQL语句的功能,让用户可以调用某些单纯使用FDO无法实现的功能。当然,某一种Provider是否支持执行SQL语句还需要看它的能力。

FDOSQL语句分为了两类,一类为包含关键词“Select”的SQL语句,执行这类SQL语句会返回一个结果集,另一类是不包含关键词“Select”的SQL语句,执行这类SQL语句只会返回RDBMS中影响的行数。

使用FdoISQLCommand命令可以针对RDBMS数据源执行SQL语句,调用方法FdoISQLCommand::ExecuteReader()用于执行包含关键词“Select”的SQL语句,它返回一个类型为FdoISQLDataReader的读取器,调用方法FdoISQLCommand::ExecuteNonQuery()用于执行不包含关键词“Select”的SQL语句,它返回RDBMS中影响的行数。

如果FdoICommandCapabilities::SupportsParameters()返回true,那么在执行 SQL 语句前,可以将SQL语句中的参数绑定到某个变量。如下的代码展示了如何执行一个包含关键词“Select”的SQL语句,并且将SQL语句中的参数标记“:param1”绑定到一个变量。

// 创建SQL命令

FdoPtr<FdoISQLCommand> sqlCmd = static_cast<FdoISQLCommand*>

(conn->CreateCommand(FdoCommandType_SQLCommand));

// 设置SQL语句

sqlCmd->SetSQLStatement(L"select * from parcels f where id=:parm1");

// 绑定参数param1

FdoPtr<FdoParameterValueCollection> parmVals = sqlCmd->GetParameterValues();

FdoPtr<FdoInt32Value>id = FdoInt32Value::Create(1);

parmVals->Add(FdoPtr<FdoParameterValue>(FdoParameterValue::Create(L"parm1", id)));

// 执行命令

FdoPtr<FdoISQLDataReader> reader = sqlCmd->ExecuteReader();

// 遍历查询结果

if (reader->ReadNext()) {

......

}

reader->Close();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值