SQL Server
Como conectar uma aplicação C++ ao SQL Server usando o Visual Studio e ODBC, método padrão e recomendado pela Microsoft para aplicações C++ nativas.
1. Pré-requisitos
- Visual Studio instalado (2017, 2019 ou 2022).
- SQL Server instalado e em execução (pode ser LocalDB, Express, Developer, ou Azure SQL).
- ODBC Driver para SQL Server instalado (ex: “ODBC Driver 17 for SQL Server”).
- Dados de acesso ao banco (servidor, usuário, senha, nome da base de dados).
2. Configuração do Projeto no Visual Studio
- Crie um novo projeto C++ Console Application.
- No menu do projeto, vá em:
Propriedades > Linker > Input > Additional Dependencies
Adicione:odbc32.lib - Certifique-se de que o driver ODBC está instalado no Windows.
3. Exemplo de Código para Conexão com SQL Server via ODBC
#include <windows.h>
#include <sqlext.h>
#include <iostream>
int main() {
SQLHENV hEnv = NULL;
SQLHDBC hDbc = NULL;
SQLRETURN ret; // Para verificar retornos das funções ODBC
// 1. Alocar ambiente ODBC
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv);
ret = SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
// 2. Alocar conexão
ret = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc);
// 3. String de conexão (ajuste conforme seu ambiente)
SQLCHAR connStr[] = "Driver={ODBC Driver 17 for SQL Server};Server=localhost;Database=NomeDaseDados;Uid=Utilizador;Pwd=Senha;";
SQLCHAR outstr[1024];
SQLSMALLINT outstrlen;
// 4. Conectar
ret = SQLDriverConnect(
hDbc, NULL, connStr, SQL_NTS,
outstr, sizeof(outstr), &outstrlen, SQL_DRIVER_NOPROMPT
);
if (SQL_SUCCEEDED(ret)) {
std::cout << "Conexão estabelecida com sucesso!" << std::endl;
// Exemplo: executar uma consulta simples
SQLHSTMT hStmt;
ret = SQLAllocHandle(SQL_HANDLE_STMT, hDbc, &hStmt);
ret = SQLExecDirect(hStmt, (SQLCHAR*)"SELECT GETDATE()", SQL_NTS);
if (SQL_SUCCEEDED(ret)) {
SQLCHAR buffer[64];
while (SQLFetch(hStmt) == SQL_SUCCESS) {
SQLGetData(hStmt, 1, SQL_C_CHAR, buffer, sizeof(buffer), NULL);
std::cout << "Data/hora do servidor: " << buffer << std::endl;
}
}
SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
} else {
std::cout << "Falha na conexão." << std::endl;
}
// 5. Limpeza
SQLDisconnect(hDbc);
SQLFreeHandle(SQL_HANDLE_DBC, hDbc);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
return 0;
}
Observações:
- Substitua
localhost,NomeBaseDados,Utilizador,Senhaconforme seu ambiente. - O driver pode ser
"ODBC Driver 17 for SQL Server"ou"ODBC Driver 13 for SQL Server", conforme o instalado.
4. Dicas Importantes
- O Visual Studio já inclui o cabeçalho
sqlext.he a bibliotecaodbc32.lib. - Para bases de dados locais, use
Server=localhostou(localdb)\\MSSQLLocalDBna string de conexão. - Para Azure SQL, use a string de conexão fornecida no portal do Azure.
- Sempre verifique os retornos das funções ODBC para tratamento de erros.
5. Recursos Adicionais
- Pode criar e testar a string de conexão usando o Data Sources (ODBC) no Painel de Controle do Windows.
- Para manipular dados (SELECT, INSERT, UPDATE, DELETE), utilize os comandos SQL nas funções
SQLExecDirectouSQLPrepare+SQLExecute.
