直接执行SQL命令,ADO连接数据库
更新时间:2024-03-15 07:59:01 阅读量: 综合文库 文档下载
http://www.5itjob.com
ADO数据库编程-直接执行SQL命令
【ITjob课程资料】
直接执行SQL命令
上面的案例的增删改我们通过ADO智能对象帮助我们完成,ADO智能对象自动读取RecordSet中的记录,并形成对应的SQL语句。 也可以直接执行SQL语句。下面我们一一列举:
(1)、利用Connection对象的Execute方法执行SQL命令,原型如下:
_RecordsetPtr Connection15::Execute (
_bstr_t CommandText, VARIANT *RecordsAffected, long Options );
其中CommandText通常是SQL命令字符串。RecordsAffected是操作完成后所影响的行数, Options表示CommandText中内容的类型,Options可以取如下值之一:
? adCmdText:表明CommandText是SQL文本命令 ? adCmdTable:表明CommandText是一个表名 ? adCmdProc:表明CommandText是一个存储过程 ? adCmdUnknown:未知
Execute执行完后返回一个指向记录集的指针,下面我们给出示例代码并作说明:
//执行SQL命令:CREATE TABLE创建表格users,users包含四个字段: //整形ID,字符串username,整形age,日期型birthday _variant_t RecordsAffected;
m_pConnection->Execute(\
age INTEGER, birthday DATETIME)\,&RecordsAffected,adCmdText);
//往表格里面添加记录
m_pConnection->Execute(\INTO users(ID,username,age,birthday)
VALUES (1, 'Washington',25,'1970/1/1')\,&RecordsAffected,adCmdText);
//将所有记录的age字段的值加一 m_pConnection->Execute(%users SET age = age+1\,&RecordsAffected,adCmdText);
//执行SQL统计命令得到包含记录条数的记录集
m_pRecordset = m_pConnection->Execute(\
&RecordsAffected, adCmdText);
_variant_t vIndex = (long)0;
_variant_t vCount = _pRecordset->GetCollect(vIndex);//取得第一个字段的
http://www.5itjob.com
值放入vCount变量
m_pRecordset->Close(); //关闭记录集 CString message;
message.Format(\共有%d条记录\,vCount.lVal); AfxMessageBox(message); //显示当前记录条数
(2)、利用Command对象来执行SQL命令 _CommandPtr m_pCommand;
m_pCommand.CreateInstance(\_variant_t vNULL; vNULL.vt = VT_ERROR;
vNULL.scode = DISP_E_PARAMNOTFOUND; //定义为无参数 m_pCommand->ActiveConnection = m_pConnection; //非常关键,将建立的连接赋值给它
m_pCommand->CommandText = \命令字符串 m_pRecordset = m_pCommand->Execute(&vNULL,&vNULL,adCmdText);//执行命令,取得记录集
下面我们通过发送SQL完成一个类似oracle的SqlPlus功能,界面如下:
一个List控件,一个支持多行的Edit控件(IDC_STRSQL)。 (1) 添加一个支持该界面的对话框类,并将List控件绑定变量 (2) 在WM_INIDIALOG消息中实现数据库初始化,代码如下: m_pConnection.CreateInstance(_uuidof(Connection));
m_pConnection->Open(\Source
http://www.5itjob.com
= student.mdb;\
m_pRecordSet.CreateInstance(_uuidof(Recordset));
GetDlgItem(IDC_STRSQL)->SetFocus();
SetDlgItemText(IDC_STRSQL, \ OnQuery();
(3) 在WM_DESTORY消息中实现释放,代码如下: m_pConnection->Close(); (4) OnQuery()函数的代码如下: CString strSQL;
GetDlgItemText(IDC_STRSQL, strSQL);
if (strSQL.IsEmpty()) {
MessageBox(\不能为空!\ return ; }
const char *szsql = strSQL; try {
m_pRecordSet->Open(szsql,
m_pConnection.GetInterfacePtr(),
adOpenDynamic, adLockOptimistic, adCmdText); DisplayFields(); }
catch(...) {
MessageBox(\请检查SQL语句是否合法!\ return ; }
m_pRecordSet->Close(); (5) DisplayFields代码如下: m_list.DeleteAllItems(); int i;
//1. 删除原来所有的列标题
int nColumnCount = m_list.GetHeaderCtrl()->GetItemCount(); for (i = 0; i < nColumnCount; i++) {
m_list.DeleteColumn(0); }
http://www.5itjob.com
//2. 根据结果集,重新设置列标题
int fieldCount = m_pRecordSet->Fields->Count; //得到字段的总数 for (i = 0; i < fieldCount; i++) {
FieldPtr fieldCtl = m_pRecordSet->Fields->GetItem(long(i)); //得到字段名控件
int fieldLength = fieldCtl->DefinedSize * 4;
m_list.InsertColumn(i, fieldCtl->Name, LVCFMT_LEFT, 80); }
//3. 将新结果集加到显示列表中 while (!m_pRecordSet->EndOfFile) {
//插入第一列的值
FieldPtr fieldCtl = m_pRecordSet->Fields->GetItem(long(0)); //得到字段名控件
_variant_t varValue = fieldCtl->Value;
_bstr_t bstrValue = ((varValue.vt == VT_NULL) ? \ //注意:当值为空时,直接插入会导致异常
int nItem = m_list.InsertItem(0xffff, bstrValue); //插入第一列的值
//设置其他列的值
for (i = 1; i < fieldCount; i++) {
fieldCtl = m_pRecordSet->Fields->GetItem(long(i)); varValue = fieldCtl->Value;
bstrValue = ((varValue.vt == VT_NULL) ? \注意:当值为空时,直接插入会导致异常
m_list.SetItem(nItem, i, 1, bstrValue, NULL, 0, 0, 0); }
m_pRecordSet->MoveNext (); //准备处理下一条记录 }
(6) 最后在主界面上添加一个按钮并打开这个对话框:
相关资料与视频请访问ITjob就业培训网
正在阅读:
直接执行SQL命令,ADO连接数据库03-15
医护英语10年6月三级模拟题08-14
描写学校的作文02-05
慧通教育网2011肇庆中考语文试题及答案07-10
合同格式条款备案申请表06-15
modbus通信协议实现范文07-19
必修三3.3 资源的跨区域调配--以南水北调为例(教案) - 图文11-25
实验六 定义编译预处理10-19
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 命令
- 执行
- 直接
- 连接
- 数据库
- SQL
- ADO
- 国防科技大学保研
- 2019年麻池古城导游词word版本(3页)
- 国际商务英语2
- 铝合金门窗招标文件
- 博士答辩日程安排表 - 图文
- 童话剧《小兔乖乖》
- 2016新课标高考5月冲刺实验专题巩固
- 雷公根白果茶
- 设备驱动程序
- 钙果开发试验的可行性研究报告书
- 基于mvc设计模式的购物网站毕业论文
- 幼教大班数学教案-《认识整点和半点》
- 2015-2016学年广东省东莞市粤华学校七年级(上)第一次月考地理
- C++排序算法总结及性能大致分析
- 深静脉置管护理常规
- Z-Stack协议栈ZDO绑定和管理API
- 2019最新精选河南省七年级语文上册第四单元15诫子书习题新人教版
- 林研所施工组织设计(公务素大街)
- 长沙市城市中小学校幼儿园规划建设管理条例(修正)
- 江苏赣榆县海头高级中学14-15学年高二下学期周末训练数学(理)