ホーム > カテゴリ > Delphi・Lazarus >

LazarusでMySQLにアクセスする

LazarusでMySQL8.0(2018年4月版)にODBC経由でSQLを投げてみました。Lazarusの最新版は1.8.2で2018年2月版です。ですので、ネイティブはMySQL5.7までの対応となっています。

ネイティブの方が確実に高速ですが、とりあえずODBCでの接続テストです。

事前準備

MySQLのインストール、ODBC設定などはMySQLのインストールからコマンド操作(ユーザ/データベース/テーブルの作成)やODBC設定をご覧下さい。

実行前

実行後

ソース

実行ボタンを押したらMySQLからデータを取得して、メモに表示します。

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, sqldb, odbcconn, FileUtil, Forms,
  Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

// 元のコード
// http://wiki.freepascal.org/ODBCConn#DSN_example
procedure TForm1.Button1Click(Sender: TObject);
var
  S: String;
  conn : TODBCConnection;
  query: TSQLQuery;
  transaction: TSQLTransaction;
begin
  conn := TODBCCOnnection.Create(nil);
  query := TSQLQuery.Create(nil);
  transaction := TSQLTransaction.Create(nil);

  try
    try

      // データ ソース(ODBC)に登録したData Source Name(DSN)を指定する
      conn.DatabaseName := 'odbc_test';
      // データ ソース(ODBC)側で設定済みならば入力不要です。
      // conn.UserName:= 'test';
      // conn.Password:= '1234567890';

      // SQLはSELECTのみなのに何故かトランザクションが必要らしいです。
      conn.Transaction := transaction;
      query.DataBase := conn;

      query.SQL.Text := 'select no,title from mst_dummy';
      query.Open;
      S := '';
      while not query.EOF do
      begin
        S := S + query.FieldByName('title').AsString + #13#10;
        query.Next;
      end;
    finally
      query.Free;
      transaction.Free;
      conn.Free;
    end;
  except
    on E: Exception do
      ShowMessage(E.message);
  end;
  Memo1.Text:= S;
end;

end.

元コード http://wiki.freepascal.org/ODBCConn#DSN_example

参考サイト

ODBCConn
Portal:Databases





関連記事



公開日:2018年04月25日
記事NO:02638