直接执行SQL命令,ADO连接数据库
更新时间:2023-12-31 01:46: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连接数据库12-31
看上去很美观后感12-11
河南中招语文试题解析版2015.7.1306-19
康佳集团存货管理分析11-30
SAT语法动词单数的用法03-15
基于MFRC500的Mifare射频卡读写器设计 - 图文03-31
探索马铃薯沉浮的原因教案11-26
我喜欢的职业作文5篇03-31
红歌大全02-18
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 命令
- 执行
- 直接
- 连接
- 数据库
- SQL
- ADO
- 2016新课标高考5月冲刺实验专题巩固
- 幼教大班数学教案-《认识整点和半点》
- 博士答辩日程安排表 - 图文
- 4 生物肥料可研报告
- 2011年公务员考试《行测》全真预测试卷(8)
- 基于mvc设计模式的购物网站毕业论文
- 2013年调风中学安全工作计划
- 暑期社会实践个人鉴定表 - 图文
- 钙果开发试验的可行性研究报告书
- 团旗接力赛策划书1
- 省级精品在线课程《仓储与配送管理》建设方案
- 会所可行性报告 - 图文
- 如何学习小提琴
- 甘州区生态用水现状调查与思考
- 2014电机控制复习
- 管道钻孔机结构设计
- 2019年麻池古城导游词word版本(3页)
- 2016年安徽省护士资格考点:洗胃护理理论考试试题及答案
- 新课标下提高初中物理教学有效性研究
- 最新中国银联校园招聘考试笔试历年真题试卷汇编下载及知识点分析