执行 SQL 命令并取得结果记录集
为了取得结果记录集,我们定义一个指向 Recordset 对象的指针 :_RecordsetPtr m_pRecordset;
并为其创建 Recordset 对象的实例 : m_pRecordset.CreateInstance("ADODB.Recordset");
SQL 命令的执行可以采用多种形式,下面我们一进行阐述。
(1)利用 Connection 对象的 Execute 方法执行 SQL 命令
Execute 方法的原型如下所示 :
_RecordsetPtr Connection15::Execute ( _bstr_t CommandText, VARIANT * RecordsAffected, long
Options ) 其中 CommandText 是命令字串,通常是 SQL 命令。参数 RecordsAffected 是操作完成后所影
响的行数 , 参数 Options 表示 CommandText 中内容的类型, Options 可以取如下值之一:
adCmdText: 表明 CommandText 是文本命令
adCmdTable: 表明 CommandT ext 是一个表名
adCmdProc: 表明 CommandText 是一个存储过程
adCmdUnknown: 未知
Execute 执行完后返回一个指向记录集的指针,下面我们给出具体代码并作说明。
_variant_t RecordsAffected;
///执行 SQL 命令: CREATE TABLE 创建表格 users,users 包含四个字段 :整形 ID,字符串 username, 整形
old, 日期型 birthday
m_pConnection- >Execute("CREATE TABLE users(ID INTEGER,username TEXT,old INTEGER,birthday
DATETIME)",&RecordsAffected,adCmdText);
///往表格里面添加记录
m_pConnection- >Execute("INSERT INTO users(ID,username,old,birthday) VALUES (1, "Washington
",25, "1970/1/1 ")",&RecordsAffected,adCmdText);
///将所有记录 old 字段的值加一
m_pConnection- >Execute("UPDATE users SET old = old+1",&RecordsAffected,adCmdText);
///执行 SQL 统计命令得到包含记录条数的记录集
m_pRecordset = m_pConnection- >Execute("SELECT COUNT(*) FROM
users",&RecordsAffected,adCmdText);
_variant_t vIndex = (long)0;
_variant_t vCount = m_pRecordset- >GetCollect(vIndex);/// 取得第一个字段的值放入 vCount 变量
m_pRecordset- >Close();/// 关闭记录集
CString message;
message.Format(" 共有 %d 条记录 ",vCount.lVal);
AfxMessageBox(message);/// 显示当前记录条数
(2)利用 Command 对象来执行 SQL 命令
_CommandPtr m_pCommand;
m_pCommand.CreateInstance("ADODB.Command");
_variant_t vNULL;
vNULL.vt = VT_ERROR;
vNULL.scode = DISP_E_PARAMNOTFOUND;/// 定义为无参数
评论0
最新资源