運行->netstartmssqlserverstep2:打開企業管理器,建立數據庫test,在test庫中建立test表(avarchar(200),bvarchar(200))step3:建立系統DSN,開始菜單->運行->odbcad" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

C語言與sqlserver數據庫

系統 2538 0
原文: C語言與sqlserver數據庫

1.使用C語言來操作SQL SERVER數據庫,采用ODBC開放式數據庫連接進行數據的添加,修改,刪除,查詢等操作。
?step1:啟動SQLSERVER服務,例如:HNHJ,開始菜單 ->運行 ->net start mssqlserver
?step2:打開企業管理器,建立數據庫test,在test庫中建立test表(a varchar(200),b varchar(200))
?step3:建立系統DSN,開始菜單 ->運行 ->odbcad32,
??添加->SQL SERVER
?名稱:csql,服務器:HNHJ
?使用用戶使用登錄ID和密碼的SQLSERVER驗證,登錄ID:sa,密碼:
??更改默認的數據庫為:test
?...
?測試數據源,測試成功,即DNS添加成功。

2.cpp文件完整代碼

//##########################save.cpp##########################

C代碼
  1. #include?<stdio.h>??? ??
  2. #include?<string.h>??? ??
  3. #include?<windows.h>??? ??
  4. #include?<sql.h>??? ??
  5. #include?<sqlext.h>??? ??
  6. #include?<sqltypes.h>??? ??
  7. #include?<odbcss.h>??? ??
  8. ??
  9. SQLHENV?henv?=?SQL_NULL_HENV;??? ??
  10. SQLHDBC?hdbc1?=?SQL_NULL_HDBC;??? ??
  11. SQLHSTMT?hstmt1?=?SQL_NULL_HSTMT;??? ??
  12. ??
  13. /* ?
  14. ????cpp文件功能說明: ?
  15. ????1.數據庫操作中的添加,修改,刪除,主要體現在SQL語句上 ?
  16. ????2.采用直接執行方式和參數預編譯執行方式兩種 ?
  17. */ ??
  18. int ?main(){??? ??
  19. ????RETCODE?retcode;??? ??
  20. ???? UCHAR ???szDSN[SQL_MAX_DSN_LENGTH+1]???=??? "csql" ,??? ??
  21. ????????????szUID[MAXNAME]???=??? "sa" ,??? ??
  22. ????????????szAuthStr[MAXNAME]???=??? "" ;?? ??
  23. ???? //SQL語句 ??
  24. ???????? //直接SQL語句 ??
  25. ???? UCHAR ???sql[37]?=? "insert?into?test?values('aaa','100')" ; ??
  26. ???????? //預編譯SQL語句 ??
  27. ???? UCHAR ???pre_sql[29]?=? "insert?into?test?values(?,?)" ; ??
  28. ???? //1.連接數據源 ??
  29. ???????? //1.環境句柄 ??
  30. ????retcode???=???SQLAllocHandle???(SQL_HANDLE_ENV,???NULL,???&henv);??? ??
  31. ????retcode???=???SQLSetEnvAttr(henv,???SQL_ATTR_ODBC_VERSION,??? ??
  32. ??????????????????(SQLPOINTER)SQL_OV_ODBC3,??? ??
  33. ??????????????????SQL_IS_INTEGER);??? ??
  34. ???????? //2.連接句柄?? ??
  35. ????retcode???=???SQLAllocHandle(SQL_HANDLE_DBC,???henv,???&hdbc1);??? ??
  36. ????retcode???=???SQLConnect(hdbc1,???szDSN,???4,???szUID,???2,???szAuthStr,???0);???? ??
  37. ???? //判斷連接是否成功 ??
  38. ???? if ???(???(retcode???!=???SQL_SUCCESS)???&&???(retcode???!=???SQL_SUCCESS_WITH_INFO)???)???{????? ??
  39. ????????printf( "連接失敗!/n" ); ??
  40. ????}??? else ???{??? ??
  41. ???????? //2.創建并執行一條或多條SQL語句 ??
  42. ???????? /* ?
  43. ????????1.分配一個語句句柄(statement?handle) ?
  44. ????????2.創建SQL語句 ?
  45. ????????3.執行語句 ?
  46. ????????4.銷毀語句 ?
  47. ????????*/ ??
  48. ????????retcode???=???SQLAllocHandle(SQL_HANDLE_STMT,???hdbc1,???&hstmt1);??? ??
  49. ???????? //第一種方式 ??
  50. ???????? //直接執行 ??
  51. ???????? //添加操作 ??
  52. ???????? //SQLExecDirect?(hstmt1,sql,37); ??
  53. ???????? ??
  54. ???????? //第二種方式 ??
  55. ???????? //綁定參數方式 ??
  56. ???????? char ?a[200]= "bbb" ; ??
  57. ???????? char ?b[200]= "200" ; ??
  58. ????????SQLINTEGER???p???=???SQL_NTS; ??
  59. ???????? //1預編譯 ??
  60. ????????SQLPrepare(hstmt1,pre_sql,29);? //第三個參數與數組大小相同,而不是數據庫列相同 ??
  61. ???????? //2綁定參數值 ??
  62. ????????SQLBindParameter(hstmt1,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&a,0,&p); ??
  63. ????????SQLBindParameter(hstmt1,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&b,0,&p); ??
  64. ???????? //3?執行 ??
  65. ????????SQLExecute(hstmt1); ??
  66. ???????? ??
  67. ????????printf( "操作成功!" ); ??
  68. ???????? //釋放語句句柄 ??
  69. ????????SQLCloseCursor?(hstmt1); ??
  70. ????????SQLFreeHandle?(SQL_HANDLE_STMT,?hstmt1); ??
  71. ???? ??
  72. ????}??? ??
  73. ???? //3.斷開數據源 ??
  74. ???? /* ?
  75. ?????1.斷開與數據源的連接. ?
  76. ?????2.釋放連接句柄. ?
  77. ?????3.釋放環境句柄?(如果不再需要在這個環境中作更多連接) ?
  78. ????*/ ??
  79. ????SQLDisconnect(hdbc1);???? ??
  80. ????SQLFreeHandle(SQL_HANDLE_DBC,?hdbc1);??? ??
  81. ????SQLFreeHandle(SQL_HANDLE_ENV,?henv);??? ??
  82. ???? return (0);??? ??
  83. }?????

