使用odbc api訪問資料庫簡單流程,供參考使用:
odbc api 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
sqlhenv m_henviroment;
//資料庫環境控制代碼,屬於老大級別的
sqlhdbc m_hdatabaseconnection;
//資料庫連線控制代碼,老大以後就是他了,有了他資料庫就連線上了
sqlhstmt m_hstatement;
//執行語句控制代碼,最終執行sql於句的控制代碼
// 使用odbc api建立資料庫連線分為3部分:
// 申請環境控制代碼,
// 使用環境控制代碼申請連線控制代碼,
// 使用連線控制代碼連線資料庫。
/* 申請環境變數 */
// 申請各種控制代碼都靠這個函式,
// 引數1是要申請控制代碼的型別,
// 引數2為申請該控制代碼依靠的控制代碼(老大沒依靠,所以是null),申請結果在引數3中儲存
sqlreturn sqlreturn = sqlallochandle(sql_handle_env,
null
, &m_henviroment);
// 返回值代表著執行的意義,如下面判斷,success_with_info相當於是警告,雖然成功了,但是可能有問題
if(sqlreturn != sql_success && sqlreturn != sql_success_with_info)
// 設定odbc環境屬性
sqlsetenvattr(m_henviroment, sql_attr_odbc_version, (sqlpointer)sql_ov_odbc3, sql_is_integer);
/* 申請連線控制代碼 */
sqlreturn = sqlallochandle(sql_handle_dbc, m_henviroment, &m_hdatabaseconnection);
if(sqlreturn != sql_success && sqlreturn != sql_success_with_info)
// 準備連線工作
sqlwchar* sqlwcadsnname = _t(
"mysqldb"
);
//資料來源名稱
sqlwchar* sqlwcausername = _t(
"root"
);
//使用者名稱
sqlwchar* sqlwcapassword = _t(
"kin**iew"
);
//密碼
// 連線資料來源
sqlreturn = sqlconnect( m_hdatabaseconnection
,sqlwcadsnname, sql_nts
,sqlwcausername, sql_nts
,sqlwcapassword, sql_nts);
if(sqlreturn != sql_success && sqlreturn != sql_success_with_info)
/* 申請sql語句控制代碼 */
sqlreturn sqlreturn = sqlallochandle(sql_handle_stmt, m_hdatabaseconnection, &m_hstatement);
if(sqlreturn != sql_success && sqlreturn != sql_success_with_info)
/* 構造sql語句 */
cstring cstrsql;
cstrsql.format(_t(
"select * from mytable "
));/* 執行sql語句 */
sqlreturn = sqlexecdirect(m_hstatement, cstrsql.getbuffer(), sql_nts);
if(sqlreturn != sql_success && sqlreturn != sql_success_with_info)
/* 獲得返回結果的行數 */
sqlinteger sqlnidcount = 0;
sqlreturn = sqlrowcount(m_hstatement,&sqlnidcount);
/* 開始讀取結果 */
// 讀取第一行時要呼叫,以後依次呼叫就可以下移行數,直到不返回sql_success
sqlreturn = sqlfetch(m_hstatement);
if(sqlreturn != sql_success && sqlreturn != sql_success_with_info)
sqlinteger sqlnid;
sqlinteger sqlnidlength = 0;
/* 獲得資料 */
sqlgetdata(m_hstatement,
1, sql_c_ulong, &sqlnid,
0, &sqlnidlength);
// 引數1為執行語句的控制代碼,
// 引數2為所要得到的資料位於的列數(sql語句中),
// 引數3為資料型別,這個比較多,需要看一下msdn
// 引數4為儲存的位置(位址),
// 引數5為引數4可用的位置,既然引數3已設定為長整型,所以這裡可使用0
// 引數6為實際返回的長度
// 釋放控制代碼,斷開連線
sqlfreehandle(sql_handle_stmt, m_hstatement);
sqlfreehandle(sql_handle_dbc, m_hdatabaseconnection);
sqlfreehandle(sql_handle_env, m_henviroment);
通過ODBC API實現對資料庫的訪問
通過odbc api實現對資料庫的訪問 鄭瑜 自從初次接觸到vckbase,在裡面學了很多東西,這跟大家無私的奉獻是離不開的。在資料庫方面的技術文章中,很多篇幅是用來介紹ado或者dao的訪問方式,而關於用odbc api訪問資料庫的文章卻少之又少。雖然用odbc訪問資料庫比較麻煩,但卻很靈活,效率...
在VS中 使用C 訪問Lua
建立vs程式集,然後新增引用luainte ce.dll檔案,選中引用,右鍵新增引用,然後瀏覽到luainte ce.dll的目錄,選擇新增就可以了 而後將luanet.dll檔案複製貼上到,程式集的debug的目錄下,最後建立在vs中使用lua指令碼 我這裡是test.lua檔案 完成情況如圖 u...
vc 使用odbc api連線資料庫
初次寫部落格,不知道效果怎樣,我希望在這裡,能和大家共同建立起乙個交流平台,技術 include include include include int main catch sqlallochandle sql handle stmt,hdbc,hstmt sqlchar sql select f...