Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-05-2007
Avatar de Albano
Albano Albano is offline
Miembro
 
Registrado: Oct 2004
Ubicación: Nogales, Sonora, Mexico
Posts: 422
Poder: 15
Albano Va por buen camino
Crear base de datos y cargar datos desde delphi

Hola de nuevo!
Uso Delphi 2005 y MySQL 5.0.41.
Quiero crear una base de datos y cargarle datos mediante ficheros .txt desde mi aplicación. Esto lo se hacer desde la linea de comandos de MySQL con las siguientes instrucciones:
Crear base de datos con sus tablas:
Código SQL [-]
CREATE DATABASE IF NOT EXISTS tabada;
USE tabada;
CREATE TABLE departamento (numero int(10), nombre varchar(45));
CREATE TABLE empleados (salario float, puesto varchar(45), nombre varchar(45),  apellido varchar(45), depto int(10), fecha_nac date, numero int(10), direccion varchar(100));
CREATE TABLE proyecto (numero int(10), nombre varchar(45), descripcion varchar(100), fecha_ini date, fecha_fin date);
CREATE TABLE trabajos (num_emp int(10), num_pro int(11));
Cargarle los datos:
Código SQL [-]
LOAD DATA LOCAL INFILE 'c:/tabada/empleados.txt' INTO TABLE empleados;
¿Cómo podría hacerlo desde una aplicación?
Tenía una idea, pero no me esta funcionando:
Puse un TADOQuery y le puse en su propiedad SQL el primer código SQL que puse aqui y me marcó error en el "USE", entonces lo que pensé es en crear con un TADOQuery la base de datos y luego cambiarle la base de datos a mi TADOConnection y luego poner la otra parte del procedimiento, para crear las tablas sobre mi nueva base de datos, pero ahi me marca el siguiente error:
Cita:
ADOQuery2: CommandText does not return a result set.
Creo que no se puede hacer mediante TADOQuery. Como se puede hacer?
Gracias de antemano.
Me conecto mediante TADOConnection.
__________________
"Sé de tal manera y vive una vida tal, que si todos los hombres fueran como tú y vivieran como tú, nuestro mundo sería un paraíso terrenal"
Siempre hazlo con la ayuda de Dios
Responder Con Cita
  #2  
Antiguo 11-05-2007
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: May 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.874
Poder: 21
delphi.com.ar Va por buen camino
Si lo puedes hacer, pero tienes que tener en cuenta un par de cosas. La primera es que ejecutrás código SQL DDL que no retorna datos, y como segundo tienes que tener en cuenta que debes ir ejecutando de a partes el script, línea por línea, buscando el caracter de fin de línea: ";". Existe un componente en las RxLibs para ese fin (No recuerdo si se llama RxDBScript o similar).
Mañana puedo subirte un fragmento de código que tengo donde hago algo muy similar.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 11-05-2007
Avatar de Albano
Albano Albano is offline
Miembro
 
Registrado: Oct 2004
Ubicación: Nogales, Sonora, Mexico
Posts: 422
Poder: 15
Albano Va por buen camino
Gracias Federico, esperaré el código.
__________________
"Sé de tal manera y vive una vida tal, que si todos los hombres fueran como tú y vivieran como tú, nuestro mundo sería un paraíso terrenal"
Siempre hazlo con la ayuda de Dios
Responder Con Cita
  #4  
Antiguo 11-05-2007
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: May 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.874
Poder: 21
delphi.com.ar Va por buen camino
Antes que nada un par de comentarios, por como veo el código evidentemente lo "tomé prestado" del componente de las RxLibs. Lo otro que quiero que sepas, es que hace este código: Se trata de una aplicación que crea paquetes "autoejecutables" donde estos paquetes pueden ser scripts, querys, ejecutables, archivos, fuentes.... Este procedimiento es el asociado a un TADOConnection y te lo recorté un poco para que solo quede lo que necesitas:

Código Delphi [-]
var
  ADOConn: TADOConnection;
  AScript: TStringList;
begin
  ADOConn := TADOConnection.Create(nil);
  try
    with ADOConn do
    begin
      ConnectionString := '.........';
      Open;
      ExecuteScript(AScript, ADOConn, 'GO');
      Close;
    end;
  finally
    ADOConn.Free;
  end;
end


Código Delphi [-]
procedure ExecuteScript(SQL: TStrings; AADOConn: TADOConnection; ASeparator: string);
var
  iRecAffected: Integer;
  StatementNo: Integer;
  S, LastStr, L, T: string;
  SQLFilled: Boolean;
  I, CurrStatement,
  iCol: Integer;
  AQuerySQL: TStringList;
const
  QUERY_FIELD_SEPARATOR = ' ';
begin
  LastStr := '';
  AQuerySQL := TStringList.Create;
  try
    I := 0;
    StatementNo := -1;
    CurrStatement := 0;
    while I < SQL.Count do
    begin
      AQuerySQL.BeginUpdate;
      try
        AQuerySQL.Clear;
        SQLFilled := False;
        repeat
          if LastStr <> '' then
          begin
            AQuerySQL.Add(LastStr);
            LastStr := '';
          end;
          if I < SQL.Count then
          begin
            S := (SQL[i]);
            Inc(I);
            if CompareText(Trim(S), ASeparator) = 0 then
              SQLFilled := True
            else if S <> '' then
              AQuerySQL.Add(S);
          end
          else SQLFilled := True;
        until SQLFilled;
      finally
        AQuerySQL.EndUpdate;
      end;

      if AQuerySQL.Count > 0 then
      begin
        if (StatementNo < 0) or (StatementNo = CurrStatement) then
        begin
          AADOConn.Execute(AQuerySQL.Text, iRecAffected);
          if StatementNo = CurrStatement then Break;
        end;
        Inc(CurrStatement);
      end;
    end;
  finally
    AQuerySQL.Free;
  end;
end;

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 17-05-2007
Avatar de Albano
Albano Albano is offline
Miembro
 
Registrado: Oct 2004
Ubicación: Nogales, Sonora, Mexico
Posts: 422
Poder: 15
Albano Va por buen camino
Estoy trabajando en un proyecto urgente, pero no creas que se me ha pasado ver esto que me dices... Muchas gracias por el tiempo que le has dedicado, en unos dias lo voy a checar y te digo cómo me fue.
__________________
"Sé de tal manera y vive una vida tal, que si todos los hombres fueran como tú y vivieran como tú, nuestro mundo sería un paraíso terrenal"
Siempre hazlo con la ayuda de Dios
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
Crear una base de Datos de MS SQL desde Delphi agalvan_kit SQL 3 03-08-2015 22:27:56
Como crear una base de datos desde Access... JF Sebastian Conexión con bases de datos 5 29-03-2007 19:14:22
Cargar una Base de Datos Paradox desde Excel famapo Tablas planas 0 12-10-2004 01:34:22
Crear Base de Datos desde codigo Odnanref Tablas planas 5 15-09-2004 10:43:49
Cargar desplegable desde base de datos melanthea JAVA 0 07-09-2004 15:03:09


La franja horaria es GMT +2. Ahora son las 13:55:10.


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