Lookup.H
上传用户:benben_wyd
上传日期:2010-02-26
资源大小:1229k
文件大小:3k
源码类别:

书籍源码

开发平台:

Visual C++

  1. // Lookup.H : Declaration of the CLookup class
  2. #ifndef __LOOKUP_H_
  3. #define __LOOKUP_H_
  4. class CLookupAccessor
  5. {
  6. public:
  7. TCHAR m_Name[62]; //Reduce size.  1024 is not necessary.
  8. TCHAR m_Description[51];
  9. TCHAR m_Assignment[51];
  10. double m_Score;
  11. BEGIN_COLUMN_MAP(CLookupAccessor)
  12. COLUMN_ENTRY(1, m_Name)
  13. COLUMN_ENTRY(2, m_Description)
  14. COLUMN_ENTRY(3, m_Assignment)
  15. COLUMN_ENTRY(4, m_Score)
  16. END_COLUMN_MAP()
  17. DEFINE_COMMAND(CLookupAccessor, _T(" 
  18. SELECT 
  19. Name, 
  20. Description, 
  21. Assignment, 
  22. Score  
  23. FROM Lookup"))
  24. // You may wish to call this function if you are inserting a record and wish to
  25. // initialize all the fields, if you are not going to explicitly set all of them.
  26. void ClearRecord()
  27. {
  28. memset(this, 0, sizeof(*this));
  29. }
  30. };
  31. class CLookup : public CCommand<CAccessor<CLookupAccessor> >
  32. {
  33. public:
  34. HRESULT findUser(BSTR uid, BSTR pwd)
  35. {
  36. char userID[51];
  37. char password[51];
  38. sprintf(userID, "%S", uid);
  39. sprintf(password, "%S", pwd);
  40. return findUser(userID, password);
  41. }
  42. HRESULT findUser(char *userID, char *password) {
  43. if (strlen(userID) > 50 || strlen(password) > 50) {
  44. ::MessageBox(NULL, 
  45. "User name and password cannot be more than 50 characters",
  46. "Could not find user", MB_OK);
  47. return -1;
  48. }
  49. strcpy(m_strUser, userID);
  50. strcpy(m_strPassword, password);
  51. return Open();
  52. }
  53. HRESULT Open()
  54. {
  55. HRESULT hr;
  56. hr = OpenDataSource();
  57. if (FAILED(hr))
  58. return hr;
  59. return OpenRowset();
  60. }
  61. HRESULT OpenDataSource()
  62. {
  63. HRESULT hr;
  64. CDataSource db;
  65. CDBPropSet dbinit(DBPROPSET_DBINIT);
  66. dbinit.AddProperty(DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, false); dbinit.AddProperty(DBPROP_INIT_DATASOURCE, OLESTR("Classes")); dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4); dbinit.AddProperty(DBPROP_INIT_LCID, (long)1033); hr = db.Open(_T("MSDASQL"), &dbinit);
  67. if (FAILED(hr))
  68. return hr;
  69. return m_session.Open(db);
  70. }
  71. HRESULT OpenRowset()
  72. {
  73. //The rest of this function was added by Chuck Wood
  74. //Allow 512 bytes for the new SQL Command
  75. char newSQL[512];
  76. char *SQLCommand;
  77. GetDefaultCommand((const char **) &SQLCommand);
  78. strcpy(newSQL, SQLCommand); //Get the default SQL
  79. strcat(newSQL, " WHERE UserID = '"); //Add the filter
  80. strcat(newSQL, m_strUser);
  81. strcat(newSQL, "' AND Password = '");
  82. strcat(newSQL, m_strPassword);
  83. strcat(newSQL, "'");
  84. strcat(newSQL, " ORDER BY Description, Assignment"); //Add the sort
  85. //Message box for debugging
  86. // ::MessageBox(NULL, newSQL, "Lookup.h", MB_OK);
  87. return CCommand<CAccessor<CLookupAccessor> >::Open(m_session, newSQL);
  88. }
  89. private:
  90. CSession m_session;
  91. char   m_strUser[50];
  92. char   m_strPassword[50];
  93. };
  94. #endif // __LOOKUP_H_