fork download
  1. // sel_num.c
  2. // VC++ 2010 Express
  3. // マルチバイト文字セット
  4.  
  5. #define _CRT_SECURE_NO_WARNINGS
  6.  
  7. #include <Windows.h>
  8. #include <sqlext.h>
  9. #include <stdio.h>
  10.  
  11. #define DRIVER "Microsoft Access Driver (*.mdb)"
  12. #define DATABASE "C:\\projects\\vc++\\odbctest\\odbctest.mdb"
  13.  
  14. int main()
  15. {
  16. HENV henv;
  17. HDBC hdbc;
  18. HSTMT hstmt;
  19. SQLCHAR CompliteConnect[255];
  20. SWORD len;
  21. SQLCHAR sqlchar[256];
  22. SQLINTEGER strlen;
  23. RETCODE rc;
  24. char number[7+1];
  25. int i;
  26.  
  27. // データベースへの接続
  28. rc = SQLAllocEnv(&henv);
  29. rc = SQLAllocConnect(henv, &hdbc);
  30. rc = SQLDriverConnect(hdbc, NULL,
  31. (SQLCHAR *)"Driver={"DRIVER"}; DBQ="DATABASE,
  32. SQL_NTS, CompliteConnect, _countof(CompliteConnect), &len, SQL_DRIVER_NOPROMPT);
  33. if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  34. fprintf(stderr, "データベースファイルを開けません\n");
  35. return 1;
  36. }
  37.  
  38. // 検索
  39. while (1) {
  40. printf("7桁の郵便番号(qで終了)>");
  41. scanf("%7s", number);
  42. if (strcmp(number, "q") == 0) {
  43. break;
  44. }
  45. sprintf((char *)sqlchar,
  46. "select 住所 from 郵便番号データ where 郵便番号='%s'", number);
  47. rc = SQLAllocStmt(hdbc, &hstmt);
  48. rc = SQLExecDirect(hstmt, sqlchar, SQL_NTS);
  49. for (i = 0; ; i++) {
  50. rc = SQLFetch(hstmt);
  51. if (rc == SQL_NO_DATA) break;
  52. if (rc == SQL_ERROR) break;
  53. SQLGetData(hstmt, 1, SQL_C_CHAR, sqlchar, _countof(sqlchar), &strlen);
  54. printf("%s\n", sqlchar);
  55. }
  56. rc = SQLFreeStmt(hstmt, SQL_DROP);
  57. if (i == 0) {
  58. printf("該当するデータはありません\n");
  59. }
  60. }
  61.  
  62. rc = SQLDisconnect(hdbc);
  63. rc = SQLFreeConnect(hdbc);
  64. rc = SQLFreeEnv(henv);
  65.  
  66. return 0;
  67. }
  68.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty