DB2

前提条件

サーバがインストールされている場合

「C:\Program Files\IBM\SQLLIB」が存在することを確認

クライアントからの場合

クライアントをインストールして「C:\Program Files\IBM\SQLLIB」に存在することを確認

データベースカタログ

設定を行なって、データベースのカタログを行なう


サンプルソース

  1. /* Standard C/C++ Headers */
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. /* DB2 ODBC Header */
  7. #include <sqlcli1.h>
  8.  
  9. int main(int argc, char** argv)
  10. {
  11. /* Handles */
  12. SQLHENV henv = SQL_NULL_HENV;
  13. SQLHDBC hdbc = SQL_NULL_HDBC;
  14. SQLHSTMT hstmt= SQL_NULL_HSTMT;
  15.  
  16. /* Local variables */
  17. SQLRETURN rc;
  18. SQLCHAR statement[32761];
  19. SQLCHAR mycolout[12];
  20. SQLINTEGER mycoloutlen = 0;
  21. char dbname[8 + 1];
  22. char user[18 + 1];
  23. char pswd[30 + 1];
  24.  
  25. if (argc < 4) {
  26. printf ("Usage: dbconn_ODBC_CLI <database name> <userid> <password>\n");
  27. exit (0);
  28. }
  29. strcpy (dbname, argv[1]);
  30. strcpy (user, argv[2]);
  31. strcpy (pswd, argv[3]);
  32.  
  33. rc = SQLAllocHandle(SQL_HANDLE_ENV,
  34. SQL_NULL_HANDLE,
  35. &henv);
  36.  
  37. rc = SQLSetEnvAttr(henv
  38. , SQL_ATTR_ODBC_VERSION
  39. , (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
  40.  
  41. rc = SQLAllocHandle(SQL_HANDLE_DBC,
  42. henv,
  43. &hdbc);
  44.  
  45. /* connect to the database */
  46. rc = SQLConnect(hdbc
  47. , (SQLCHAR *)dbname
  48. , SQL_NTS
  49. , (SQLCHAR *)user
  50. , SQL_NTS
  51. , (SQLCHAR *)pswd
  52. , SQL_NTS);
  53. printf ("\n Successful connection to '%s' db using ODBC/CLI \n",dbname);
  54.  
  55. rc = SQLAllocHandle(SQL_HANDLE_STMT,
  56. hdbc,
  57. &hstmt);
  58.  
  59. strcpy(statement,"SELECT empno");
  60. strcat(statement," FROM DB2INST1.EMPLOYEE;");
  61.  
  62. rc = SQLExecDirect(hstmt
  63. , statement
  64. , SQL_NTS);
  65.  
  66. rc = SQLBindCol(hstmt
  67. , 1
  68. , SQL_C_CHAR
  69. , mycolout
  70. , sizeof(mycolout)
  71. , &mycoloutlen);
  72.  
  73. while((rc = SQLFetch(hstmt)) == SQL_SUCCESS
  74. || rc == SQL_SUCCESS_WITH_INFO){
  75. /* Print data */
  76. printf(" Successful retrieval of record. Column 'empno' has a value of '%s'\n",mycolout);
  77. }
  78.  
  79. rc = SQLCloseCursor(hstmt);
  80. rc = SQLFreeStmt(hstmt, SQL_RESET_PARAMS);
  81. rc = SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
  82. rc = SQLDisconnect(hdbc);
  83. printf (" Successful Disconnection from database '%s'\n",dbname);
  84.  
  85. rc = SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
  86. rc = SQLFreeHandle(SQL_HANDLE_ENV, henv);
  87. printf (" End of Program\n");
  88. return 0;
  89.  
  90. }
  91.  
  92.  

コンパイル・実行

c:\MinGW>gcc -I"C:\Program Files\IBM\SQLLIB\include" db2_sample01.c -o db2_sample01.exe "C:\Program Files\IBM\SQLLIB\lib\db2api.lib" "C:\Program Files\IBM\SQLLIB\lib\db2cli.lib"
 
c:\MinGW>db2_sample01.exe sample db2inst1 xxxxxxx
 
  Successful connection to 'sample' db using ODBC/CLI
  Successful retrieval of record.  Column 'empno' has a value of '000010'
  Successful retrieval of record.  Column 'empno' has a value of '000020'
  Successful retrieval of record.  Column 'empno' has a value of '000030'
  Successful retrieval of record.  Column 'empno' has a value of '000050'
  Successful retrieval of record.  Column 'empno' has a value of '000060'
  Successful Disconnection from database 'sample'
  End of Program
 
c:\MinGW>
 




最終更新:2010年06月25日 09:09