標籤:style blog http io ar os 使用 sp on
原文: 在VS下用C語言串連SQLServer2008
step1:啟動SQLSERVER服務
step2:打建立資料庫test,在test庫中建立test表(a varchar(200),b varchar(200))
step3:建立系統DSN,開始菜單 ->運行 ->odbcad32,
添加->SQL SERVER Native Client 10.0
名稱:csql,伺服器:localhost
使用使用者使用登入ID和密碼的SQLSERVER驗證,登入ID:sa,密碼:pass
更改預設的資料庫為:test
...
測試資料來源,測試成功,即DNS添加成功。
-------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>
#include <odbcss.h>
SQLHENV henv = SQL_NULL_HENV;
SQLHDBC hdbc1 = SQL_NULL_HDBC;
SQLHSTMT hstmt1 = SQL_NULL_HSTMT;
/*
cpp檔案功能說明:
1.資料庫操作中的添加,修改,刪除,主要體現在SQL語句上
2.採用直接執行方式和參數先行編譯執行方式兩種
*/
int main(){
char a[200]="bbb";
char b[200]="200";
SQLINTEGER p;
RETCODE retcode;
UCHAR szDSN[SQL_MAX_DSN_LENGTH+1] = "csql",
szUID[MAXNAME] = "sa",
szAuthStr[MAXNAME] = "pass";
//SQL語句
//直接SQL語句
UCHAR sql[37] = "insert into test values(‘aaa‘,‘100‘)";
//先行編譯SQL語句
UCHAR pre_sql[29] = "insert into test values(?,?)";
//1.串連資料來源
//分配ODBC環境控制代碼
retcode = SQLAllocHandle (SQL_HANDLE_ENV, NULL, &henv);
// 告訴ODBC這是一個3.0標準的應用程式
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
// 分配串連控制代碼並建立串連
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc1);
retcode = SQLConnect(hdbc1, szDSN,(SWORD)strlen(szDSN), szUID,(SWORD)strlen(szUID), szAuthStr,(SWORD)strlen(szAuthStr));
//判斷串連是否成功
if ( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) ) {
printf("串連失敗!\n");
} else {
//2.建立並執行一條或多條SQL語句
/*
1.分配一個語句控制代碼(statement handle)
2.建立SQL語句
3.執行語句
4.銷毀語句
*/
retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);
//第一種方式
//直接執行
//添加操作
//SQLExecDirect (hstmt1,sql,37);
//第二種方式
//綁定參數方式
p = SQL_NTS;
//1先行編譯
SQLPrepare(hstmt1,pre_sql,29); //第三個參數與數組大小相同,而不是資料庫列相同
//2綁定參數值
SQLBindParameter(hstmt1,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&a,0,&p);
SQLBindParameter(hstmt1,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&b,0,&p);
//3 執行
SQLExecute(hstmt1);
printf("操作成功!");
//釋放語句控制代碼
SQLCloseCursor (hstmt1);
SQLFreeHandle (SQL_HANDLE_STMT, hstmt1);
}
//3.斷開資料來源
/*
1.斷開與資料來源的串連.
2.釋放串連控制代碼.
3.釋放環境控制代碼(如果不再需要在這個環境中作更多串連)
*/
SQLDisconnect(hdbc1);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
system("pause");
return(0);
}
-------------------------------------------------------------------------------------------------------------------------------------
注意,表名不能取mh_login,只能login
在VS下用C語言串連SQLServer2008