C 中使用ODBC API訪問資料庫例程

2021-09-07 19:47:33 字數 4399 閱讀 3859

使用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...