?

//##########################list.cpp##########################

C代碼
  1. #include?<stdio.h>??? ??
  2. #include?<string.h>??? ??
  3. #include?<windows.h>??? ??
  4. #include?<sql.h>??? ??
  5. #include?<sqlext.h>??? ??
  6. #include?<sqltypes.h>??? ??
  7. #include?<odbcss.h>??? ??
  8. ??
  9. SQLHENV?henv?=?SQL_NULL_HENV;??? ??
  10. SQLHDBC?hdbc1?=?SQL_NULL_HDBC;??? ??
  11. SQLHSTMT?hstmt1?=?SQL_NULL_HSTMT;??? ??
  12. ??
  13. /* ?
  14. ????查詢SQLSERVER數據庫,1.條件查詢,2.直接查詢全部 ?
  15. */ ??
  16. int ?main(){??? ??
  17. ????RETCODE?retcode;??? ??
  18. ???? UCHAR ???szDSN[SQL_MAX_DSN_LENGTH+1]???=??? "csql" ,??? ??
  19. ????????????szUID[MAXNAME]???=??? "sa" ,??? ??
  20. ????????????szAuthStr[MAXNAME]???=??? "" ;?? ??
  21. ???? UCHAR ???sql1[39]?=? "select?b?from?test?where?a?=?'aaa'" ; ??
  22. ???? UCHAR ???sql2[35]?=? "select?b?from?test?where?a?=???" ; ??
  23. ???? UCHAR ???sql3[19]?=? "select?b?from?test" ; ??
  24. ???? ??
  25. ????retcode???=???SQLAllocHandle???(SQL_HANDLE_ENV,???NULL,???&henv);??? ??
  26. ????retcode???=???SQLSetEnvAttr(henv,???SQL_ATTR_ODBC_VERSION,??? ??
  27. ??????????????????(SQLPOINTER)SQL_OV_ODBC3,??? ??
  28. ??????????????????SQL_IS_INTEGER);???? ??
  29. ????retcode???=???SQLAllocHandle(SQL_HANDLE_DBC,???henv,???&hdbc1);??? ??
  30. ???? //1.連接數據源 ??
  31. ????retcode???=???SQLConnect(hdbc1,???szDSN,???4,???szUID,???2,???szAuthStr,???0);???? ??
  32. ???? if ???(???(retcode???!=???SQL_SUCCESS)???&&???(retcode???!=???SQL_SUCCESS_WITH_INFO)???)???{??? ??
  33. ????????printf( "連接失敗!" ); ??
  34. ????}??? else ???{??? ??
  35. ???????? //2.創建并執行一條或多條SQL語句 ??
  36. ???????? /* ?
  37. ????????1.分配一個語句句柄(statement?handle) ?
  38. ????????2.創建SQL語句 ?
  39. ????????3.執行語句 ?
  40. ????????4.銷毀語句 ?
  41. ????????*/ ??
  42. ????????retcode???=???SQLAllocHandle(SQL_HANDLE_STMT,???hdbc1,???&hstmt1);??? ??
  43. ???????? //第一種方式 ??
  44. ???????? /* ?
  45. ????????//直接執行 ?
  46. ????????SQLExecDirect?(hstmt1,sql1,39); ?
  47. ????????char?list[5]; ?
  48. ????????SQLBindCol(hstmt1,?1,?SQL_C_CHAR,?list,?5,?0); ?
  49. ????????SQLFetch(hstmt1); ?
  50. ????????printf("%s/n",list); ?
  51. ????????*/ ??
  52. ???????? ??
  53. ???????? //第二種方式 ??
  54. ???????? /* ?
  55. ????????//綁定參數方式 ?
  56. ????????char?a[200]="aaa"; ?
  57. ????????SQLINTEGER???p???=???SQL_NTS; ?
  58. ????????//1.預編譯 ?
  59. ????????SQLPrepare(hstmt1,sql2,35);?//第三個參數與數組大小相同,而不是數據庫列相同 ?
  60. ????????//2.綁定參數值 ?
  61. ????????SQLBindParameter(hstmt1,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&a,0,&p); ?
  62. ????????//3.執行 ?
  63. ????????SQLExecute(hstmt1); ?
  64. ????????char?list[5]; ?
  65. ????????SQLBindCol(hstmt1,?1,?SQL_C_CHAR,?list,?5,?0); ?
  66. ????????SQLFetch(hstmt1); ?
  67. ????????printf("%s/n",list); ?
  68. ????????*/ ??
  69. ??
  70. ???????? //第三種方式全部輸出 ??
  71. ???????? /* ?
  72. ????????1.確認一個結果集是否可用。 ?
  73. ????????2.將結果集的列綁定在適當的變量上。 ?
  74. ????????3.取得行 ?
  75. ????????*/ ??
  76. ???????? //3.檢查結果記錄(如果有的話) ??
  77. ????????SQLExecDirect?(hstmt1,sql3,19); ??
  78. ???????? char ?list[5]; ??
  79. ????????SQLBindCol(hstmt1,?1,?SQL_C_CHAR,?list,?5,?0); ??
  80. ???????? do { ??
  81. ????????????retcode?=?SQLFetch(hstmt1); ??
  82. ???????????? if (retcode?==?SQL_NO_DATA){ ??
  83. ???????????????? break ; ??
  84. ????????????} ??
  85. ????????????printf( "%s/n" ,list); ??
  86. ????????} while (1); ??
  87. ???????? ??
  88. ???????? //釋放語句句柄 ??
  89. ????????SQLCloseCursor?(hstmt1); ??
  90. ????????SQLFreeHandle?(SQL_HANDLE_STMT,?hstmt1); ??
  91. ???? ??
  92. ????}??? ??
  93. ? ??
  94. ???? //4.斷開數據源 ??
  95. ???? /* ?
  96. ?????1.斷開與數據源的連接. ?
  97. ?????2.釋放連接句柄. ?
  98. ?????3.釋放環境句柄?(如果不再需要在這個環境中作更多連接) ?
  99. ????*/ ??
  100. ????SQLDisconnect(hdbc1);???? ??
  101. ????SQLFreeHandle(SQL_HANDLE_DBC,?hdbc1);??? ??
  102. ????SQLFreeHandle(SQL_HANDLE_ENV,?henv);??? ??
  103. ???? return (0);??? ??
  104. }????

