C語言中操作sqlserver數據庫案例教程
本文使用c語言來對sql server數據庫進行操作,實現通過程序來對數據庫進行增刪改查操作。
操作系統: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("連接數據庫失敗!\n"); 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\t%s\t%s\t%s\t%s\t%s\n",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內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- oracle連接ODBC sqlserver數據源的詳細步驟
- MySQL系列教程之使用C語言來連接數據庫
- 通過Qt連接OpenGauss數據庫的詳細教程
- C語言char s[]和char* s的區別
- C語言玩轉指針之指針的高階玩法