database.inc 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. {
  2. $Id$
  3. This file is part of the Free Pascal run time library.
  4. Copyright (c) 1999-2000 by Michael Van Canneyt, member of the
  5. Free Pascal development team
  6. TDatabase and related objects implementation
  7. See the file COPYING.FPC, included in this distribution,
  8. for details about the copyright.
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  12. **********************************************************************}
  13. { ---------------------------------------------------------------------
  14. TDatabase
  15. ---------------------------------------------------------------------}
  16. Procedure TDatabase.CheckConnected;
  17. begin
  18. If Not Connected Then
  19. DatabaseError(SNotConnected,Self);
  20. end;
  21. Procedure TDatabase.CheckDisConnected;
  22. begin
  23. If Connected Then
  24. DatabaseError(SConnected,Self);
  25. end;
  26. procedure TDataBase.Loaded;
  27. begin
  28. //!! To be implemented.
  29. end;
  30. procedure TDataBase.SetConnected (Value : boolean);
  31. begin
  32. If Value<>FConnected then
  33. begin
  34. If Value then
  35. DoInternalConnect
  36. else
  37. begin
  38. Closedatasets;
  39. DoInternalDisConnect;
  40. end;
  41. FConnected:=Value;
  42. end;
  43. end;
  44. procedure TDatabase.Notification(AComponent: TComponent; Operation: TOperation);
  45. begin
  46. //!! To be implemented.
  47. end;
  48. constructor TDatabase.Create(AOwner: TComponent);
  49. begin
  50. Inherited Create(AOwner);
  51. end;
  52. destructor TDatabase.Destroy;
  53. begin
  54. Connected:=False;
  55. RemoveDatasets;
  56. FDatasets.Free;
  57. Inherited Destroy;
  58. end;
  59. procedure TDatabase.Close;
  60. begin
  61. Connected:=False;
  62. end;
  63. procedure TDatabase.CloseDataSets;
  64. Var I : longint;
  65. begin
  66. If Assigned(FDatasets) then
  67. begin
  68. For I:=FDatasets.Count-1 downto 0 do
  69. TDBDataset(FDatasets[i]).Close;
  70. end;
  71. end;
  72. procedure TDatabase.RemoveDataSets;
  73. Var I : longint;
  74. begin
  75. If Assigned(FDatasets) then
  76. For I:=FDataSets.Count-1 downto 0 do
  77. TDBDataset(FDataSets[i]).Database:=Nil;
  78. end;
  79. procedure TDatabase.Open;
  80. begin
  81. Connected:=True;
  82. end;
  83. Function TDatabase.GetDataSetCount : Longint;
  84. begin
  85. If Assigned(FDatasets) Then
  86. Result:=FDatasets.Count
  87. else
  88. Result:=0;
  89. end;
  90. Function TDatabase.GetDataset(Index : longint) : TDBDataset;
  91. begin
  92. If Assigned(FDatasets) then
  93. Result:=TDBDataset(FDatasets[Index])
  94. else
  95. DatabaseError(SNoDatasets);
  96. end;
  97. procedure TDatabase.RegisterDataset (DS : TDBDataset);
  98. Var I : longint;
  99. begin
  100. I:=FDatasets.IndexOf(DS);
  101. If I=-1 then
  102. FDatasets.Add(DS)
  103. else
  104. DatabaseErrorFmt(SDatasetRegistered,[DS.Name]);
  105. end;
  106. procedure TDatabase.UnRegisterDataset (DS : TDBDataset);
  107. Var I : longint;
  108. begin
  109. I:=FDatasets.IndexOf(DS);
  110. If I<>-1 then
  111. FDatasets.Delete(I)
  112. else
  113. DatabaseErrorFmt(SNoDatasetRegistered,[DS.Name]);
  114. end;
  115. { ---------------------------------------------------------------------
  116. TDBdataset
  117. ---------------------------------------------------------------------}
  118. Procedure TDBDataset.SetDatabase (Value : TDatabase);
  119. begin
  120. CheckInactive;
  121. If Value<>FDatabase then
  122. begin
  123. If Assigned(FDatabase) then
  124. FDatabase.UnregisterDataset(Self);
  125. If Value<>Nil Then
  126. Value.RegisterDataset(Self);
  127. FDatabase:=Value;
  128. end;
  129. end;
  130. {
  131. $Log$
  132. Revision 1.2 2000-07-13 11:32:56 michael
  133. + removed logs
  134. }