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

📄 umain.~pas

📁 用delphi连接mysql的组件
💻 ~PAS
字号:
unit uMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, uMysqlHelpers, uMysqlClient, uMysqlStreams,db,
  ADODB;

type
  TfrmMain = class(TForm)
    btnLoad: TButton;
    btnSave: TButton;
    btnCreate: TButton;
    edInFileName: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    btnInSelect: TButton;
    edOutFileName: TEdit;
    btnOutSelect: TButton;
    dlgOutFile: TSaveDialog;
    dlgInFile: TOpenDialog;
    chkOverwrite: TCheckBox;
    Button1: TButton;
    Edit1: TEdit;
    ADOConnection1: TADOConnection;
    Button2: TButton;
    ADOCommand1: TADOCommand;
    Edit2: TEdit;
    procedure btnLoadClick(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
    procedure btnCreateClick(Sender: TObject);
    procedure btnInSelectClick(Sender: TObject);
    procedure btnOutSelectClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}

procedure TfrmMain.btnCreateClick(Sender: TObject);
var
  _c: TMysqlClient;
  _ex: boolean;
begin
  { create a client }
  _c:= TMysqlClient.create;
  try
    { connect to the server }
    _c.connect('192.168.0.2','dedes', '123', 'test');
    if _c.Connected then
      begin
        { insert a new row }
        _c.query('create table mytable(img mediumblob)', true, _ex);
        { check the success }
        if _ex then
          ShowMessage('Table succesfully created.')
        else
          ShowMessage('Failed to create the table: ' + _c.LastError);
        _c.close;
      end;
  finally
    { clean-up }
    _c.free;
  end;
end;

procedure TfrmMain.btnLoadClick(Sender: TObject);
var
  _c: TMysqlClient;
  _ex: boolean;
  fs:string;
  i:integer;
  dt:tdatetime;
begin
  if (trim(edInFileName.Text) = '') then
    begin
      ShowMessage('please select an input file');
      exit;
    end;
  { create a client }
    fs:=format('insert into mytable values ('+inttostr(i)+',"%s")',[FileToMysqlString(edInFileName.Text)]);
  _c:= TMysqlClient.create;
  try
    { connect to the server }
    _c.connect('192.168.0.2','dedes', '123', 'test');
//    _c.connect('localhost','root', '', 'test');
  dt:=now;
    if _c.Connected then
      begin
        { insert a new row }
        _c.query('Set AUTOCOMMIT = 0', true, _ex);

        for i:=1 to 500 do
        _c.query(fs, true, _ex);
        { check the success }
        dt:=now-dt;
        edit1.Text:=DateTimeToStr(dt);
        if _ex then
          ShowMessage('File succesfully inserted.')
        else
          ShowMessage('Failed to insert into the table: ' + _c.LastError);
        _c.close;
      end;
  finally
    { clean-up }
    _c.free;
  end;
end;

procedure TfrmMain.btnSaveClick(Sender: TObject);
var
  _c: TMysqlClient;
  _r: TMysqlResult;
  _ex: boolean;
begin
  if (trim(edOutFileName.Text) = '') then
    begin
      ShowMessage('please select an output file');
      exit;
    end;
  { create a client }
  _c:= TMysqlClient.create;
  try
    { connect to the server }
    _c.connect('192.168.0.2','dedes', '123', 'test');
//    _c.connect('localhost','root', '', 'test');
    if _c.Connected then
      begin
        { get a result set }
        _r:= _c.query('select img from mytable', true, _ex);
        if (_r <> nil) then
          try
            { if we have anything }
            if (_r.RowsCount > 0) then
              begin
                { make sure we know the fields sizes }
                _r.HasLengths:= true;
                { save the field to the file }
                MysqlStringToFile(_r.FieldValue(0), _r.FieldLenght(0), edOutFileName.Text, chkOverwrite.Checked);
              end
            else
              ShowMessage('The select result is empty');
          finally
            _r.Free;
          end
        else
          ShowMessage('Failed to select from the table: ' + _c.LastError);
        _c.close;
      end;
  finally
    { clean-up }
    _c.free;
  end;
end;

procedure TfrmMain.btnInSelectClick(Sender: TObject);
begin
  if dlgInFile.Execute then
    edInFileName.Text:= dlgInFile.FileName;
end;

procedure TfrmMain.btnOutSelectClick(Sender: TObject);
begin
  if dlgOutFile.Execute then
    edOutFileName.Text:= dlgOutFile.FileName;
end;

procedure TfrmMain.Button1Click(Sender: TObject);
var
  _c: TMysqlClient;
  _r: TMysqlResult;
  _ex: boolean;
  i:integer;
  dt:tdatetime;
  fs:string;
begin
  dt:=now;
  {if (trim(edInFileName.Text) = '') then
    begin
      ShowMessage('please select an input file');
      exit;
    end;
  { create a client }
  _c:= TMysqlClient.create;
  try
    { connect to the server }
    _c.connect('192.168.0.2','dedes', '123', 'test');
//    _c.connect('localhost','root', '', 'test');
    if _c.Connected then
      begin
        { insert a new row }
        //fs:=format('insert into mytable values ('+inttostr(i)+',"%s")',[FileToMysqlString(edInFileName.Text)]);
        {for i:=0 to 1000 do
        _c.query(fs, true, _ex);    //0:48
        { check the success }
        //for i:=0 to 1000 do
        _c.query('insert into mytablea select null,'+inttostr(i)+'', true, _ex);  //1:35}
        dt:=now-dt;
        edit1.Text:=DateTimeToStr(dt);
        if _ex then
          ShowMessage('File succesfully inserted.')
        else
          ShowMessage('Failed to insert into the table: ' + _c.LastError);
        _r:= _c.query('select last_insert_id()', true, _ex);
        if (_r <> nil) then
          try
            { if we have anything }
            if (_r.RowsCount > 0) then
              begin
                { make sure we know the fields sizes }
                _r.HasLengths:= true;
                { save the field to the file }
                edit2.Text:= _r.FieldValue(0);
              end
            else
              ShowMessage('The select result is empty');
          finally
            _r.Free;
          end;
        _c.close;
      end;
  finally
    { clean-up }
    _c.free;
  end;
end;

procedure TfrmMain.Button2Click(Sender: TObject);
var
  dt:tdatetime;
  i:integer;
begin
  //ADOConnection1.ConnectionString:= 'driver=SQL server;server=BS-SERVER;uid=SA;pwd=DIRBS1222;database=SDYTEST;';   //ado+mysql  7:00
  ADOConnection1.Open;
  dt:=now;
  ADOCommand1.CommandText:='insert into mytablea values ('+inttostr(i)+')';
  for i:=1 to 10000 do ADOCommand1.Execute;
        dt:=now-dt;
        edit1.Text:=DateTimeToStr(dt);

end;

end.

⌨️ 快捷键说明

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