在VC中向数据库提交SLQ语句
1、通过链接对象执行SQL语句
mfc没有提供对ado的操作类,它对ado的操作是通过智能指针来完成,要创建ado连接对象,需要像下面代码一样先定义一个连接对象的智能指针:
_ConnectionPtr pConnection;
然后调用智能指针的CreateInstance方法创建连接对象,要特别注意的是,CreateInstance是智能指针的对象,而不是连接对象的成员,所以需要使用.而不是->来调用:
pConnection->CreateInstance(“ADODB.Connection”);
连接对象建立以后,就可以调用连接对象的Open方法打开一个数据库的连接,第一个参数strConnet是类似于”Provider=SQLOLEDB; Server=db; Database=test; uid=sa; pwd=123;”的字符串,其他参数的类型和意义可以查看msdn:
pConnection->Open(strConnect, “”, “”, adModeUnknown);
成功与数据库建立连接以后就可以调用连接对象的Execute方法执行SQL语句了。Execute方法的第一个参数就是要执行的SQL语句;第二个参数是一个VARINT类型的引用,它用于保存执行该SQL语句以后对数据库影响的行数,VARINT是vc和COM进行数据交换的一种手段,可以通过此参数来判断语句是否执行成功;第三个参数是指明命令的类型,可以是adCmdText表示命令文本,也可以是adCmdStoredProc表示是一个存储过程。
pConnection->Execute(bstrInsert, &recordAffected, adCmdText);
2、通过命令对象执行SQL语句
ado的命令对象也是可以用于执行SQL指令的,事实上,当需要频繁的执行一条SQL指令,而这条SQL指令只是部分数据不同的话,使用命令对象会是较好的选择,当然要使用命令对象,首先必须建立应用程序与数据库的连接。其过程与上述使用连接对象执行SQL语句是类似的,在建立数据库连接后,要使用命令对象也需要先定义命令对象的实例,代码如下:
_CommandPtr pCmd;
pCmd.CreateInstance(“ADO.Command”);
然后需要为命令对象指定执行命令时要使用的数据库连接、命令内容及命令类型等信息,代码如下:
pCmd->ActiveConnection = m_pConnection;
pCmd->CommandText = bstrInsert;
pCmd->CommandType = adCmdText;
上述代码中m_pConnection为已经建立的数据库连接,在需要的时候还可以为命令对象设定对应的参数对象,以便可以参数化的执行一些数据库操作命令。执行代码如下:
pCmd->Execute(&vNULL, &vNULL, adCmdText);
Execute方法的第一个参数是命令执行完后所影响的行数,第二个参数为命令参数对象,第三个参数为命令的类型。这里的vNULL表示该参数为空,如果要在ado中表达这样的含义,则必须像一下代码定义变量vNULL才可以,否则在执行Execute时会抛出异常。
_variant_t vNULL;
vNULL.vt = VT_ERROR;
vNULL.scode = DISP_E_PARAMNOTFOUND;
在VC中向数据库提交SLQ语句的更多相关文章
- C#中 ACCESS数据库常用操作语句...容易出错的地方(DateTime类型)
这次在C#编程过程中,第一次用到了ACCESS数据库,重点涉及到时间类型,整数类型.是否类型....;遇到了许多困难,就把这些整理了下来,与大家分享. 一.Insert语句的基本格式: INSERT ...
- PHP中操作数据库的预处理语句
今天这篇文章的内容其实也是非常基础的内容,不过在现代化的开发中,大家都使用框架,已经很少人会去自己封装或者经常写底层的数据库操作代码了.所以这回我们就来复习一下数据库中相关扩展中的预处理语句内容. 什 ...
- SQL Server中查询数据库及表的信息语句
/* -- 本文件主要是汇总了 Microsoft SQL Server 中有关数据库与表的相关信息查询语句. -- 下面的查询语句中一般给出两种查询方法, -- A方法访问系统表,适应于SQL 20 ...
- 在 SQL Server 数据库的 WHERE 语句中使用子查询
这是关于子查询语句的一系列文章中的第三篇.在这篇文章中我们将讨论WHERE语句中的子查询语句.其他的文章讨论了其他语句中的子查询语句. 本次课程中的所有例子都是基于Microsoft SQL Serv ...
- Sql语句在SqlServer中创建数据库、表格并添加约束
通过Sql语句来创建数据库与架构 创建数据库 数据库的创建首先是要引用主数据库的,需要在master数据库的环境下进行创建.大致的语法如下: -- 使用master数据库 use master -- ...
- Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库
下面是最原始的方法,用SQL语句操作数据库.后面的"Android中SQLite数据库操作(2)--SQLiteOpenHelper类"将介绍一种常用的android封装操作SQL ...
- PHP中的数据库三、redis
h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...
- Android中SQLite数据库小计
2016-03-16 Android数据库支持 本文节选并翻译<Enterprise Android - Programing Android Database Applications for ...
- 小觑数据库(SqlServer)查询语句执行过程
近年来,越来越多的NoSql产品不断的以技术革命的者的身份跳出来:“你看哥是多么的快,你们关型型数据库真是战五渣阿”.是的,高性能的场景下NoSql真的很出彩.而我们关系型数据库只能在墙角哭泣&quo ...
随机推荐
- 图片预加载插件 preLoad.js
1.preLoad.js插件 /*! * preLoad.js v1.0 * (c) 2017 Meng Fangui * Released under the MIT License. */ (fu ...
- Openerp对日期时间的操作
日期格式化字符串:DATE_FORMAT = "%Y-%m-%d" 日期时间格式字符串:DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S" ...
- 【#254_DIV2】-A B C
题目链接:http://codeforces.com/contest/445 解题报告: 俄国人今天不知道为什么九点钟就比赛了.仅仅过了两道题,第三题全然没思路,有时间单独去刷第三题吧,看起来非常难 ...
- getpass模块
# -*- coding: utf-8 -*- #python 27 #xiaodeng #getpass模块 import getpass ''' >>> help(getpass ...
- 类的专有方法(__del__)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #http://www.bubuko.com/infodetail-313791.html #类的专有方法(_ ...
- Redis批量查询删除KEYS
对腾讯云的Redis集群不支持很多指令(config get * .flushdb.flushall.等相关指令) redis指令限制:https://www.qcloud.com/document/ ...
- Android API之android.content.AsyncQueryHandler
android.content.AsyncQueryHandler A helper class to help make handling asynchronous ContentResolver ...
- Android API之android.provider.ContactsContract
android.provider.ContactsContract ContactsContract是联系人provider和app的contract.定义了已支持的URL和column.取代了之前的 ...
- HDUOJ-----4510 小Q系列故事——为什么时光不能倒流
小Q系列故事——为什么时光不能倒流 Time Limit: 300/100 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)T ...
- ubuntu 忘记root密码了不用怕,看这里
方法来自这里:http://jingyan.baidu.com/article/8065f87fe20832233024985a.html