簡體   English   中英

Delphi ListBox到具有特定字符串的文本文件

[英]Delphi ListBox to a Text file with a specific string

我對Delphi還是很陌生,每天都在學習新事物。

我想做的是將多個MySQL查詢生成為.txt,可以在需要時備份該查詢。

基本上我有以下設置。

一個VCL程序,當前只需單擊一個按鈕,即可捕獲我的一個數據庫中存在的表的列表。

這些表列在一個ListBox中,並提供了我所擁有的總表數。

現在,我將如何執行以下操作:

我希望它捕獲ListBox中第一個項目的名稱,然后創建一個.txt文件,並將該項目的名稱插入特定的文本字符串,例如:

mysqldump -uroot -pxxxx -D[]database [tablename] > [tablename]

它在[]的部分中,我需要將ListBox中的項目插入那里,並需要將其重復到下一次。

我需要249個表來生成這些查詢,有人建議我可以做一個Delphi應用程序,該應用程序可以快速,自動化地完成。 它基本上是針對大型表轉儲然后導入的。

我知道這真的很漫長,只是在尋找一些有關如何執行此操作的指南和技巧。

我在本地執行此操作,我不希望使用myDAC或FireDAC,我希望在本地完成此操作,而無需通過MySQL或類似方式訪問數據庫。 只希望它生成對.txt文件的查詢。

嘗試這樣的事情:

var
  DBName, TableName: string;
  SL: TStringList;
begin
  DBName := 'yourdbname';
  TableName := ListBox1.Items[0];
  SL := TStringList.Create;
  try
    SL.Add(Format('mysqldump -uroot -pxxxx -D%s %s > %1:s', [DBName, TableName]));
    SL.SaveToFile('c:\folder\query.txt');
  finally
    SL.Free;
  end;
end;

如果我理解正確,那么您就有一個TListBox ,其中包含要創建查詢的表名。 你沒有

在這種情況下,您需要這樣的事情:

var F : TexFile;
    I : integer;
begin
  AssignFile(F, 'queries.txt');
  Rewrite(F);
  for I := 0 to ListBox1.Items.Count - 1 do
    Writeln(F, 'mysqldump -uroot -pxxxx -D[database] ['+ListBox1.Items[I]+'] > ['+ListBox1.Items[I]+']');
  CloseFile(F);
end;

為了使字符串像這樣,我建議使用format函數。 您只需要SysUtils單元。

它將使您的代碼如下所示:

Table1 := 'FirstTable';
Table2 := 'SecondTable';
Format('mysqldump -uroot -pxxxx -D[]database %s > %s', [Table1, Table2]);
//Results in mysqldump -uroot -pxxxx -D[]database FirstTable > SecondTable

只需將Table1Table2替換為列表框中所選項目的文本即可。

希望這對您有幫助:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM