MFC_ex.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:3k
源码类别:

模拟服务器

开发平台:

C/C++

  1. // MFC_ex.cpp : Defines the entry point for the console application.
  2. //
  3. #include "stdafx.h"
  4. #include "MFC_ex.h"
  5. #include <iostream>
  6. #include <iomanip>
  7. #include <mysql++>
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // The one and only application object
  15. CWinApp theApp;
  16. using namespace std;
  17. int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
  18. {
  19. int nRetCode = 0;
  20. // initialize MFC and print and error on failure
  21. if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
  22. {
  23. // TODO: change error code to suit your needs
  24. cerr << _T("Fatal Error: MFC initialization failed") << endl;
  25. nRetCode = 1;
  26. }
  27. else
  28. {
  29. // TODO: code your application's behavior here.
  30.     // The full format for the Connection constructor is
  31.     // Connection(cchar *db, cchar *host="", 
  32.     //            cchar *user="", cchar *passwd="") 
  33.     // You may need to specify some of them if the database is not on
  34.     // the local machine or you database username is not the same as your
  35.     // login name, etc..
  36.     try {
  37.    Connection con("mysql_cpp_data");
  38.    Query query = con.query();
  39.    // This creates a query object that is bound to con.
  40.   
  41.    query << "select * from stock";
  42.    // You can write to the query object like you would any other ostrem
  43.   
  44.    Result res = query.store();
  45.    // Query::store() executes the query and returns the results
  46.   
  47.    cout << "Query: " << query.preview() << endl;
  48.    // Query::preview() simply returns a string with the current query
  49.    // string in it.
  50.   
  51.    cout << "Records Found: " << res.size() << endl << endl;
  52.     
  53.    Row row;
  54.    cout.setf(ios::left);
  55.    cout << setw(17) << "Item" 
  56.    << setw(4)  << "Num"
  57.    << setw(7)  << "Weight"
  58.    << setw(7)  << "Price" 
  59.    << "Date" << endl
  60.    << endl;
  61.     
  62.    Result::iterator i;
  63.    // The Result class has a read-only Random Access Iterator
  64.    for (i = res.begin(); i != res.end(); i++) {
  65.    row = *i;
  66.    cout << setw(17) << row[0] 
  67.    << setw(4)  << row[1] 
  68.    << setw(7)  << row["weight"]
  69.    // you can use either the index number or column name when
  70.    // retrieving the colume data as demonstrated above.
  71.    << setw(7)  << row[3]
  72.    << row[4] << endl;
  73.    }
  74.     } catch (BadQuery er){ // handle any connection 
  75.                            // or query errors that may come up
  76.       cerr << "Error: " << er.error <<  endl;
  77.       nRetCode = -1;
  78.   
  79.     } catch (BadConversion er) {
  80.       // we still need to cache bad conversions incase something goes 
  81.       // wrong when the data is converted into stock
  82.       cerr << "Error: Tried to convert "" << er.data << "" to a ""
  83.     << er.type_name << ""." << endl;
  84.       nRetCode = -1;
  85.     }
  86. }
  87. return nRetCode;
  88. }