BaseDataProvider.pas 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. unit BaseDataProvider;
  2. interface
  3. uses
  4. mybean.core.objects, System.Classes;
  5. type
  6. TBaseDataProvider = class(TMyBeanInterfacedObject)
  7. private
  8. FInited: Boolean;
  9. procedure Init(ATableName: string; ACreateTableSQL: string);
  10. protected
  11. function GetTableName: string; virtual;
  12. function GetCreateTableSQL: string; virtual;
  13. function CreatePointerResult(ASize: Integer): Pointer;
  14. public
  15. constructor Create(); override;
  16. destructor Destroy(); override;
  17. function ReInit: Boolean;
  18. procedure Uninstall; stdcall;
  19. procedure DestroyResult(var AObject); overload;
  20. procedure DestroyResult(AIntfaceOBject: IInterface); overload;
  21. procedure DestroyResult(var APointer: Pointer); overload;
  22. property Inited: Boolean read FInited;
  23. end;
  24. implementation
  25. uses
  26. FireDAC.Comp.Client, BaseDataModule, System.SysUtils, LoggerImport;
  27. { TBaseDataProvider }
  28. constructor TBaseDataProvider.Create;
  29. begin
  30. inherited;
  31. end;
  32. function TBaseDataProvider.CreatePointerResult(ASize: Integer): Pointer;
  33. begin
  34. Result := GetMemory(ASize);
  35. end;
  36. destructor TBaseDataProvider.Destroy;
  37. begin
  38. inherited;
  39. end;
  40. procedure TBaseDataProvider.DestroyResult(var AObject);
  41. begin
  42. if TObject(AObject) <> nil then
  43. FreeAndNil(AObject);
  44. end;
  45. procedure TBaseDataProvider.DestroyResult(AIntfaceOBject: IInterface);
  46. begin
  47. AIntfaceOBject := nil;
  48. end;
  49. procedure TBaseDataProvider.DestroyResult(var APointer: Pointer);
  50. begin
  51. FreeMemory(APointer);
  52. APointer := nil;
  53. end;
  54. function TBaseDataProvider.GetCreateTableSQL: string;
  55. begin
  56. end;
  57. function TBaseDataProvider.GetTableName: string;
  58. begin
  59. end;
  60. procedure TBaseDataProvider.Init(ATableName, ACreateTableSQL: string);
  61. var
  62. list: TStringList;
  63. str: string;
  64. AConnection: TFDCustomConnection;
  65. begin
  66. if BaseDataModel = nil then
  67. begin
  68. FInited := False;
  69. Info('BaseDataModel»¹Î´³õʼ»¯.', 'TBaseDataProvider.Init');
  70. Exit;
  71. end;
  72. if (ATableName = '') or (ACreateTableSQL = '') then
  73. Exit;
  74. AConnection := BaseDataModel.GetConnection;
  75. if AConnection = nil then
  76. Exit;
  77. list := TStringList.Create;
  78. try
  79. AConnection.GetTableNames('','','',list);
  80. for str in list do
  81. if string.Compare(str, ATableName, true) = 0 then
  82. begin
  83. FInited := True;
  84. Exit;
  85. end;
  86. AConnection.ExecSQL(ACreateTableSQL);
  87. FInited := True;
  88. finally
  89. FreeAndNil(list);
  90. BaseDataModel.GiveBackConnection(AConnection);
  91. end;
  92. end;
  93. function TBaseDataProvider.ReInit: Boolean;
  94. begin
  95. if FInited then
  96. begin
  97. Result := FInited;
  98. Exit;
  99. end;
  100. Init(GetTableName, GetCreateTableSQL);
  101. Result := FInited;
  102. end;
  103. procedure TBaseDataProvider.Uninstall;
  104. begin
  105. FInited := False;
  106. end;
  107. end.