一,身份验证:

sql server数据库连接身份验证有两种:windows身份验证和SQL Server身份验证

windows验证:是使用windows的安全子系统对用户连接进行有效性验证。(个人认为是windows操作系统帮我们验证用户安全性,默认windows管理员为数据库的管理员,可以进行一切操作,但是也可以自己设定数据库的管理员)

sql server验证:需要提供用户名和密码,默认的用户名为sa,但是可以更改。

二,数据库连接:

1.导入msado15.dll文件(在c盘中查找)

在头文件中或stdafx.h文件中导入就可使用,不需要导入相应的类的头文件(这点与word组件不同)

2.创建连接对象和记录集对象

_ConnectionPtr pConn;

pConn.CreateInstance("ADODB.Connection");//后面字符串不区分大小写

_RecordSetPtr pRecordSet;

pRecordSet.CreateInstace("adodb.connection");

三、连接字符串(所有连接字符串均不区分大小写,键和值都不区分):

Provider=SQLOLEDB.1//该键用于表明提供数据库服务的数据库类型,不同的数据库该值是不一样的。其它类型请参考:http://www.w3school.com.cn/ado/prop_conn_provider.asp

Integrated Security/Trusted=True[Yes,No,False,SSPI]//该键为Yes,Ture或者SSPI时表示使用windows登陆方式,此时不需要提供uid和pwd。否则为sql登陆方式,默认为False。sql登陆必须提供User ID和password。

Persist Security Info=False[True]//当为False时,与上面的键配合使用可以提高连接安全性

Workstation ID=computername[(local)] //表示数据库所在的工作站名称,默认值为本地计算机名称

Data Source/Server/Address/Addr/Network Address=(local)//该键表示服务器的名称,五者是一样的,根据情况使用其一

Initial Catalog/Database=databasename//该键表示数据库名称(数据库集合组成服务器),二者是一样的

User ID/Uid=username//使用sql登陆时的登陆名

Password/Pwd=password//使用sql登陆时的密码

其它键值请参考:https://www.cnblogs.com/niuyjdz/p/7533439.html

四、连接数据库的Open()函数的四个参数:

对于多次访问数据库,使用_ConnectionPtr.Open()打开数据库;对于一次访问,只需要 使用_CommandPtr或者_RecordSetPtr连接即可。

_ConnectionPtr.Open(_bstr_t(connectionstr),_bstr_t(username),_bstr_t(pwd),option)//后三个参数不是必须的,都有默认值

参数1:连接字符串,至少必须包含服务器,数据库参数,当使用该对象的ConnectionString属性时,该参数可为“”空,此时不必转化成_bstr_t类型,否则必须转化成该类型;

参数2,参数3:采用sql sever方式登陆时,所需要的用户名和密码,若在参数1中提供,则可以为空。

参数3:表示同步或异步返回。adConnectUnspecified表示连接后返回,即同步;adAsyncConnect表示异步返回,未连接情况下也返回。默认值为同步。

五、执行sql语句

1.Execute方法(仅_ConnectionPtr和_CommandPtr有该方法)

_RecordSetPtr Execute(_bstr_t cmdtext,_variant_t* recordeffected,options)

返回值:为一个记录集,非常有用。

参数1:sql语句,必须转化成_bstr_t格式

参数2:返回一个指针,值为该语句所影响的行数,可省略

参数3:表示如何解读参数1,一般为AdCmdText,可省略,默认值也是该值。

2.Open方法(_RecordSetPtr执行命令使用的方法)

_RecordSetPtr rs;

rs.CreateInstance("adodb.recordset");

rs.Open(cmdText,_variant_t((IDispatch*)pConnection)),adOpenKeyset,adLockOptimistic,adCmdText);

参数1:sql命令

参数2:打开数据库通道的那个_ConnectionPtr的指针

参数2:游标的类型,由记录集的CursorType属性设置或获取。

参数3:打开记录集后使用的锁定类型。由LockType属性设置或获取。反映游标编辑后的更新方式(立即更新还是延后更新)

参数4:解析sql命令的方式

六、关闭数据库Close():

该三个对象用完之后需要调用Close()函数进行关闭,会调用Release()释放资源。

也可以调用Release();该release()是对接口进行释放。

也可以不调用,因为是智能指针,在智能指针析构时会自动释放。

