「C言語/C++/sellike」の編集履歴(バックアップ)一覧はこちら

C言語/C++/sellike - (2012/09/03 (月) 08:27:10) の1つ前との変更点

追加された行は緑色になります。

削除された行は赤色になります。

|開発環境|Microsoft Visual C++ 2010 Express (SP1)| |実行環境|Microsoft Windows XP Home Edition (SP3)| |プロジェクトの種類|Win32 コンソール アプリケーション| |プロジェクト名|odbctest| |アプリケーションの種類|コンソール アプリケーション| |追加のオプション|空のプロジェクト| |文字セット|Unicode| sellike.c #highlight(c){{ #include <Windows.h> #include <sqlext.h> #include <locale.h> // LC_TYPE #include <stdio.h> // EOF #include <tchar.h> #define DRIVER _T("Microsoft Access Driver (*.mdb)") #define DATABASE _T("C:\\projects\\vc++\\odbctest\\odbctest.mdb") //============================================================================== int main() { SQLHENV henv; // 環境ハンドル SQLHDBC hdbc; // 接続ハンドル SQLHSTMT hstmt; // 命令ハンドル SQLRETURN rc; // retcode SQLSMALLINT col; SQLSMALLINT c; SQLLEN len; _TCHAR stmttext[256]; _TCHAR buf[76+1]; int i; // ロケールを既定値に設定 _tsetlocale(LC_CTYPE, _T("")); // 環境ハンドルの確保 rc = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); rc = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0); // データベースへの接続 rc = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); rc = SQLDriverConnect(hdbc, NULL, _T("driver={") DRIVER _T("}; dbq=") DATABASE, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT); if (!SQL_SUCCEEDED(rc)) { _ftprintf(stderr, _T("データベースへの接続に失敗しました\n")); return 1; } // 検索ループ while (1) { _tprintf(_T("町域名の一部(Ctrl-Zで終了)>")); i = _tscanf_s(_T("%76s"), buf, _countof(buf)); if (i == EOF) break; _stprintf_s(stmttext, _countof(stmttext), _T("select * from 郵便番号データ where 町域名 like '%%%s%%'"), buf); rc = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); rc = SQLExecDirect(hstmt, stmttext, SQL_NTS); if (SQL_SUCCEEDED(rc)) { rc = SQLNumResultCols(hstmt, &col); for (i = 0; ; i++) { rc = SQLFetch(hstmt); if (rc == SQL_NO_DATA) break; if (rc == SQL_ERROR) break; for (c = 1; c <= col; c++) { SQLGetData(hstmt, c, SQL_C_TCHAR, buf, _countof(buf), &len); if (len == SQL_NULL_DATA) buf[0] = _T('\0'); _tprintf(_T("%s%c"), buf, (c == col) ? _T('\n') : _T(',')); } } _tprintf(_T("該当:%d件\n"), i); } SQLFreeHandle(SQL_HANDLE_STMT, hstmt); } // 終了処理 SQLDisconnect(hdbc); SQLFreeHandle(SQL_HANDLE_DBC, hdbc); SQLFreeHandle(SQL_HANDLE_ENV, henv); return 0; } }} 出力 町域名の一部(Ctrl-Zで終了)>清原 09201,32132,3213231,トチギケン,ウツノミヤシ,キヨハラコウギョウダンチ,栃木県,宇都宮市,清原工業団地,0, 0,0,0,0,0 09201,32132,3213223,トチギケン,ウツノミヤシ,キヨハラダイ,栃木県,宇都宮市,清原台,0,0,1,0,0,0 該当:2件 町域名の一部(Ctrl-Zで終了)>東京 該当:0件 町域名の一部(Ctrl-Zで終了)>^Z
|開発環境|Microsoft Visual C++ 2010 Express (SP1)| |実行環境|Microsoft Windows XP Home Edition (SP3)| |プロジェクトの種類|Win32 コンソール アプリケーション| |プロジェクト名|odbctest| |アプリケーションの種類|コンソール アプリケーション| |追加のオプション|空のプロジェクト| |文字セット|Unicode| sellike.c #highlight(c){{ #include <Windows.h> #include <sqlext.h> #include <locale.h> // LC_TYPE #include <stdio.h> // EOF #include <tchar.h> #define DRIVER _T("Microsoft Access Driver (*.mdb)") #define DATABASE _T("C:\\projects\\vc++\\odbctest\\odbctest.mdb") //============================================================================== int main() { SQLHENV henv; // 環境ハンドル SQLHDBC hdbc; // 接続ハンドル SQLHSTMT hstmt; // 命令ハンドル SQLRETURN rc; // retcode SQLSMALLINT col; SQLSMALLINT c; SQLLEN len; _TCHAR stmttext[256]; // 命令文 _TCHAR buf[76+1]; int i; // ロケールを既定値に設定 _tsetlocale(LC_CTYPE, _T("")); // 環境ハンドルの確保 rc = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); rc = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0); // データベースへの接続 rc = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); rc = SQLDriverConnect(hdbc, NULL, _T("driver={") DRIVER _T("}; dbq=") DATABASE, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT); if (!SQL_SUCCEEDED(rc)) { _ftprintf(stderr, _T("データベースへの接続に失敗しました\n")); return 1; } // 検索ループ while (1) { _tprintf(_T("町域名の一部(Ctrl-Zで終了)>")); i = _tscanf_s(_T("%76s"), buf, _countof(buf)); if (i == EOF) break; _stprintf_s(stmttext, _countof(stmttext), _T("select * from 郵便番号データ where 町域名 like '%%%s%%'"), buf); rc = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); rc = SQLExecDirect(hstmt, stmttext, SQL_NTS); if (SQL_SUCCEEDED(rc)) { rc = SQLNumResultCols(hstmt, &col); for (i = 0; ; i++) { rc = SQLFetch(hstmt); if (rc == SQL_NO_DATA) break; if (rc == SQL_ERROR) break; for (c = 1; c <= col; c++) { SQLGetData(hstmt, c, SQL_C_TCHAR, buf, _countof(buf), &len); if (len == SQL_NULL_DATA) buf[0] = _T('\0'); _tprintf(_T("%s%c"), buf, (c == col) ? _T('\n') : _T(',')); } } _tprintf(_T("該当:%d件\n"), i); } else { _tprintf(_T("検索に失敗しました\n")); _tprintf(_T("[%s]\n"), stmttext); } SQLFreeHandle(SQL_HANDLE_STMT, hstmt); } // 終了処理 SQLDisconnect(hdbc); SQLFreeHandle(SQL_HANDLE_DBC, hdbc); SQLFreeHandle(SQL_HANDLE_ENV, henv); return 0; } }} 出力 町域名の一部(Ctrl-Zで終了)>清原 09201,32132,3213231,トチギケン,ウツノミヤシ,キヨハラコウギョウダンチ,栃木県,宇都宮市,清原工業団地,0, 0,0,0,0,0 09201,32132,3213223,トチギケン,ウツノミヤシ,キヨハラダイ,栃木県,宇都宮市,清原台,0,0,1,0,0,0 該当:2件 町域名の一部(Ctrl-Zで終了)>東京 該当:0件 町域名の一部(Ctrl-Zで終了)>^Z

表示オプション

横に並べて表示:
変化行の前後のみ表示: