Firebird e delphi dışında bağlantı yapabilme.

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
veliadiguzel
Üye
Mesajlar: 197
Kayıt: 09 Tem 2003 02:11
Konum: Gebze/Kocaeli
İletişim:

Firebird e delphi dışında bağlantı yapabilme.

Mesaj gönderen veliadiguzel »

S.A.

Aslında yapmak istediğim şu başka bir programlama dili kullanrak (örn.python) firebirde baglanmak mysql de mysql dll lerini kullanarak bu işi yapa biliyorduk 3. parti bileşenler yaygınlaşmadan.

Kod: Tümünü seç

unit UDbfToMysql;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  _libmysq, ComCtrls, StdCtrls, Buttons, fCtrls, Mask, Db, DBTables, Grids,
  DBGrids, fDBCtrls;

type
  TfrmDbfToMysql = class(TForm)
    StatusBar: TStatusBar;
    SelectDB: TBitBtn;
    ListTapDayNo: TBitBtn;
    grdListe: TfsDBGrid;
    tblDbf: TQuery;
    DataSource1: TDataSource;
    tblTapno: TQuery;
    DayMont: TfsMaskEdit;
    fsLabel1: TfsLabel;
    fsDBGrid1: TfsDBGrid;
    DataSource2: TDataSource;
    TapData: TBitBtn;
    SendMysql: TBitBtn;
    Sql: TfsMemo;
    StrGrid: TfsStringGrid;
    Tap_read: TBitBtn;
    fsBitBtn1: TfsBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure SelectDBClick(Sender: TObject);
    procedure ListTapDayNoClick(Sender: TObject);
    procedure TapDataClick(Sender: TObject);
    procedure SendMysqlClick(Sender: TObject);
    procedure Tap_readClick(Sender: TObject);
    procedure fsBitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmDbfToMysql: TfrmDbfToMysql;
  mysqlrec: mysql;
  connected: Integer;
  Host: string;
  User: string;
  Pswd: string;
  Database: string;
implementation

{$R *.DFM}

procedure TfrmDbfToMysql.FormCreate(Sender: TObject);
var
  DayMontStr: string;
begin
  connected := 0;
  Host := 'anamakine';
  User := 'root';
  Pswd := '';
  Database := 'Kroman';
  mysql_connect(@mysqlrec, Pchar(Host), Pchar(User), Pchar(Pswd));
  if mysqlrec._net.last_errno = 0 then
  begin
    StatusBar.Panels[1].Text := ' Bağlandı';
    connected := 1;
  end
  else
  begin
    ShowMessage(IntToStr(mysqlrec._net.last_errno));
    StatusBar.Panels[1].Text := ' Olumsuz';
    end;
  DayMontStr := DateToStr(Date - 1);
  DayMont.Text := DayMontStr[1] + DayMontStr[2] + DayMontStr[4] + DayMontStr[5];
end;

procedure TfrmDbfToMysql.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  if connected = 1 then mysql_close(@mysqlrec);
end;

procedure TfrmDbfToMysql.SelectDBClick(Sender: TObject);
var
  check: Integer;
begin
  if connected = 1 then
  begin
    check := mysql_select_db(@mysqlrec, Pchar(Database));
    if check <> 0 then
    begin
      ShowMessage(mysqlrec._net.last_error);
      StatusBar.Panels[3].Text := ' Veri tabanı seçilemedi [ ' + Database + ' ]';
    end
    else StatusBar.Panels[3].Text := ' Veri tabanı seçildi [ ' + Database + ' ]';
  end;
end;

procedure TfrmDbfToMysql.ListTapDayNoClick(Sender: TObject);
begin
  with tblTapNo do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select DISTINCT(SPUR1) from L025' + DayMont.Text + '.dbf');
    Open;
  end;
  caption := IntToStr(tblTapno.Fields[0].Value);
end;

procedure TfrmDbfToMysql.TapDataClick(Sender: TObject);
var tapno: string;
begin
  with tblDbf do
  begin
    tapno := IntToStr(tblTapNo.Fields[0].Value);
    SQL.Clear;
    SQL.Add('select * from L025' + DayMont.Text + '.dbf where SPUR1=' + tapno);
    Open;
    Last;
  end;

end;

function FormatDate(Date: string): string;
begin
  Result := Date[10]+Date[9]+Date[8]+Date[7]+'-'+Date[4]+Date[5]+'-'+Date[1]+Date[2];
  end;

procedure TfrmDbfToMysql.SendMysqlClick(Sender: TObject);
var
  query: string;
begin
  query := format('insert into tap_reports (' +
    'tap_id,' +
    'tap_date,' +
    'tap_no,' +
    'tap_day_no,' +
    'tap_power,' +
    'tap_start,' +
    'tap_stop,' +
    'tap_on_power,' +
    'tap_to_tap_time,' +
    'tap_temperature_furnace,' +
    'tap_temperature_pota,' +
    'tap_weight) values(' +
    'NULL,''%s'',''%s'',''%s'',''%s'',''%s:%s'',''%s:%s'',''%s'',''%s'',''%s'',''%s'',''%s'')', [
    FormatDate(tblDbf.FieldbyName('DATUM').Value),
      tblDbf.FieldByName('SPUR0').Value,
      tblDbf.FieldByName('SPUR1').Value,
      tblDbf.FieldByName('SPUR5').Value,
      tblDbf.FieldByName('SPUR16').Value,
      tblDbf.FieldByName('SPUR17').Value,
      tblDbf.FieldByName('SPUR16').Value,
      tblDbf.FieldByName('SPUR17').Value,
      tblDbf.FieldByName('SPUR20').Value,
      tblDbf.FieldByName('SPUR21').Value,
      tblDbf.FieldByName('SPUR7').Value,
      tblDbf.FieldByName('SPUR7').Value,
      tblDbf.FieldByName('SPUR6').Value]);
  Sql.Text := query;
  mysql_query(@mysqlrec, pchar(query));
  if mysqlrec._net.last_errno <> 0 then showmessage(trim(mysqlrec._net.last_error));

end;

procedure TfrmDbfToMysql.Tap_readClick(Sender: TObject);
var
  presults: pmysql_res; //results structure *pointer
  prow: pmysql_row; //row structure *pointer
  row: mysql_row; //Couldnt figure out pointer arithmetic so....you'll see
  i, j: Integer; //Counter vars
  query: string;
begin
  StrGrid.Cells[0, 0] := 'MysqlId';
  StrGrid.Cells[1, 0] := 'Tarih';
  StrGrid.Cells[2, 0] := 'Döküm No';
  StrGrid.Cells[3, 0] := 'Günlük';
  StrGrid.Cells[4, 0] := 'Güç';
  StrGrid.Cells[5, 0] := 'Başlangıç';
  StrGrid.Cells[6, 0] := 'Bitiş';
  StrGrid.Cells[7, 0] := 'Enerjili';
  StrGrid.Cells[8, 0] := 'Dökümden Döküme';
  StrGrid.Cells[9, 0] := 'Ocak Sıcaklık';
  StrGrid.Cells[10, 0] := 'Pota Sıcaklık';
  StrGrid.Cells[11, 0] := 'Tonaj';
  presults := nil;
  query := Format('select * from tap_reports where tap_date=''%s'' order by tap_day_no', ['2002-06-26']);
  try
    mysql_query(@mysqlrec, pchar(query));
    presults := mysql_store_result(@mysqlrec);
    if mysqlrec._net.last_errno <> 0 then showmessage(trim(mysqlrec._net.last_error));
    StrGrid.RowCount := presults^.row_count+1;
    for i := 1 to presults^.row_count do begin
      prow := mysql_fetch_row(presults);
      row := prow^; //Only way I could figure out to use an index into a MYSQL_ROW struct
      for j := 0 to presults^.field_count - 1 do begin
        StrGrid.Cells[j, i] := StrPas(row[j]); // Index into row for fields
      end; // j
    end; // i
  finally
    mysql_free_result(presults);
  end;
end;

procedure TfrmDbfToMysql.fsBitBtn1Click(Sender: TObject);
begin
Caption:=FormatDate(DateToStr(now));
end;

end.

çok eskiden yukardaki gibi bir program yazmıştık dbf ten verileri mysql atıyordu oradanda web sayfasında bakıyorduk.

Firebird için bu şekilde bir kaynak mevcutmu onu merak ettim.

Not:işin aslı bazı uygulamaları taşıya bildiklerimizi pardus'a taşımak.
yavaş yavaş pardusa geçmek.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Firebird'e pek çok yerden bağlantı yapabiliyorsunuz : .net, php, ODBC vs. Phyton'dan da bağlanabilirsiniz.

Phyton hakkında bilgim yok ama google'da "firebird phyton" diye ufak bir araştırma yaptım, pek çok sonuç çıktı. Mesela : http://kinterbasdb.sourceforge.net/

Kolay gelsin.
Kullanıcı avatarı
veliadiguzel
Üye
Mesajlar: 197
Kayıt: 09 Tem 2003 02:11
Konum: Gebze/Kocaeli
İletişim:

Mesaj gönderen veliadiguzel »

teşekkürler ilginize ben uğraşan ilgilenen arkadaş varsa diye biraz beleş bilgi mantığıyla hareket ettim Hakkınızı helal edin.
Cevapla