level 8
新手上路552
楼主
unit Unit1; interface usesWinapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,System.Classes, Vcl.Graphics,Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Data.DB,Datasnap.DBClient; typeTForm1 = class(TForm)cds: TClientDataSet;Button1: TButton;Button2: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);private{ Private declarations }procedure ExportData(const tableNames: string);procedure ImportData(const fileName, tableNames: string);public{ Public declarations }end; varForm1: TForm1; implementation {$R *.dfm} uses untDB; procedure TForm1.Button1Click(Sender: TObject);beginExportData('bas_kind,bas_goods');end; procedure TForm1.Button2Click(Sender: TObject);beginImportData(ExtractFilePath(Application.ExeName) + 'export.sql', 'bas_kind,bas_goods');end; procedure TForm1.ExportData(const tableNames: string);varsql, err: string;sl, tables: TStringList;i, h: Integer;fieldNames, values: string;function GetValue(field: TField): string;begincase field.DataType offtString, ftTimeStamp:beginResult := QuotedStr(field.AsString);end;ftBoolean:begincase field.AsBoolean oftrue: Result := '1';false: Result := '0';end;end;elseif not VarIsNull(field.Value) thenbeginResult := VarToStr(field.Value);endelseResult := 'null';end;end; beginif tableNames = '' thenexit;tables := TStringList.Create;tables.Delimiter := ',';tables.DelimitedText := tableNames;sl := TStringList.Create;sl.Clear;for h := 0 to tables.Count - 1 dobeginsql := 'select * from ' + tables[h];if frmDB.QuerySQL(sql, cds, err) and (not cds.IsEmpty) thenbegincds.First;while not cds.Eof dobeginfieldNames := '';values := '';for i := 0 to cds.FieldCount - 1 dobeginif fieldNames = '' thenbeginfieldNames := cds.Fields[i].FieldName;endelsebeginfieldNames := fieldNames + ',' + cds.Fields[i].FieldName;end;if values = '' thenbeginvalues := GetValue(cds.Fields[i]);endelsebeginvalues := values + ',' + GetValue(cds.Fields[i]);end;end;sl.Add('insert into ' + tables[h] + '(' + fieldNames + ') values (' +values + ')');cds.Next;end;end;end;sl.SaveToFile(ExtractFilePath(Application.ExeName) + 'export.sql');sl.Free;tables.Free;end; procedure TForm1.ImportData(const fileName, tableNames: string);varcmd, tables: TStringList;err, sql: string;i: Integer;beginif (not FileExists(fileName)) or (tableNames = '') thenexit;tables := TStringList.Create;tables.Delimiter := ',';tables.DelimitedText := tableNames;for i := 0 to tables.Count - 1 dobeginsql := 'truncate table ' + tables[i];frmDB.ExecuteSQL(sql, err);end;tables.Free; cmd := TStringList.Create;cmd.LoadFromFile(fileName);frmDB.ExecuteSQL(cmd.Text, err);cmd.Free;end; end.
2015年08月04日 08点08分
1