ADO 连接sql server

原创 2011年10月19日 12:22:03

注意

下面的sql server数据库连接方式,性能从低到高
1.DSN
   strConnect = "DSN=mng;DRIVER={SQL Server};DATABASE=msdb;";
2.DSN-less
   strConnect = "driver={SQL Server};Server=125.44.5.22;Database=eett;uid=sa;pwd=sa";
3.OLE DB
   strConnect = "Provider=SQLOLEDB;Server=125.44.5.22;Database=eett;uid=sa;pwd=sa";

 

2.stdafx.h中添加

   #import "C:\Program Files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")

3.一个sql连接类

           1)CSqlServer.h文件

#pragma once

class CSqlServer
{
public:
 CSqlServer(void);
public:
 ~CSqlServer(void);

public:
 bool Open();
 void Close();
 bool Execute(char* commandText, _RecordsetPtr& recordsetPtr=(_RecordsetPtr)NULL);
 bool Execute(CString strCommandText, _RecordsetPtr& recordsetPtr=(_RecordsetPtr)NULL);

 void WriteConnectInfo();
 void ReadConnectInfo();
public:
 _ConnectionPtr m_pConnection;

 CString m_strProvider;
 CString m_strServer;
 CString m_strDatabase;
 CString m_strUid;
 CString m_strPwd;
};

2)CSqlServer.cpp文件

#include "StdAfx.h"
#include "SqlServer.h"

CSqlServer::CSqlServer(void)
{
 ::CoInitialize(NULL);
}

CSqlServer::~CSqlServer(void)
{
 ::CoUninitialize();
}

bool CSqlServer::Open()
{
 ReadConnectInfo();
 CString strConnect = "Provider=" + m_strProvider +
      ";Server=" + m_strServer +
      ";Database=" + m_strDatabase +
      ";uid=" + m_strUid +
      ";pwd=" + m_strPwd;

 try{
  //创建Connection 对象
  if (FAILED(m_pConnection.CreateInstance("ADODB.Connection")))
   return false;

  // 开始连接
  if(FAILED(m_pConnection->Open(_bstr_t(strConnect),"","",adModeUnknown)))
  {
   m_pConnection.Release();
   return false;
  }
 }
 catch(_com_error e)
 {
  return false;
 }

 return true;
}

void CSqlServer::Close()
{
 //不能多次关闭,否则会出现错误
 if(m_pConnection->State)
  m_pConnection->Close();
}

bool CSqlServer::Execute(char* commandText, _RecordsetPtr& recordsetPtr)
{
 return Execute(CString(commandText), recordsetPtr);
}

bool CSqlServer::Execute(CString strCommandText, _RecordsetPtr& recordsetPtr)
{
 if (strCommandText.IsEmpty())
  return false;

 try
 {
  COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
  recordsetPtr = m_pConnection->Execute(_bstr_t(strCommandText),&vtOptional,-1);
 }
 catch (_com_error e)
 {
  return false;
 }

 return true;
}

void CSqlServer::WriteConnectInfo()
{
 ::WritePrivateProfileString("ConnectInfo", "Provider", m_strProvider, ".\\SqlServerConnect.ini");
 ::WritePrivateProfileString("ConnectInfo", "Server",   m_strServer,   ".\\SqlServerConnect.ini");
 ::WritePrivateProfileString("ConnectInfo", "Database", m_strDatabase, ".\\SqlServerConnect.ini");
 ::WritePrivateProfileString("ConnectInfo", "uid",      m_strUid,      ".\\SqlServerConnect.ini");
 ::WritePrivateProfileString("ConnectInfo", "pwd",      m_strPwd,      ".\\SqlServerConnect.ini");
}

void CSqlServer::ReadConnectInfo()
{
 char cInfo[20];

 ::GetPrivateProfileString("ConnectInfo", "Provider", "", cInfo, 20, ".\\SqlServerConnect.ini");
 m_strProvider = CString(cInfo);

 ::GetPrivateProfileString("ConnectInfo", "Server",   "", cInfo, 20, ".\\SqlServerConnect.ini");
 m_strServer = CString(cInfo);

 ::GetPrivateProfileString("ConnectInfo", "Database", "", cInfo, 20, ".\\SqlServerConnect.ini");
 m_strDatabase = CString(cInfo);

 ::GetPrivateProfileString("ConnectInfo", "uid",      "", cInfo, 20, ".\\SqlServerConnect.ini");
 m_strUid = CString(cInfo);

 ::GetPrivateProfileString("ConnectInfo", "pwd",      "", cInfo, 20, ".\\SqlServerConnect.ini");
 m_strPwd = CString(cInfo);
}

 