?

3. 總結:ODBC數據庫操作與JDBC步驟上類似,可以融匯貫通來學習

本文來自于 http://simpledev.javaeye.com/blog/339537

C語言與sqlserver數據庫


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久99精品一区二区三区 | 国产成人精品视频一区 | 精品国产免费第一区二区三区日韩 | 天天做天天欢天天爽 | 成人精品国产 | 日韩欧美在线观看成人 | 羞羞网站在线免费观看 | 精品无码久久久久久久动漫 | 99久久日本一区二区波多野结衣 | 欧美激情在线播放一区二区 | 亚洲乱码一区二区三区在线观看 | 曰批免费视频播放在线看片二 | 久草国产在线 | 国产91久久最新观看地址 | 日产国产欧美视频一区精品 | a拍拍男女免费看全片 | 天天干天天拍天天射 | 久久黄色一级视频 | 亚洲欧美久久精品一区 | 狠色狠色狠狠色综合久久 | 亚洲国产精品xo在线观看 | 四虎影院永久网站 | 亚洲欧美日韩中文v在线 | 久久精品视频在线播放 | 欧美影院一区二区 | 日韩中文欧美 | 最新国产精品精品视频 | 亚洲高清中文字幕综合网 | 性xxx欧美 | 亚洲好视频 | 欧美日韩国产在线人成 | 中文字幕欧美日韩 | 国产精品一区二区在线观看 | 四虎网站网址 | 96一级毛片 | 特级理论片 | 欧美激情综合亚洲一二区 | 日韩 欧美 国产 亚洲 中文 | 午夜精品久久久久久久爽 | 国产精品久久国产精品99 | 亚洲成人视 |