Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-04-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Veamos, esto es fácil, te he preparado un sencillo proyecto y te lo adjunto aquí.
No sé qué versión usas de firebird, yo ahora mismo tengo la 2.5 y no existen los campos boolean, así que utilizo integer con 0/1 (0=false 1=true)
Código:
CREATE TABLE PRUEBAS (
  ID BIGINT DEFAULT 0 NOT NULL,
  MYINT INTEGER DEFAULT 0 NOT NULL,
  MYFLOAT FLOAT DEFAULT 0 NOT NULL,
  MYBOOL integer DEFAULT 0 NOT NULL,
  MYSTRING CHAR(1) DEFAULT '!' NOT NULL);
Luego, en el proyecto te he corregido algunas cosas y en lugar de crear dinámicamente los componentes, los he creado en tiempo de diseño.
Fíjate en los parámetros del IBDatabase y en los del IBTransaction.
El IBDatabase le pongo la propiedad "login prompt" a false, para que no pregunte el password cada vez.

Código:
user_name=sysdba
password=masterkey
Y los parámetros del IBTransaction, elijo "Read commited" y automáticamente se rellenan estos parámetros:

Código:
read_committed
rec_version
nowait
Conecto a la BD en el oncreate y desconecto en el onclose. El código es este:

Código Delphi [-]
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IBDatabase, IBQuery, IBSQL, DB, IBCustomDataSet;

type
  TForm2 = class(TForm)
    Button1: TButton;
    IBDatabase1: TIBDatabase;
    IBTransaction1: TIBTransaction;
    IBQuery1: TIBQuery;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
Var
  I, J:Integer;
  dIni, dFin : Double;
Begin
  dIni := now();
   
  IBQuery1.Close;
  IBQuery1.SQL.Text := 'INSERT INTO Pruebas (Id, MyInt, MyFloat, MyBool, MyString) VALUES (:Id, :MyInt, :MyFloat, :MyBool, :MyString)';
  IBQuery1.Prepare;
  try
    For I := 0 To 9 Do
    Begin
      For J := 1 To 10000 Do
      Begin
        IBQuery1.Params.ParamByName('id').AsInteger := i *10000 +j;
        IBQuery1.Params.ParamByName('MyInt').AsInteger := Random(1000);
        IBQuery1.Params.ParamByName('MyFloat').AsFloat := Random * 1000;
        IBQuery1.Params.ParamByName('MyBool').AsInteger := Random(2);
        IBQuery1.Params.ParamByName('MyString').AsString := Char(Random(25) + 65);
        IBQuery1.ExecSQL;
      End;
      IBQuery1.Transaction.CommitRetaining;
    end;
  finally
    dFin := now();
  end;

  ShowMessage( FloatToStr(dFin-dIni) );

End;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if IBTransaction1.InTransaction then
    IBTransaction1.Commit;
  IBTransaction1.Active:=False;
  IBDatabase1.Close;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  IBDatabase1.Connected:=true;
  IBTransaction1.Active:=true;
end;

end.
Y si lo ejecutas, obviamente, esto es una broma para firebird, en mi equipo tarda menos de 2 segundos.
Archivos Adjuntos
Tipo de Archivo: zip test.zip (1,70 MB, 1 visitas)
Responder Con Cita
  #2  
Antiguo 30-04-2023
ElDuc ElDuc is offline
Miembro
 
Registrado: jul 2004
Posts: 197
Poder: 20
ElDuc Va por buen camino
Buenos días,

Lo he probado y funciona perfectamente.

Muchísimas gaciass.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Insercion masiva desde Paradox a Firebird MartinS SQL 5 22-12-2011 14:55:10
insercion masiva Alfredo Firebird e Interbase 3 12-11-2008 20:34:46
Insercion masiva de una BD a otra BD oscjae Firebird e Interbase 5 15-12-2006 20:25:49
Insercion masiva de registros MUY LENTA Balda Firebird e Interbase 10 24-03-2004 21:40:21
Inserción masiva en MySQL Morfo MySQL 3 09-01-2004 18:05:33


La franja horaria es GMT +2. Ahora son las 12:52:48.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi