Ver Mensaje Individual
  #3  
Antiguo 11-01-2008
Avatar de grandmasterdari
grandmasterdari grandmasterdari is offline
Miembro
 
Registrado: ene 2008
Posts: 46
Reputación: 0
grandmasterdari Va por buen camino
Post Aclaracion 01


gracias.
bueno con respecto al motor de base de datos estoy utilizando mysql 5.0
con borland developer studio 2006 en c++,
tambien tengo los nuevos drivers de mysql ya que el que trae el compilador es para una version anterior del motor de db. (si alguien lo quiere no duden en pedir, ya ke lleva tiempo encontrarlos)

creo que ya saben como es la historia, utilizo esos 2 componentes para consultas:
. . sqlconnection1 -----> sqlquery1
donde sql connection1 ya lo configuro en la vcl y se conecta sin ningun problema respetando el nuevo driver, esto seria en codigo, pues yo hice lo mismo en grafico

Código:
      Connection := TSQLConnection.Create(nil);
      Connection.DriverName := 'dbxmysql';
      Connection.GetDriverFunc := 'getSQLDriverMYSQL50';
      Connection.LibraryName := 'dbxopenmysql50.dll';
      Connection.VendorLib := 'libmysql.dll';
      Connection.Params.Append('Database=NAME_OF_DATABASE);
      Connection.Params.Append('User_Name=NAME_OF_USER');
      Connection.Params.Append('Password=PASSWORD');
      Connection.Params.Append('HostName=localhost');
para realizar comandos sql necesito el tsqlquery instanciado por defecto SQLQuery1

tengo ke pasarle lo que quiero que haga
Código:
 SQLQuery1->SQL->add("show databases");
y las respuestas se quedan almacenadas en ese objeto ¿ como hago para saber que recibio mi objeto?
bueno, aparentemente se encuentra en SQLQuery1->Field tipo de dato TField y como es una especie de tabla lo ke recibo como respuesta realizo una busqueda del campo que me interesa de la siguiente forma
Código:
        while((!SQLQuery1->Eof)&&((SQLQuery1->FieldByName("Database")->AsString)!="basededatos"))
            SQLQuery1->Next();
salgo de esa iteracion cuando, o termina de recorrer y no hay coincidencias, o cuando encuentro la coincidencia.
hasta ahora vamos bien, pero ahora a mi objeto SQLQuery1 quiero hacerle otra consulta por ejemplo
Código:
SQLQuery1->SQL->add("show tables");
pero antes debo borrar la consulta anterior con este comando
Código:
SQLQuery1->SQL->Clear();
y para poder ejecutar mi consulta de show tables hago esta linea
Código:
SQLQuery1->Open();
<- Y ahi esta!!!... esa es la linea, no puedo hacer otras consultas sea cual sea despeus de haber recorride de la forma en la que hice
Código:
SQLQuery1->SQL->Clear();
SQLQuery1->SQL->Add("show tables");
SQLQuery1->Open();
TBookmarkStr BM= SQLQuery1->Bookmark;
SQLQuery1->First();
 while((!SQLQuery1->Eof)&&((SQLQuery1->FieldByName("Database")->AsString)!="basededatos"))
            SQLQuery1->Next();
SQLQuery1->Refresh();
ClientDataSet1->UpdateCursorPos();
SQLQuery1->Bookmark=BM;
SQLQuery1->Close();
SQLQuery1->SQL->Clear();
SQLQuery1->SQL->Add("use basededatos;");  
SQLQuery1->Open(); //el error sale en esta linea

bueno espero haberme expresado bien
no tengo problemas si hay ejemplos en delphi (caral)

Última edición por grandmasterdari fecha: 12-01-2008 a las 02:46:19.
Responder Con Cita