zoukankan      html  css  js  c++  java
  • vs2013 ADO联系SQL server2012数据库

    平时,给定ADO例如使用以下过程数据源中的数据的数据库应用程序

     (1) 创建一个Connection 物。定义的连接字符串信息。它包含了数据源名称、用户ID、密码、连接超时 、 默认数据库的位置和光标。一 Connection 数据

    源的一次会话。能够通过 Connection 对象控 制事务,即运行BeginTrans、CommitTrans 和RollbackTrans 方法。

     (2) 打开数据源。建立同数据源的连接。

     (3) 执行一个SQL命令。一旦连接成功,就能够执行查询了。能够以异步方式执行查询,也能够异步地处 理查询结果,ADO 会通知提供者后台提供数据。

    这样能够让应用程序

    继续处理其他事情而不必等待。

     (4) 使用结果集。完毕了查询以后,结果集就能够被应用程序使用了。在不同的光标类型下。能够在客户 端或者server端浏览和改动行数据。

     (5) 终止连接。当完毕了全部数据操作后,能够销毁这个同数据源的连接。


    我们按以上的步骤分析一下:

    1、首先在stdafx.h头文件里首先导入msado.dll文件

    #import "C:Program Filescommon filessystemadomsado15.dll"   no_namespace   rename("EOF","adoEOF") 

    因为我们须要对数据库文件里的数据进行操作,这里在C**App.h中首先定义要使用的三个智能指针

     _ConnectionPtr:指向ADO 的 Connect 对象的指针。

     _RecordsetPtr:指向ADO 的 Recordset 对象的指针。 

     _CommandPtr:指向 ADO 的 Command 对象的指针。


    ADO的对象使用流程描写叙述

    ado库是一组com动态库。这就意味着在应用程序在调用ado前,比需初始化OLE/COM库环境,可在C**App.cpp文件里的InitInstance()函数中对其初始化

    然后定义hr对象。作为函数的返回值,HRESULT返回值说明 假设函数正常执行。则返回 S_OK,同一时候真正的函数执行结果则通过參数指针返回。

    假设遇到了异常情况,则COM系统经过推断。会返回对应的错误值。

    在把m_pConnection实例化之后,我们就能够定义用于连接字符的信息,我们能够用.UDL文件得到连接字符串

    详细方法,先新建一个.txt文件,然后将后缀名改成.udl


    然后我们以记事本的方式打开我们的文件,最后一行

    Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Password=****;Initial Catalog=学生成绩管理系统;Data Source=HUISQL

    注意没有Password自己加入上即可,不然程序会报错,后面假设有转义字符。注意我们应该再加上一个。C语言的语法。(红色部分在.udl文件里没有

    当然我们也能够使用 SQL Native Client 11.0,后面的也能够用windows身份登陆。注意windows身份登陆时。不须要加入password!

    2、打开数据源,同一时候同数据源建立连接

    Open方法:使用Open方法能够建立到数据源的物理连接。


    Open函数具体定义:

    HRESULT Open (_bstr_t ConnectionString,
                  _bstr_t   UserID,
                  _bstr_t   Password,
                  long        Options)

    參数意义:

    ConnectionString :可选,类型为字符串,包括连接信息,假设设置了ConnectionString属性,该參数能够不设置

    UserID:可选。字符串,包括建立连接时所使用username

    Password:可选,字符串。包括建立时所使用的password。

    Option:可选,决定该方法是在连接建立之后(异步)还是连接建立之前(同步)返回,该值能够是例如以下两个常量:adConnectionUnsepecified(默认值,同步)和adAsyncConnect(异步)

    Close方法:用来关闭到数据源的连接,訪问数据库完毕后,关闭连接。释放有关联的系统资源。关闭对象并不代表将它从内存中删掉,能够更改它的属性设置然后再次打开它


    BOOL CLibraryApp::InitInstance()
    {
    	::CoInitialize(NULL);   //初始化OLE/COM库环境 
    	HRESULT hr = NULL;
    	try
    	{
    		hr = m_pConnection.CreateInstance(_uuidof(Connection));//创建连接对象实例
    		if (SUCCEEDED(hr))
    		{
    			m_pConnection->ConnectionString =
    				("Provider = SQLOLEDB.1; Persist Security Info = False; User ID = sa; Password=renhui; Initial Catalog = 学生成绩管理系统; Data Source = HUI\SQL");
    			//("Provider=SQLNCLI11.1;Integrated Security=SSPI;Persist Security Info=False;User ID="";Initial Catalog=学生成绩管理系统;Data Source=HUI\SQL;Initial File Name="";Server SPN=""");
    			hr = m_pConnection->Open("", "", "", adConnectUnspecified);//打开数据库
    			if (FAILED(hr))
    			{
    				AfxMessageBox(_T("Open Failed!"));
    				return FALSE;
    			}
    		}
    		else
    		{
    			AfxMessageBox(_T("Create instance of connection failed!"));
    			return FALSE;
    		}
    	}
    	catch (_com_error e)
    	{
    		CString temp;
    		temp.Format("数据库连接错误
    错误信息为:%s", e.ErrorMessage());
    		AfxMessageBox(temp);
    		return FALSE;
    	}
    	... ...
    }


    至此,我们的数据库就成功的连接上了

    大家遇到什么数据库连接方面的问题,也欢迎和我交流,希望大家能一起进步。(但有限的,因为水平的,你可能不能够回答)

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    newman
    集合自动化
    56. Merge Intervals
    55. Jump Game
    48. Rotate Image
    34. Search for a Range
    33. Search in Rotated Sorted Array
    16. 3Sum Closest
    15. 3Sum
    11. Container With Most Water
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4869063.html
Copyright © 2011-2022 走看看