这篇文章主要讲解了“C语言中操作sqlserver数据库的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言中操作sqlserver数据库的方法”吧!
操作系统:windows 10 实验平台:vs2012 + sql server 2008
ODBC简介:开放数据库连接(Open Database Connectivity,ODBC),主要的功能是提供了一组用于数据库访问的编程接口,其主要的特点是,如果应用程序使用ODBC做数据源,那么这个应用程序与所使用的数据库或数据库引擎是无关的,为应用程序的跨平台和可移植奠定了基础。
创建ODBC数据源:控制面板――管理工具――ODBC数据源(32位)
可以看到,这里存在三种类型的DSN(数据源名),其中:
用户DSN:只允创建该DSN的用户使用该数据源;
系统DSN:所有登陆该服务器的用户都能使用该数据源;
文件DSN:配置信息保存在文件中,所有登陆的用户均可使用;
在本实验中,采用系统DSN:
点击添加,然后选择SQL Server
然后输入数据源的名称和所在服务器,我们的数据库是安装在本机上的。
选择以sql server用户的方式进行验证,下图所示:
这里可以设置默认连接的数据库,保持不变,使用master作为默认的数据库。
然后点击下一步,然后完成,完成后可以测试一下。
这就完成了ODBC数据源的创建。
程序测试,数据库中已包含一个叫做stu_info的数据库,且其中有一张student的学生信息表,其包含的字段信息如下:
程序设计如下
#include<stdio.h> #include<windows.h> #include<sql.h> #include<sqlext.h> #include<sqltypes.h> int main() { SQLRETURN ret; SQLHENV henv; SQLHDBC hdbc; SQLHSTMT hstmt; ret=SQLAllocHandle(SQL_HANDLE_ENV,NULL,&henv);//申请环境句柄 ret=SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER); ret=SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);//申请数据库连接句柄 ret=SQLConnect(hdbc,(SQLCHAR*)"data_test",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"12345678",SQL_NTS); /*data_test为配置的ODBC数据源名称,这里根据自己的配置进行修改*/ if(!(ret==SQL_SUCCESS || ret==SQL_SUCCESS_WITH_INFO)) { printf("连接数据库失败! "); return -1; } ret=SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt); /*执行sql语句*/ SQLCHAR sql1[]="use stu_info"; SQLCHAR sql2[]="select * from student"; ret=SQLExecDirect(hstmt,sql1,SQL_NTS); ret=SQLExecDirect(hstmt,sql2,SQL_NTS); if(ret==SQL_SUCCESS || ret==SQL_SUCCESS_WITH_INFO) { SQLCHAR str1[50],str2[50],str3[50],str4[50],str5[50],str6[50]; SQLINTEGER len_str1, len_str2, len_str3, len_str4, len_str5, len_str6; while(SQLFetch(hstmt)!=SQL_NO_DATA) { SQLGetData(hstmt,1,SQL_C_CHAR,str1,50,&len_str1); //获取第一列数据 SQLGetData(hstmt,2,SQL_C_CHAR,str2,50,&len_str2); SQLGetData(hstmt,3,SQL_C_CHAR,str3,50,&len_str3); SQLGetData(hstmt,4,SQL_C_CHAR,str4,50,&len_str4); SQLGetData(hstmt,5,SQL_C_CHAR,str5,50,&len_str5); SQLGetData(hstmt,6,SQL_C_CHAR,str6,50,&len_str6); printf("%s %s %s %s %s %s ",str1,str2,str3,str4,str5,str6); } } SQLFreeHandle(SQL_HANDLE_DBC,hdbc);//释放连接句柄 SQLFreeHandle(SQL_HANDLE_ENV,henv);//释放环境句柄 return 0; }
需要说明的是,在多数环境中,代码会报错,报错信息如下:(SQLCHAR*)无法与(SQLWCHAR*)兼容,于是有人可能会想到,直接强转为(SQLWCHAR*),但是依然在SQLConnect函数处报错,无法连接上数据库,这时需要修改字符集,配置为多字节字符集,操作如下:
感谢各位的阅读,以上就是“C语言中操作sqlserver数据库的方法”的内容了,经过本文的学习后,相信大家对C语言中操作sqlserver数据库的方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。