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

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

C語言與sqlserver數據庫

系統 2580 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 | 国产美女黄色片 | 亚洲精品不卡久久久久久 | 国产成人综合自拍 | 国产精品美女久久久久久久久久久 | 天天操夜夜爱 | 精品欧美乱码久久久久久1区2区 | 成人伊人 | 日韩亚洲一区二区 | 欧美午夜一艳片欧美精品 | 日本一区欧美 | 美美女高清毛片视频免费观看 | 亚洲精品影院 | 国产欧美日韩在线 | 国产乱子伦一区二区三区 | 欧美日韩精品综合 | 一级片视频免费观看 | 成人一级片在线观看 | 99热久久这里只有精品99 | 91在线亚洲精品专区 | 国产精品久久久久久久久久 | 拍真实国产伦偷精品 | 欧美性吧 | 电影通午夜 | v片在线播放 | 久草在线网址 | 91视频完整版 | 免费又色又爽1000禁片 | 在线国产一区二区 | 国产精品亚洲综合 | 你下面好大好硬好想要 | 天天艹日日干 | 亚洲一级毛片 | 99热中文| 在线欧美一区 | 欧美日韩国产色综合一二三四 | 一区二区三区高清在线观看 | 亚洲国产最新 | 97色伦网| 天堂资源av | 久久久午夜精品 |