C/C++ code#include "stdio.h"
#include "windows.h"
#include "ODBCSDK/include/sql.h" //包含基本的ODBC API定义的头文件
#include "ODBCSDK/include/sqlext.h" //包含有扩展的ODBC定义的头文件
#include "ODBCSDK/include/sqlucode.h" //包含Unicode版本的ODBC定义的头文件
int main(int argc, char* argv[])
{
#define IFRETSUC if(SQL_SUCCESS != ret && SQL_SUCCESS_WITH_INFO != ret)
SQLTCHAR szDSN[] = L"MSSQLDemoDSN"; //保存DSN名称
SQLTCHAR szUser[] = L"sa"; //保存用户名称
SQLTCHAR szPwd[] = L"123456"; //保存密码
SQLRETURN ret;
SQLHENV hEnv = SQL_NULL_HENV;
SQLHDBC hDBC = SQL_NULL_HDBC;
SQLHSTMT hSTMT = SQL_NULL_HSTMT;
ret = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&hEnv); //在使用ODBC时必须先申请环境句柄
IFRETSUC
{
printf("申请环境句柄失败! Err:%d",ret);
system("pause");
return 0;
}
ret = SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
IFRETSUC
{
printf("设置ODBC版本失败! Err:%d",ret);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
system("pause");
return 0;
}
ret = SQLAllocHandle(SQL_HANDLE_DBC,hEnv,&hDBC);
IFRETSUC
{
printf("申请连接句柄失败! Err:%d",ret);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
system("pause");
return 0;
}
ret = SQLConnect(hDBC, szDSN, SQL_NTS, szUser, SQL_NTS, szPwd, SQL_NTS);
IFRETSUC
{
printf("连接数据库失败! Err:%d",ret);
SQLDisconnect(hDBC);
SQLFreeHandle(SQL_HANDLE_DBC, hDBC);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
system("pause");
return 0;
}
ret = SQLAllocHandle(SQL_HANDLE_STMT,hDBC,&hSTMT);
IFRETSUC
{
printf("申请语句句柄失败! Err:%d",ret);
SQLDisconnect(hDBC);
SQLFreeHandle(SQL_HANDLE_DBC, hDBC);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
system("pause");
return 0;
}
//先删除原先的MSSQLDemo数据库
ret = SQLExecDirect(hSTMT,
(SQLTCHAR*)L"if exists(select * from sysdatabases where name = 'MSSQLDemo') drop database MSSQLDemo",
SQL_NTS);
IFRETSUC
{
printf("删除原先的MSSQLDemo数据库失败! Err:%d",ret);
SQLDisconnect(hDBC);
SQLFreeHandle(SQL_HANDLE_DBC, hDBC);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
system("pause");
return 0;
}
//创建MSSQLDemo数据库
ret = SQLExecDirect(hSTMT, (SQLTCHAR*)L"create database MSSQLDemo", SQL_NTS);
IFRETSUC
{
printf("创建MSSQLDemo数据库失败! Err:%d",ret);
SQLDisconnect(hDBC);
SQLFreeHandle(SQL_HANDLE_DBC, hDBC);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
system("pause");
return 0;
}
SQLDisconnect(hDBC);
SQLFreeHandle(SQL_HANDLE_DBC, hDBC);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
system("pause");
return 0;
}