odbc配置和連接代碼

使用c語言通過odbc 連接數據庫,其中的配置操作相當的麻煩,之前不接觸數據庫編程的,當時想想無非就是存儲數據而已。 現在想想,也還是存儲數據。

第一步數據源配置,在所有程序-> 管理工具->數據源(odbc) 。 也可以在控制面板下面找到管理工具這一項。

說道配置,真的說來話長。

使用的是 sql server 2005 express 版本,精簡,免費,最重要的原因是pc上已經安裝了此版本。

因爲太過精簡的原因,連一些基本的配置工具都沒有,後來還是要到官網上去下載配置工具 SQLServer2005_SSMSEE.msi 。 通過這個工具用窗口的方式連接到數據庫。

參考的配置文檔,個人感覺這篇比較全面些 http://hi.baidu.com/zhangqijun/item/45e166ab657d691fa8cfb7ea



這裏第二副圖 你想連接的是哪個 SQL Server,看了好些文檔都說是 local。 反正我這裏是不行。偶然間不知道在哪裏看到,填的是第一幅圖中框起來的那一串。 至於這一串是怎麼生成的,不知道。 反正代表的是連接的服務器。  將此數據源命名爲myfeeling, 然後在代碼編輯中連接的,也就是這個數據源了。 測試中證實確實如此。

唉,反正是看了多篇文檔纔給胡整出來的,期間還有許多配置,被省略去。


#include <stdio.h>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>
#include <odbcss.h>

int main(){

	// 環境句柄
	SQLHENV henv ;
	// 連接句柄
	SQLHDBC hdbcl ;
	// 語句句柄
	SQLHSTMT hstmt ;
	// 返回值
	SQLRETURN retcode;

	UCHAR szDSN[SQL_MAX_DSN_LENGTH+1]="myfeeling", szUID[MAXNAME]="sa",szAuthStr[MAXNAME]="9527";
	UCHAR sql[40]="insert into Student values('aaa','100')";
	UCHAR pre_sql[29]="insert int test values(?,?)";

	retcode = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);
	if((retcode!=SQL_SUCCESS)&&(retcode!=SQL_SUCCESS_WITH_INFO))
	{
	printf("環境句柄失敗!\n");
	return 0;
	}
	SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);

	retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbcl); 
	if ((retcode != SQL_SUCCESS )&&( retcode != SQL_SUCCESS_WITH_INFO))
	{
		printf("連接句柄失敗!\n");
		return 0;
	}
	retcode = SQLConnect(hdbcl,szDSN,26,szUID,2,szAuthStr,6);
	if ((retcode != SQL_SUCCESS)&&(retcode != SQL_SUCCESS_WITH_INFO))
	{
		printf("連接數據源失敗");
		return 0;
	}

	retcode = SQLAllocHandle(SQL_HANDLE_STMT,hdbcl,&hstmt);
	if ((retcode != SQL_SUCCESS)&&(retcode != SQL_SUCCESS_WITH_INFO))
	{
		printf("語句句柄失敗");
		return 0;
	}

	retcode = SQLExecDirect(hstmt,sql,40);
	SQLDisconnect(hdbcl);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbcl);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
	return 0;
}

貼上最後的代碼,看別人的代碼也是糊里糊塗的,不過還是連接上了。

沒什麼營養,做個小記。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章