C/C++使用ODBC连接MSSQL数据库
来源:互联网 发布:tt聊天软件 编辑:程序博客网 时间:2024/05/17 05:57
前几天在研究C/C++链接MSSQL数据的方法,前前后后在网上找了不少的文章,大多数文章都没法真正的解决入门新手的全部疑惑,所以在此整理一下自己整个连接数据库的过程,希望能帮到有需要的人。
一、首先是MSSQL server的安装,相信有不少同学会卡在这边。我安装的是MSSQL server2008 R2,前后也失败了几次。总结一下经验:1、安装前最好把360,防火墙都关了;2、一定要将SQL server数据库引擎安装成功,不然就不算安装成功;3、如果安装失败,需要重新安装,重新安装之前需要把之前安装的MSSQL完全卸载,方法如下链接http://wenku.baidu.com/view/569e4823a5e9856a561260a0.html; 4、重新安装的时候需要注意的是,将MSSQL server 2008 R2安装程序所在的路径添加到windows环境变量中(右击计算机---》属性---》高级系统设置---》环境变量---》系统变量(找到path)---》编辑---》添加符号 ; ---》把路径补上)。差不多这样就应该把SQL server 2008 R2安装成功了,具体方法我就部累述了。
二、创建ODBC数据源。
1、首先是打开控制面板---》管理工具---》数据源(ODBC),打开后如图所示:
PS:这个是我已经添加好的数据源。
2、选择用户DSN,点击添加,先择SQL server选项,点完成。注意添加前请将数据库服务启动:
3、给数据源命名,选择你安装MSSQL时创建的数据服务器,点下一步:
PS:这个名称就是数据源的名称,需要记住,后面写程序的时候要用到。
4、
这里要选择使用用户输入登录ID和密码的SQL server验证,之前选择第一个一直失败,不知道什么原因。登录名为sa,表示管理员身份。这里的客户端设置为:
5、关键一步,这边有一个默认数据库,如果不改变,就是master,这里要注意:如果不改变,那么之后程序中的SQL语句操作就是在master数据库中,除非你的SQL语句中加了use databasename。之前楼主就是遇到了这个问题,后面程序中会提到。
6、下一步,下一步,一直到完成。OK啦。
三、C/C++程序操作数据库。
终于到了最后一步了,不过楼主在这边也卡了很久(网上很多程序都不全,而且也米什么解释,蛋疼)。
在VS2010中创建Win32控制台应用程序项目,在里面新建一个.cpp文件(就是正常的写代码流程)。然后需要注意的是,我们要将文件的项目属性---》常规---》字符集改成是未设置,默认应该是使用Unicode字符集。
下面贴上代码:
#include <stdio.h> #include <string.h> #include <windows.h> #include <sql.h> #include <sqlext.h> #include <sqltypes.h> #include <odbcss.h>#define MAXBUFLEN 255SQLHENV henv = SQL_NULL_HENV; SQLHDBC hdbc1 = SQL_NULL_HDBC; SQLHSTMT hstmt1 = SQL_NULL_HSTMT;/* cpp文件功能说明: 1.数据库操作中的添加,修改,删除,主要体现在SQL语句上a 2.采用直接执行方式和参数预编译执行方式两种*/int main(){RETCODE retcode;UCHAR szDSN[15] = "MYDB"; //数据源名称UCHAR userID[6] = "sa";//数据库用户IDUCHAR passWORD[29] = "wu57862520";//用户密码//1.连接数据源 //1.环境句柄 retcode = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE ,&henv);retcode = SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);//2.连接句柄 retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc1); retcode = SQLConnect(hdbc1, szDSN, SQL_NTS, userID, SQL_NTS, passWORD, SQL_NTS);//判断连接是否成功 if ( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) ){printf("连接失败!\n");}else{/*1.分配一个语句句柄(statement handle) 2.创建SQL语句 3.执行语句 4.销毁语句 */ retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);char sql[100] = "insert into test values(22,22)";
/*
这里需要在数据库中有test表,要事先建好哦。 楼主当时就是卡在这里,因为我的默认数据是master,但是我一直操作的是test数据库中的test表,所以一直失败。
大家一定要注意,如果创建数据源的时候是默认的master数据库,而要操作test数据库中的表,要”use test insert into test//values(2,1)“
*/retcode = SQLExecDirect(hstmt1,(SQLCHAR *)sql,strlen(sql));printf("操作成功!");//释放语句句柄 retcode = SQLCloseCursor (hstmt1);retcode = SQLFreeHandle (SQL_HANDLE_STMT, hstmt1); }//3.断开数据库连接/* 1. 断开数据库连接 2.释放连接句柄. 3.释放环境句柄(如果不再需要在这个环境中作更多连接) */SQLDisconnect(hdbc1); SQLFreeHandle(SQL_HANDLE_DBC, hdbc1); SQLFreeHandle(SQL_HANDLE_ENV, henv); return(0);}
这只是一个简单的插入语句,更多操作,我们可以参考ODBC API,这里我就不累述了。
最后,希望大家都没成功!
- C/C++使用ODBC连接MSSQL数据库
- 使用ODBC连接数据库[C++]
- C++ODBC连接数据库
- C++ODBC连接数据库
- c语言ODBC连接数据库
- 【C语言】使用ODBC连接Microsoft SQL server数据库
- C/C++使用ODBC连接Microsoft SQL server数据库
- 【C语言】使用ODBC连接Microsoft SQL server数据库
- 通过odbc,c#连接pg数据库
- C API 通过ODBC 连接数据库MYSQL
- C API 通过ODBC 连接数据库MYSQL
- C语言ODBC连接ACCESS数据库
- 【C#】在VS2012中连接MSSQL数据库
- 【C#】在VS2012中连接MSSQL数据库
- C#ODBC连接MYSQL
- C/C++使用ODBC链接数据库
- 64位win7平台下,使用C语言通过odbc无法连接MySQL数据库的问题。
- C++ODBC和ADO方式连接SQL数据库
- Leetcode: Majority Element II
- Python: 插入数据库报错:Incorrect string value: '\\xE9\\x9C
- http请求获取到的网页源码是字节数组还是字符串?
- Manacher算法--O(n)回文子串算法
- 学习编程一年左右了
- C/C++使用ODBC连接MSSQL数据库
- Codeforces Round #257 (Div. 2) B Jzzhu and Sequences
- 黑马程序员----内部类
- 【Qt OpenGL教程】27:阴影
- Cygwin 安装Ant
- CDP, DCP, SDP的区别(USB)
- CAS设置证书
- 【华为上机题】森林小熊寻路
- Hdoj 1019 Least Common Multiple