Browse Source

本地数据库的修改

lqq 9 years ago
parent
commit
1b0303469a

File diff suppressed because it is too large
+ 1 - 1
AppCom/AppCentreCom.dproj


BIN
AppCom/AppCentreCom.res


File diff suppressed because it is too large
+ 1 - 1
CA/CA.dproj


BIN
CA/CA.res


File diff suppressed because it is too large
+ 1 - 1
COM/RealICQCOMInterfaces/RealICQCOMInterfaces.dproj


BIN
COM/RealICQCOMInterfaces/RealICQCOMInterfaces.res


File diff suppressed because it is too large
+ 1 - 1
Client/Lxtalk.dproj


BIN
Client/Lxtalk.res


+ 47 - 32
Controls/RealICQClient/RealICQDBHistory.pas

@@ -9,6 +9,10 @@
 
 
 
+
+
+
+
 unit RealICQDBHistory;
 
 interface
@@ -109,6 +113,7 @@ type
     procedure SetDBFileName(Value: string);
     procedure SetLoginName(Value: string);
     procedure CheckFieldTeamID;
+    function AddColumn(ATable, AColumn, TypeName, DefaultValue: string): Boolean;
   protected
   public
     constructor Create;
@@ -740,7 +745,7 @@ begin
   ADODataSet := TADODataSet.Create(nil);
   try
     ADODataSet.Connection := FADOConnection;
-    ADODataSet.CommandText := 'SELECT Top 1000 Sender,Receiver FROM Messages WHERE (Receiver = ''' + AReceiver + ''' or Sender=''' + AReceiver + ''') AND TeamID = ''-1'' ORDER BY SendDateTime DESC';
+    ADODataSet.CommandText := 'SELECT Top 1000 Sender,Receiver FROM Messages WHERE (Receiver = ''' + AReceiver + ''' or Sender=''' + AReceiver + ''') AND TeamID = ''-1'' ORDER BY ID DESC';
 
     ADODataSet.Open;
     while not ADODataSet.Eof do
@@ -1301,51 +1306,61 @@ begin
   OpenDBConntion;
   FDesKey := Copy(MD5En(FLoginName), 25, 8);
   UpdateMsgDB;
+end;
+
+function TRealICQDBHistory.AddColumn(ATable, AColumn, TypeName, DefaultValue: string): Boolean;
+var
+  ADOQuery: TADOQuery;
+  sqlStr: string;
+  AField: TField;
+begin
+  ADOQuery := TADOQuery.Create(nil);
+  ADOQuery.Connection := FADOConnection;
+
+  try
+    ADOQuery.SQL.Text := Format('SELECT * FROM %s WHERE 1 = 2;', [ATable]);
+    ADOQuery.Open;
+    if ADOQuery.FindField(AColumn) = nil then
+    begin
+      ADOQuery.SQL.Text := Format('ALTER TABLE %s Add COLUMN %s %s;', [ATable, AColumn, TypeName]);
+      ADOQuery.ExecSQL;
+      ADOQuery.SQL.Text := Format('Update %s Set %s=%s;', [ATable, AColumn, DefaultValue]);
+      ADOQuery.ExecSQL;
+    end;
+    ADOQuery.Close;
+  except
+    on Ex: Exception do
+    begin
+      Error(Ex.Message, 'TRealICQDBHistory.AddColumn');
+      FreeAndNil(ADOQuery);
+    end;
+  end;
+  FreeAndNil(ADOQuery);
 end;
 
+
 //Éý¼¶ÏûÏ¢Êý¾Ý¿â
 procedure TRealICQDBHistory.UpdateMsgDB;
 var
   ADOCommand: TADOCommand;
 begin
   try
-    ADOCommand := TADOCommand.Create(nil);
-    try
-      ADOCommand.Connection := FADOConnection;
-      try
-        ADOCommand.CommandText := 'delete from Messages where teamid = "" or teamid is null ';
-        ADOCommand.Execute;
-
-        ADOCommand.CommandText := 'update Messages set [Sender] = Right([Sender], Len([Sender]) - Instr([Sender],"+")), [Receiver] = Right([Receiver], Len([Receiver]) - Instr([Receiver],"+")) ';
-        ADOCommand.Execute;
-
-        ADOCommand.CommandText := 'ALTER TABLE Messages Add COLUMN IsPrivateMessage bit ';
-        ADOCommand.Execute;
-
-        ADOCommand.CommandText := 'Update Messages Set IsPrivateMessage=false';
-        ADOCommand.Execute;
-
-        ADOCommand.CommandText := 'ALTER TABLE Messages Add COLUMN IsRead bit ';
-        ADOCommand.Execute;
-
-        ADOCommand.CommandText := 'Update Messages Set IsRead=true';
-        ADOCommand.Execute;
-      except
-        //
-
-
-
-      end;
-    finally
-      ADOCommand.Free;
-    end;
-    ADOCommand.Free;
+    ADOCommand := TADOCommand.Create(nil);           
+    ADOCommand.Connection := FADOConnection;
+    ADOCommand.CommandText := 'delete from Messages where teamid = "" or teamid is null ';
+    ADOCommand.Execute;
+    ADOCommand.CommandText := 'update Messages set [Sender] = Right([Sender], Len([Sender]) - Instr([Sender],"+")), [Receiver] = Right([Receiver], Len([Receiver]) - Instr([Receiver],"+")) ';
+    ADOCommand.Execute;
+    AddColumn('Messages', 'IsPrivateMessage', 'bit', 'false');
+    AddColumn('Messages', 'IsRead', 'bit', 'true');
   except
     on E: Exception do
     begin
+      ADOCommand.Free;
       Error(E.Message, 'TRealICQDBHistory.UpdateMsgDB');
     end;
   end;
+  ADOCommand.Free;
 end;
 
 //------------------------------------------------------------------------------

File diff suppressed because it is too large
+ 1 - 1
Controls/RealICQComponents.dproj


BIN
Controls/RealICQComponents.res


File diff suppressed because it is too large
+ 1 - 1
Log/Logger.dproj


BIN
Log/Logger.res


BIN
ZWT/MessageHistory.DAT