3)SqlServerConnect.ini文件

[ConnectInfo]
Provider=SQLOLEDB
Server=125.44.5.22
Database=eett
uid=sa
pwd=sa

4)测试

CString sqlCommand = "select * from eee";
 _RecordsetPtr recordsetPtr;
 if (m_sqlServer.Execute(sqlCommand, recordsetPtr))
  MessageBox("执行成功");
 else
 {
  MessageBox("执行失败");
  return;
 }

 while (!recordsetPtr->GetadoEOF())
 {
    _variant_t  _eee;
    _eee = recordsetPtr->GetCollect ("eee");

   char* tt;

    if (_eee.vt == VT_NULL)
      return false;
    else
    {

       _bstr_t str_eee = _eee;

       tt= str_eee;
    }

 

  //  没有做判断处理的操作

  // int sss = recordsetPtr->GetCollect ("sss");


  recordsetPtr->MoveNext();
 }

 

MFC使用ADO连接SQL Server2012

关于ADO的介绍百度百科和其他博文中都有讲过,这里就不赘述了。之前查的关于使用ADO连接数据库SQL Server 2012的文章中,自己也是总结了一下,希望以后再用到的时候能够快速找到。1.首先需要...
  • starsky_xkl
  • starsky_xkl
  • 2016-06-04 16:21:49
  • 2860

ADO连接SqlServer的两种方式

记得很久前些DAL的时候,将这两种方式搞混淆,以至于的到的连接对象始终是null,搞得十分狼狈。记录下来,仅当教训! 方式一: 配置: 获取: protected static...
  • aa2012123456
  • aa2012123456
  • 2015-11-10 10:48:05
  • 1102

VS2010 ADO远程访问sql server 2008方法总结

将服务器设置为相应IP和端口,对应的ADO连接的字段如下: Data Source=172.16.0.65\\SQLEXPRESS,1433; 最关键的是,需要服务器和防火墙做若干设置...
  • u012166632
  • u012166632
  • 2015-11-17 15:37:47
  • 1281

MFC使用ado连接SQLserver

做个小工具,记录MFC中用ado连接sqlserver2008的简要步骤。 首先还是简要介绍一下吧(一下这段为网上摘抄) ADO接口简介   ADO库包含三个基本接口:_ConnectionPtr...
  • GK_2014
  • GK_2014
  • 2016-01-16 22:46:07
  • 4041

Visual C++通过ADO连接 SQL SERVER 2008

小菜由于没学C#,由于数据库课程的需要,使用Visual C++ 2010对SQL SERVER 2008 进行连接操作,其中大量时间用于查阅资料。现在就成功的方法和大家分享,希望可以省去大家查找资料...
  • naruto12345
  • naruto12345
  • 2011-12-01 22:53:34
  • 8204

VC_ADO连接SQLSERVER时连接字符串的模式

VC的数据库编程中,使用ADO连接连接SQL SERVER 时,连接字符串的概念很重要。 这篇文章重点介绍ADO和SQL SERVER进行连接时,几种不同的连接字符串形式,并且分析了连接SQL SER...
  • foreverhuylee
  • foreverhuylee
  • 2014-07-01 18:40:22
  • 7380

详解MFC使用ADO连接SQLServer数据库

VC用ADO访问数据库全攻略,介绍了VC用ADO来访问数据库的各个对象及各方法,很经典,也很实用,很值得一看。 正文 一、ADO概述 ADO是Microsoft为最新和最强大的数据访问范...
  • yangbingzhou
  • yangbingzhou
  • 2014-04-17 22:11:09
  • 8086

Vc++(MFC)中使用ADO 连接SQL Server的(远程)

连接字符串:  _bstr_t strConnect="Provider=SQLOLEDB.1;Initial Catalog=“数据库名称”;Data Source=远程IP"; h...
  • songshu1007
  • songshu1007
  • 2014-05-09 16:26:26
  • 1459

visual c++ ADO连接SQL Server(自己做个例子熟悉该方法)

visual c++ ADO连接SQL Server基本流程万事开头难,任何一种新技术对于初学者来说最重要的还是“入门”,掌握其要点。让我们来看看ADO数据库开发的基本流程吧!(1)初始化COM库,引...
  • sai19841003
  • sai19841003
  • 2010-11-16 13:40:00
  • 2675

delphi7 ADO 方式连接 sqlserver2008/2005 简单应用

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, F...
  • sbfksmq
  • sbfksmq
  • 2016-09-30 15:04:53
  • 4310
收藏助手
不良信息举报
您举报文章:ADO 连接sql server
举报原因:
原因补充:

(最多只允许输入30个字)