ADO:连接,执行语句与关闭(sql server数据库)的更多相关文章

  1. 用SQL语句将远程SQL Server数据库中表数据导入到本地数据库相应的表中

    一.方法一 访问不同电脑上的数据库(远程访问,只好联好网就一样),如果经常访问或数据量较大,建议用链接服务器方法. 1.创建链接服务器 exec sp_addlinkedserver ‘srv_lnk ...

  2. Navicat Premium 12 如何连接阿里云虚拟主机SQL Server 数据库

    这个是一台 阿里云购买云虚拟主机!密码已经重置完毕,现在我们 需要知道 数据连接的地址,数据库名,帐号以及密码. 根据不同的运营商 选择 这里我们选择阿里云 云数据库 SQL Server版本 填写 ...

  3. 关闭SQL Server 数据库所有使用连接

    使用存储过程终止:在查询分析器下创建终止数据库所有接连的存储过程,通过调用该存储过程可以关闭所有使用该数据库的连接操作.--创建终止使用数据库下所有进程的存储过程,参数为数据库名称use  maste ...

  4. Oracle,SQL Server 数据库较MySql数据库,Sql语句差异

    原文:Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 1.关系型数据库 百度百科 关系数据库 ...

  5. Amazon RDS 上的 Microsoft SQL Server » 导入和导出 SQL Server 数据库

    导入和导出 SQL Server 数据库 Amazon RDS 支持使用完整备份文件 (.bak 文件) 对 Microsoft SQL Server 数据库进行本机备份和还原.您可以在单个便携式文件 ...

  6. SQL SERVER数据库修改是否区分大小写

    昨天去客户,发现程序无法应用,跟踪错误提示,提示的大致意思是“数据库表名和数据库字段名不存在”.查询后发现是SQL Server数据库设置了区分大小写的缘故(一般安装时,Oracle的正确安装下是默认 ...

  7. SQL SERVER数据库修改是否区分大小写(转载)

    昨天去客户,发现程序无法应用,跟踪错误提示,提示的大致意思是“数据库表名和数据库字段名不存在”.查询后发现是SQL Server数据库设置了区分大小写的缘故(一般安装时,Oracle的正确安装下是默认 ...

  8. 查看sql server数据库连接数的三种方法

    怎样才能查看sql server数据库连接数呢?下面就将为您介绍三种查看的方法,供您参考,希望能够帮助到您. 1.通过系统的“性能”来查看:开始->管理工具->性能(或者是运行里面输入 m ...

  9. 【转】PowerShell 连接SQL Server 数据库 - ADO.NET

    转至:http://www.pstips.net/connect-sql-database.html PowerShell 通过ADO.NET连接SQL Server数据库,并执行SQL脚本.工作中整 ...

  10. jsp页面使用<% 语句%> SQL Server数据库报空指针异常(在控制台可以正常执行)

    一直反感用SQL Server数据库,很影响电脑性能!!数据库作业不得不用 前几天作业一直报空指针异常: 自己检查了所传参数,和数组不为空 数据库查询语句不为空 然后查看SQL服务是否启动  主要是S ...

随机推荐

  1. jq 获取页面中checkbox已经选中的checkbox

    var array={}; var arrChk=$("input[name='bike']:checked"); if(arrChk.length<=0){ alert(' ...

  2. vue+mousemove实现拖动,鼠标移动过快拖动就失效

    今天用vue+原生js的mousemove事件,写了个拖动,发现只能慢慢拖动才行,鼠标只要移动快了,就失效,不能拖动了: 搞了半天在,总算解决了,但是问题的深层原理还没搞清楚,知道的大侠可以留言分享, ...

  3. cmake实战第一篇:初试 cmake

    1.准备工作: 首先,在/code_test 目录下建立一个 cmake 目录,用来放置我们学习过程中的所有练习.(如果以下命令出现xxx: cannot create directory ‘x’:  ...

  4. JAVA中sleep() 和 wait() 有什么差别?

    (网上的答案:sleep是线程类(Thread)的方法,导致此线程暂停运行指定时间,将运行机会给其它线程.可是监控状态依旧保持,到时后会自己主动恢复.调用sleep不会释放对象锁. wait是Obje ...

  5. sql server 2008 去除html标签

    由于商品详情数据库的字段是text,存放的是html,但是要求导出的商品详情中只是商品的描述,不要标签,原来打算先把数据导入excel中,然后利用java的正则去替换,结果由于商品详情太大,一个单元格 ...

  6. java面向对象编程知识点总结

    一:今天完成 上午详细了解了java面向对象编程的一些细节,记录如下. 1)类 是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法.初始化程序和嵌套类 ...

  7. CAFFE学习笔记(三)在VS2013下生成需要的exe文件

    如我们所知,CAFFE_ROOT下有一个文件夹叫tools,里面中有许多cpp文件,它们各自有其不同的功能.但是很显然,当我们要完成某样工作时,我们是不能直接用cpp文件的,只能用exe文件.如何利用 ...

  8. mysql 分组加行号

    SELECT end AS row_num_v_, case when @v <> _apply.PATIENT_ID then @v := _apply.PATIENT_ID else ...

  9. 九度OJ 1181:遍历链表 (链表、排序)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2733 解决:1181 题目描述: 建立一个升序链表并遍历输出. 输入: 输入的每个案例中第一行包括1个整数:n(1<=n<=1 ...

  10. proguard 不混淆第三方jar包的问题

    导入lib文件,并且用-dontwarn 和 keep class结合试试,例如: -libraryjars libs/log4j.jar -dontwarn org.apache.log4j.*-k ...