fork download
  1. // sel_addr.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 addr[200];
  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("住所の一部(qで終了)>");
  41. scanf("%199s", addr);
  42. if (strcmp(addr, "q") == 0) {
  43. break;
  44. }
  45. sprintf((char *)sqlchar,
  46. "select * from 郵便番号データ where 住所 like '%%%s%%'", addr);
  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,", sqlchar);
  55. SQLGetData(hstmt, 2, SQL_C_CHAR, sqlchar, _countof(sqlchar), &strlen);
  56. printf("%s\n", sqlchar);
  57. }
  58. rc = SQLFreeStmt(hstmt, SQL_DROP);
  59. if (i == 0) {
  60. printf("該当するデータはありません\n");
  61. }
  62. }
  63.  
  64. rc = SQLDisconnect(hdbc);
  65. rc = SQLFreeConnect(hdbc);
  66. rc = SQLFreeEnv(henv);
  67.  
  68. return 0;
  69. }
  70.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty