⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exportsql.pas

📁 MysqlFront的源码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
        TablesCheckListBox.ItemIndex := i;
        StrProgress := 'Table ' + inttostr(tablecounter) + '/' + inttostr(tcount) + ': ' + TablesCheckListBox.Items[i];
        Label2.caption := StrProgress;

        if exportstruc then begin
          if mysql_version < 32320 then begin
            GetResults( 'SHOW FIELDS FROM ' + mainform.mask(TablesCheckListBox.Items[i]), ZQuery3 );
            fieldcount := ZQuery3.FieldCount;
          end else begin
            GetResults('SHOW CREATE TABLE ' + mainform.mask(TablesCheckListBox.Items[i]), ZQuery3 );
          end;
          createquery := '';
          if tofile then begin
            createquery := '#' + crlf;
            createquery := createquery + '# Table structure for table ''' + TablesCheckListBox.Items[i] + '''' + crlf;
            createquery := createquery + '#' + crlf + crlf;
          end;

          if CheckBoxWithDropTable.checked and CheckBoxWithDropTable.Enabled then begin
            if tofile then
              createquery := createquery + 'DROP TABLE IF EXISTS ' + mask(TablesCheckListBox.Items[i]) + ';' + crlf
            else
              dropquery := createquery + 'DROP TABLE IF EXISTS ' + mask(DB2Export) + '.' + mask(TablesCheckListBox.Items[i]) + '' + crlf;
          end;

          if mysql_version < 32320 then begin
            if tofile then
              createquery := createquery + 'CREATE TABLE IF NOT EXISTS ' + mask(TablesCheckListBox.Items[i]) + ' (' + crlf
            else
              createquery := createquery + 'CREATE TABLE IF NOT EXISTS ' + mask(DB2Export) + '.' + mask(TablesCheckListBox.Items[i]) + ' (' + crlf;
          end else begin
            if CheckBoxuseBackticks.checked then
              createquery := createquery + ZQuery3.Fields[1].AsString
            else
              createquery := createquery + stringreplace(ZQuery3.Fields[1].AsString, '`', '', [rfReplaceAll]);
          end;

          if mysql_version < 32320 then begin
            for j := 1 to fieldcount do
            begin
              createquery := createquery + '  ' + mask(ZQuery3.Fields[0].AsString) + ' ' + ZQuery3.Fields[1].AsString;
              if ZQuery3.Fields[2].AsString <> 'YES' then
                createquery := createquery + ' NOT NULL';
              if ZQuery3.Fields[4].AsString <> '' then
                createquery := createquery + ' DEFAULT ''' + ZQuery3.Fields[4].AsString + '''';
              if ZQuery3.Fields[5].AsString <> '' then
                createquery := createquery + ' ' + ZQuery3.Fields[5].AsString;
              if j < fieldcount then
                createquery := createquery + ',' + crlf;
            end;

            // Keys:
            GetResults( 'SHOW KEYS FROM ' + TablesCheckListBox.Items[i], ZQuery3 );
            setLength(keylist, 0);
            keystr := '';
            if ZQuery3.RecordCount > 0 then
              keystr := ',';

            for j := 1 to ZQuery3.RecordCount do
            begin
              which := -1;

              for k:=0 to length(keylist)-1 do
              begin
                if keylist[k].Name = ZQuery3.Fields[2].AsString then // keyname exists!
                  which := k;
              end;
              if which = -1 then
              begin
                setlength(keylist, length(keylist)+1);
                which := high(keylist);
                keylist[which].Columns := TStringList.Create;
                with keylist[which] do // set properties for new key
                begin
                  Name := ZQuery3.Fields[2].AsString;
                  if ZQuery3.Fields[2].AsString = 'PRIMARY' then
                    _type := 'PRIMARY'
                  else if ZQuery3.FieldCount >= 10 then if ZQuery3.Fields[9].AsString = 'FULLTEXT' then
                    _type := 'FULLTEXT'
                  else if ZQuery3.Fields[1].AsString = '1' then
                    _type := ''
                  else if ZQuery3.Fields[1].AsString = '0' then
                    _type := 'UNIQUE';
                end;
              end;
              keylist[which].Columns.add(mask(ZQuery3.Fields[4].AsString)); // add column(s)
              ZQuery3.Next;
            end;
            for k:=0 to high(keylist) do
            begin
              if k > 0 then
                keystr := keystr + ',';
              if keylist[k].Name = 'PRIMARY' then
                keystr := keystr + crlf + '  PRIMARY KEY ('
              else
                keystr := keystr + crlf + '  ' + keylist[k]._type + ' KEY ' + keylist[k].Name + ' (';
              keystr := keystr + implodestr(',', keylist[k].Columns) + ')';
            end;
            createquery := createquery + keystr + crlf + ')';
          end; // mysql_version < 32320

          feldnamen := '';
          if CheckBoxCompleteInserts.Checked then
          begin
            feldnamen := ' (';
            GetResults( 'SHOW FIELDS FROM ' + mainform.mask(TablesCheckListBox.Items[i]), ZQuery3 );
            for k:=1 to ZQuery3.RecordCount do
            begin
              if k>1 then
                feldnamen := feldnamen + ', ';
              feldnamen := feldnamen + mask(ZQuery3.Fields[0].AsString);
              ZQuery3.Next;
            end;
            feldnamen := feldnamen+')';
          end;

          // File:
          if tofile then begin
            createquery := createquery + ';' + crlf;
            wfs(f);
            wfs(f);
            wfs(f, createquery);
          end

          // Another Database
          else if RadioButtonDB.Checked then begin
            if mysql_version >= 32320 then
              ExecQuery( 'USE ' + DB2Export );
            if CheckBoxWithDropTable.checked and CheckBoxWithDropTable.Enabled then
              ExecQuery( dropquery );
            ExecQuery( createquery );
            if mysql_version >= 32320 then
              ExecQuery( 'USE ' + DBComboBox.Text );
          end

          // Another Host / DB:
          else if RadioButtonHost.Checked then begin
            if mysql_version >= 32320 then
              win2export.ExecQuery('USE ' + DB2Export);
            if CheckBoxWithDropTable.checked and CheckBoxWithDropTable.Enabled then
              win2export.ExecQuery(dropquery);
            win2export.ExecQuery(createquery);
          end;

          ProgressBar1.StepIt;
        end;

        // export data:
        if exportdata then
        begin
          GetResults( 'SELECT * FROM ' + mainform.mask(TablesCheckListBox.Items[i]), ZQuery3 );
          if tofile then
          begin
            wfs(f);
            wfs(f);
            wfs(f, '#');
            wfs(f, '# Dumping data for table ''' + TablesCheckListBox.Items[i] + '''');
            wfs(f, '#');
            wfs(f);
          end;
          for j:=1 to ZQuery3.RecordCount do
          begin
            Label2.caption := StrProgress + ' (Record ' + inttostr(j) + ')';
            Application.ProcessMessages;
            if tofile then
              insertquery := 'INSERT INTO ' + mask(TablesCheckListBox.Items[i])
            else
              insertquery := 'INSERT INTO ' + mask(DB2Export) + '.' + mask(TablesCheckListBox.Items[i]);
            insertquery := insertquery + feldnamen;
            insertquery := insertquery + ' VALUES(';
            for k := 0 to ZQuery3.fieldcount-1 do
            begin
              if Not ZQuery3.Fields[k].IsNull then begin
                value := QuotedStr(ZQuery3.Fields[k].AsString);
              end
              else
                value := 'NULL';
              insertquery := insertquery + value;
              if k < ZQuery3.Fieldcount-1 then
                insertquery := insertquery + ', ';
            end;
            insertquery := insertquery + ')';
            if tofile then
              wfs(f, insertquery + ';')
            else if RadioButtonDB.Checked then
              ExecQuery(insertquery)
            else if RadioButtonHost.Checked then
              win2export.ExecQuery(insertquery);
            ZQuery3.Next;
          end;
          ProgressBar1.StepIt;
        end;
      end;
      if ActualDatabase <> '' then
        ExecQuery( 'USE ' + ActualDatabase );
    end;
  FINALLY
    if tofile then f.Free;
    Screen.Cursor := crDefault;
  END;

  close;
end;

procedure TExportSQLForm.RadioButtonDBClick(Sender: TObject);
begin
  if DBComboBox.Items.Count <= 1 then begin
    MessageDLG('There must be more than one database to enable this option.', mtError, [mbOK], 0);
    RadioButtonFile.OnClick(self);
    abort;
  end;
  RadioButtonFile.Checked := false;
  RadioButtonHost.Checked := false;
  RadioButtonDB.Checked := true;
  EditFileName.Enabled := false;
  EditFileName.Color := clBtnFace;
  BitBtn1.Enabled := false;
  ComboBoxODB.Enabled := true;
  ComboBoxODB.Color := clWindow;
  ComboBoxHost.Enabled := false;
  ComboBoxHost.Color := clBtnFace;
  CheckBoxWithUseDB.Enabled := false;
  ComboBoxODB.SetFocus;
end;

procedure TExportSQLForm.RadioButtonFileClick(Sender: TObject);
begin
  RadioButtonFile.Checked := true;
  RadioButtonDB.Checked := false;
  RadioButtonHost.Checked := false;
  EditFileName.Enabled := true;
  EditFileName.Color := clWindow;
  BitBtn1.Enabled := true;
  ComboBoxODB.Enabled := false;
  ComboBoxODB.Color := clBtnFace;
  ComboBoxHost.Enabled := false;
  ComboBoxHost.Color := clBtnFace;
  CheckBoxWithUseDB.Enabled := true;
  EditFileName.SetFocus;
end;


procedure TExportSQLForm.fillcombo_anotherdb(Sender: TObject);
begin
  ComboBoxODB.Items := DBComboBox.Items;
  ComboBoxODB.Items.delete(DBComboBox.ItemIndex);
  if ComboBoxODB.ItemIndex = -1 then
    ComboBoxODB.ItemIndex := 0;
end;

procedure TExportSQLForm.CheckBox1Click(Sender: TObject);
begin
  CheckBoxWithDropTable.Enabled := CheckBox1.checked;
  if CheckBox1.Checked or CheckBox2.Checked then
    Button1.Enabled := true
  else
    Button1.Enabled := false;
end;

procedure TExportSQLForm.RadioButtonHostClick(Sender: TObject);
begin
  if ComboBoxHost.Items.Count = 0 then begin
    MessageDLG('You need at least two open connection-windows to enable this option.', mtError, [mbOK], 0);
    RadioButtonFile.OnClick(self);
    abort;
  end;
  RadioButtonFile.Checked := false;
  RadioButtonDB.Checked := false;
  RadioButtonHost.Checked := true;
  EditFileName.Enabled := false;
  EditFileName.Color := clBtnFace;
  BitBtn1.Enabled := false;
  ComboBoxODB.Enabled := false;
  ComboBoxODB.Color := clBtnFace;
  ComboBoxHost.Enabled := true;
  ComboBoxHost.Color := clWindow;
  CheckBoxWithUseDB.Enabled := false;
  ComboBoxHost.SetFocus;
end;


procedure TExportSQLForm.CheckBox2Click(Sender: TObject);
begin
  if CheckBox1.Checked or CheckBox2.Checked then
    Button1.Enabled := true
  else
    Button1.Enabled := false;
end;



end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -