| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
grz47 Ens


Registrado: 05 Ago 2005Mensajes: 40Ubicación: SINALOA, MEXICO
|
Publicado: Sab 08 Abr, 2006 1:32 am Asunto: CONEXION A BD |
|
|
| Regular mente me conecto a una base de datos por medio de fuentes ODBC o los componentes OLE, pero quisiera saber si hay formas mas seguras y rapidas de hacer lo mismo. y como le hago para escojer diferentres bases de datos en una misma aplicacion. (BCB 6 y MySql) |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Mar 11 Abr, 2006 1:57 am Asunto: |
|
|
Precisamente eso tengoque hacer, mas o meno ya vi que lo podemos hacer con los controles ADO, ya que ahi enviamao una cadenad e conexion, donde cambiar la base de datos ..si logro algo envio codigo..saludos _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
grz47 Ens


Registrado: 05 Ago 2005Mensajes: 40Ubicación: SINALOA, MEXICO
|
Publicado: Mar 11 Abr, 2006 2:53 am Asunto: Gracias touch |
|
|
espero y lo podamos resolver, si yo lo logro antes tambien publico el codigo
suerte |
|
| Volver arriba |
|
 |
Buildero Master


Registrado: 23 Dic 2003Mensajes: 523Ubicación: Puebla, México
|
Publicado: Mar 11 Abr, 2006 2:56 pm Asunto: |
|
|
Aquí un ejemplo para conectarse a MySQL.
https://cppbuilder.es/viewtopic.php?t=10976&highlight=mysql
Saludos _________________ Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida. |
|
| Volver arriba |
|
 |
juanma Cmdr

Registrado: 17 Nov 2005Mensajes: 127Ubicación: Almeria - España
|
Publicado: Mie 12 Abr, 2006 9:13 am Asunto: |
|
|
Yo encontré esto en la red y se me olvidaros los problemas de buscar conexionstring...
| Código: | WideString WResult = PromptDataSource((int)Application->Handle, "");
if (WResult.Length()>9) {
ADOCn->ConnectionString = WResult;
// ...
|
Esto lo coloco en el click del boton conectar, el ADOCn es el componete ADOConnection que coloco en el formulario (con loginpromt a false).
Yo lo utilizo indistintamente para abrir bases de datos msaccess como las configuradas con odbc, que son por ahora de informix, postgresql, y tambien firebird (aconsejable para los que quieran especializarse en una)
Es mas, con dos conexiones estoy migrando los datos de access a odbc.
Muestro el codigo real para ver las tablas, y tiene un poco de lio ya que para posgresql mostraba las de sistema, yo al configurar los odbc los 5 primeros caracteres les pongo el nombre del sistema que utilizo (en el ejemplo vereis porque)
| Código: | void __fastcall TfInicial::mnAbrClick(TObject *Sender)
{
if (xAp.nTp > 0) {
ShowMessage("Es necesario cerrar la conexion actual a " + cDB);
return;
}
//WideString WCEStr = ""; No necesario
WideString WResult = PromptDataSource((int)Application->Handle, ""); //WCEStr
if (WResult.Length()>9) {
TStringList * lstVl = new TStringList;
lstVl->Delimiter = ';';
lstVl->StrictDelimiter = true;
lstVl->DelimitedText = WResult;
cDB = lstVl->Values["Data Source"];
if (cDB.SubString(1,5).UpperCase() == "POSTG")
xAp.nTp = 2;
else
xAp.nTp = 3;
ADOCn->ConnectionString = WResult;
xAp.nR = 1;
Mensaje("Abriendo base de datos...");
try {
ADOCn->Open();
MuestraTbl();
mnu2->Visible = true;
}
catch(Exception &E) {
ShowMessage(E.Message);
xAp.nTp = 0;
}
Mensaje("");
delete lstVl;
}
}
//---------------------------------------------------------------------------
void __fastcall TfInicial::MuestraTbl()
{
//En form TStringList *slTb = new TStringList;
slTb->Clear();
TfTablas * fTbs = new TfTablas(this);
fTbs->Height = 285;
fTbs->Width = 240;
if (xAp.nTp == 2) {
//Solo con postgresql
TADOQuery *ADOQr = new TADOQuery(ADOCn);
ADOQr->Connection = ADOCn;
//ADOQr->SQL->Clear();
ADOQr->SQL->Add("Select tablename From pg_tables Where schemaname = 'public'");
ADOQr->Open();
while (! ADOQr->Eof) {
slTb->Add(ADOQr->Fields->Fields[0]->AsString);
ADOQr->Next();
}
ADOQr->Close();
delete ADOQr;
}
else
ADOCn->GetTableNames(slTb, false);
for (int i=0; i<slTb->Count; i++)
fTbs->lsTbl->Items->Add(slTb->Strings[i]);
}
//--------------------------------------------------------------------------- |
Tambien si trabajas con varios sistemas de DDBB verás que cada uno tiene sus particularidades al actualizar/insertar datos (sobre todo la fecha!), por eso lo comentado de utilizar los 5 primeros caracteres con el nombre del sistema.
Espero que os sirva algo de esto. |
|
| Volver arriba |
|
 |
grz47 Ens


Registrado: 05 Ago 2005Mensajes: 40Ubicación: SINALOA, MEXICO
|
Publicado: Mar 18 Abr, 2006 3:46 am Asunto: MyOLEDB |
|
|
aqui les dejo el link a myOLEDB para no tener que usar ODBC. Esto soluciona gran parte d los problemas que ocasiona la conexion por medio de DNS
http://sourceforge.net/projects/myoledb/ |
|
| Volver arriba |
|
 |
|