Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Como consultar si existe una tabla desde el componente Query de C++ Builder (https://www.clubdelphi.com/foros/showthread.php?t=90661)

MARX 06-08-2016 15:41:02

Como consultar si existe una tabla desde el componente Query de C++ Builder
 
Hola a todos.
Tengo una duda existencial, que los mas probable es que ustedes me la sepan responder.
Quiero consultar si existe una tabla en MySQL desde builder. Esto lo necesito ya que si la tabla no existe, debo crearla.
Espero me sepan responder.

Saludos
MARX

ecfisa 06-08-2016 16:43:21

Hola MARX.

No uso MySql por lo que no puedo asegurarlo; pero según esto: SHOW TABLES Syntax, creo que podrías intentar algo similar a esto:

Código PHP:

...
{
  
tuQuery->Close();
  
tuQuery->SQL->Text "SHOW TABLES LIKE :TBNAME";
  
tuQuery->ParamByName("TBNAME")->AsString "NOMBRE_TABLA";  //[*]
  
tuQuery->Open();

  if (
tuQuery->IsEmpty()) {
    
// crear tabla
  
}

  
tuQuery->Close();


[*] La sintáxis del query puede variar según los componentes que estes usando.

Saludos :)

fjcg02 06-08-2016 17:03:47

Supongo que será

Código SQL [-]
select table_name from information_schema.tables
;

Saludos

MARX 06-08-2016 20:42:38

Cita:

Empezado por ecfisa (Mensaje 507467)
Hola MARX.

No uso MySql por lo que no puedo asegurarlo; pero según esto: SHOW TABLES Syntax, creo que podrías intentar algo similar a esto:

Código PHP:

...
{
  
tuQuery->Close();
  
tuQuery->SQL->Text "SHOW TABLES LIKE :TBNAME";
  
tuQuery->ParamByName("TBNAME")->AsString "NOMBRE_TABLA";  //[*]
  
tuQuery->Open();

  if (
tuQuery->IsEmpty()) {
    
// crear tabla
  
}

  
tuQuery->Close();


[*] La sintáxis del query puede variar según los componentes que estes usando.

Saludos :)

A mi se me ocurrió algo similar después de haber hecho esta pregunta.
Yo hice lo siguiente porque probee lo mismo que me sujerís y me tiraba error. Ahora se por que me tiraba el error.

Código PHP:

    bool ExisteTabla=false;
    
AnsiString Tabla=DBLookupComboBox1->Text;      // Aca tengo el nombre de la tabla a creear

    
Cliente->QCliente->Close();
    
Cliente->QCliente->SQL->Clear();
    
Cliente->QCliente->SQL->Add("SHOW TABLES;");
    
Memo1->Text=Cliente->QCliente->SQL->Text;
    
Cliente->QCliente->Open();

    for(
int i=0;i<Cliente->QCliente->RecordCount;i++)
    {
        if(
Cliente->QCliente->FieldByName("Tables_in_basededatosr")->AsString==Tabla)
        {
            
ExisteTabla=true;

        }
        
Cliente->QCliente->Next();
    }

    if(!
ExisteTabla)
    {
        
// Aca cree la tabla

        
Application->MessageBoxW(L"La tabla se ha creado con exito",L"Creación de tabla",MB_OK);
    }
    else
        
Application->MessageBoxW(L"La tabla ya existe",L"Creación de tabla",MB_OK); 

Pensaba que podía haber alguna sintaxis en SQL que me consultara por la existencia de una tabla
Voy a usar tu sugerencia que es mas corta
Gracias otra vez ecfisa


Cita:

Empezado por fjcg02 (Mensaje 507468)
Supongo que será

Código SQL [-]
select table_name from information_schema.tables
;

Saludos

Gracias por tu respuesta fjcg02, pero esa sintaxis me da un montón de datos y debería filtrarlos

Muchísimas gracias a los dos por sus respuestas y su tiempo

Saludos
MARX


La franja horaria es GMT +2. Ahora son las 12:13:11.

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