Conexão Microsoft SQL Server – CDatabase – ODBC – Win32 – x64 – MFC – C++

Publicado: 9 de maio de 2014 em C/C++

MFC fornece dois conjuntos distintos de classes para acessar banco de dados: um para permitir o acesso através de DAO, e outros através de ODBC. O método DAO é geralmente usado para acessar bancos de dados desktop e o método ODBC para conectar-se servidores de banco de dados relacionais através de uma fonte de dados.

MSSQL - ODBC

MSSQL – ODBC

ODBC

O Microsoft Open Database Connectivity (ODBC) é uma interface de linguagem de programação C, que torna possível que aplicativos acessem dados de uma variedade de sistemas de gerenciamento de banco de dados (SGBD). ODBC é escrita em baixo nível, e uma interface de alto desempenho que é projetado especificamente para armazenamentos de dados relacionais.

O Microsoft Foundation Classes (MFC) fornece bibliotecas de classes para programação com Open Database Connectivity (ODBC).

CDatabase

Representa uma conexão com uma fonte de dados, através do qual você pode operar com esta fonte de dados.

Conectando ao banco de dados MSSQL Server

1 – Crie um novo projeto C++ MFC Application Dialog Based, coloque no dialogo 4 componentes Static Text, 3 componentes Edit Control, e um Button, disponha os componentes como na figura abaixo:

Design

Design

2 – No painel de controle escolha a opção ferramentas administrativas e abra a opção Fontes de Dados ODBC para 32 ou 64bits, na guia DNS de Usuário, clique em adicionar e selecione o driver correspondente ao MSSQL:

Driver

Driver

3 – Crie os parâmetros de conexão contendo um nome para sua fonte de dados no qual será seu DNS e crie os parâmetros comuns para se conectar ao MSSQL, teste sua conexão e clique em OK:

MSQL -DNS

MSQL -DNS

4 – Use os trechos marcados do código abaixo para completar seu código gerado automaticamente

Exemplo:

Neste exemplo efetuamos uma conexão ao banco de dados através de um DNS ODBC usando a classe CDatabase.

C++


// MSSQLSever-cppDlg.cpp : implementation file
//

#include "stdafx.h"
#include "MSSQLSever-cpp.h"
#include "MSSQLSever-cppDlg.h"
#include "afxdialogex.h"

// Inclui classe de banco de dados MFC
#include "afxdb.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

CMSSQLSevercppDlg::CMSSQLSevercppDlg(CWnd* pParent /*=NULL*/)
	: CDialogEx(CMSSQLSevercppDlg::IDD, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CMSSQLSevercppDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_EDIT1, m_usuario);
	DDX_Control(pDX, IDC_EDIT2, m_senha);
	DDX_Control(pDX, IDC_EDIT3, m_sid);
}

BEGIN_MESSAGE_MAP(CMSSQLSevercppDlg, CDialogEx)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BUTTON1, &CMSSQLSevercppDlg::OnBnClickedButton1)
END_MESSAGE_MAP()

BOOL CMSSQLSevercppDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	SetIcon(m_hIcon, TRUE);
	SetIcon(m_hIcon, FALSE);		

	return TRUE;
}

void CMSSQLSevercppDlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); 

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialogEx::OnPaint();
	}
}

HCURSOR CMSSQLSevercppDlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}

// Desenvolvimento Aberto
// nosso código começa aqui.

// Cria menssagem
int menssagem(bool correto)
{
	LPCWSTR msg;

	if (correto)
	{
		msg = L"Conectado com sucesso!";
	}
	else
	{
		msg = L"Erro na conexão";
	}

	int msgboxID = MessageBox(
		NULL,
		msg,
		(LPCWSTR)L"Conexão",
		MB_ICONWARNING | MB_OK | MB_DEFBUTTON2
		);

	switch (msgboxID)
	{
	case IDOK:

		break;
	}

	return msgboxID;
}

void CMSSQLSevercppDlg::OnBnClickedButton1()
{
	// Cria classe conexão ODBC
	CDatabase db;

	// Declara variaveis
	CString usuario;
	CString senha;
	CString fonte;
	CString conexao;

	// Alimenta variaveis
	m_sid.GetWindowTextW(fonte);
	m_usuario.GetWindowTextW(usuario);
	m_senha.GetWindowTextW(senha);

	// Cria string de conexão
	conexao = L"DSN=" + fonte + L";UID=" + usuario + L";PWD=" + senha;

	// Conecta ao banco de dados
	db.OpenEx(conexao, 0);

	// Verifica conexão
	if (db.IsOpen())
	{
		menssagem(true);
	}
	else
	{
		menssagem(false);
	}

}
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s