ODBC示例_控制台程序.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:12 大小:1.4MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

ODBC示例_控制台程序.pdf

ODBC示例_控制台程序.pdf

预览

免费试读已结束,剩余 2 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

ODBC示例:控制台程序—by周子琳(Jersey16@163.com)1.SQLSever环境检查1)检查登录方式如下图所示,右键服务器名,选择“属性”;点开“安全性”页面,将身份验证设成如图所示;再次右键服务器名,选择“重新启动”,让设置生效。2)检查SQLServer默认管理员sa的权限点开如下图所示的目录,右键数据库用户sa,选择“属性”;点开“常规”页面,设置sa密码点开左侧“状态”页面,将“设置”部分设成如下图所示状态,并点击“确定”。如下图所示,点击“断开连接”图标断开连接后,点击左边的“连接”图标,用sa账号进行登录,验证是否登录成功。3)检查TCP/IP选项在Windows“开始”菜单处选择SQLServer2008的配置管理器,如下图所示;点开如下图所示的目录,检查TCP/IP项是否已设为启用状态。2.创建数据源DSN1)在“控制面板”的“管理工具”中找到“ODBC数据源管理器”,点击打开。2)点击“添加”按钮,按以下几张图对DSN进行配置;完成以上所有操作后,在返回的主界面点击“确定”,完成DSN设置。3.使用ODBC的API进行数据库访问1)打开VisualStudio,这里以VS2010为例。如下图所示,创建一个控制台工程。2)创建.cpp源文件,并如下图所示,修改工程的字符集3)以下为一段示例代码://db.cpp#include<iostream>#include<windows.h>//注意一定要包含此头文件//SQL要使用的头文件#include<Sql.h>#include<Sqlext.h>#include<Sqltypes.h>usingnamespacestd;intmain(){SQLRETURNresult;SQLHANDLEhEnv;//分配环境句柄result=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&hEnv);if((result!=SQL_SUCCESS)&&(result!=SQL_SUCCESS_WITH_INFO)){printf("分配环境句柄失败!");getchar();exit(0);}//设置环境句柄result=SQLSetEnvAttr(hEnv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);if((result!=SQL_SUCCESS)&&(result!=SQL_SUCCESS_WITH_INFO)){SQLFreeHandle(SQL_HANDLE_ENV,hEnv);printf("设置境句柄失败!");getchar();exit(0);}//分配连接句柄SQLHANDLEhDbc;result=SQLAllocHandle(SQL_HANDLE_DBC,hEnv,&hDbc);if((result!=SQL_SUCCESS)&&(result!=SQL_SUCCESS_WITH_INFO)){SQLFreeHandle(SQL_HANDLE_ENV,hEnv);printf("分配连接句柄失败!");getchar();exit(0);}//连接数据源char*DSN="test1";//DSNchar*user="sa";//lognamechar*pass="12345";//passwardresult=SQLConnect(hDbc,(SQLCHAR*)DSN,SQL_NTS,(SQLCHAR*)user,SQL_NTS,(SQLCHAR*)pass,SQL_NTS);if((result!=SQL_SUCCESS)&&(result!=SQL_SUCCESS_WITH_INFO)){SQLFreeHandle(SQL_HANDLE_ENV,hEnv);printf("连接数据源失败!");getchar();exit(0);}//分配语句句柄SQLHANDLEhStmt;result=SQLAllocHandle(SQL_HANDLE_STMT,hDbc,&hStmt);if((result!=SQL_SUCCESS)&&(result!=SQL_SUCCESS_WITH_INFO)){SQLFreeHandle(SQ