PDA

Ver la Versión Completa : Implementacion de la Clase conexion ADO


ginkaku
29-08-2013, 02:06:18
Muy buenas a todos, he buscado en el club algo similar y espero no estar repitiendo.
Yo siempre he utilizado ADOConexion u ODBC en un DataModule donde,por supuesto, arrastramos el componente, cliqueamos para configurarlo y listo, a usarlo sin mas. Lamentablemente necesito esta ves crear mi propia clase que me permita establecer la conexion(con la base de datos) y ejecutar sentencias sql como lo haria un DataSet.
Necesito mucho de su ayuda, sobretodo en la sintaxis que veo que es mi problema. Debo implementarlo en c++(se que es mucho pedir), aunque si tuvieran un ejemplo en delphi, por supuesto yo veria como traducirlo a c++. Bueno seguire probando aver que me sale. Saludos gente!

ecfisa
29-08-2013, 04:41:24
Hola ginkaku.

No sé si interpreté bién tu consulta pero te pongo un ejemplo muy simple de creación y asociación de un TADOConnection, un TADOTable, TDataSource y finalmente un TDBGrid para mostrar los datos.

Uso para el ejemplo la tabla Country de bcdemos.mdb que viene con C++ Builder.


...
TADOConnection *AC;
TADOTable *AT;
TDataSource *DS;
TDBGrid *GR;


void __fastcall TForm1::FormCreate(TObject *Sender)
{
AC = new TADOConnection(this);
AT = new TADOTable(this);
DS = new TDataSource(this);
GR = new TDBGrid(this);

// armar cadena de conexión
String s1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
String s2 = "C:\\Program Files\\Common Files\\Borland Shared\\Data\\bcdemos.mdb";
String s3 = ";Persist Security Info=False;";
String StrConnect = s1 + QuotedStr(s2) + s3;

// ADOConnection
AC->CommandTimeout = 30;
AC->ConnectionString = StrConnect;
AC->ConnectionTimeout = 15;
AC->ConnectOptions << TConnectOption(coConnectUnspecified);
AC->CursorLocation << TCursorLocation(clUseClient);
AC->IsolationLevel << TIsolationLevel(ilCursorStability);
AC->KeepConnection = true;
AC->LoginPrompt = false;
AC->Mode = cmShareDenyNone;
AC->Name = "ADOConnect1";
AC->Provider = "Microsoft.Jet.OLEDB.4.0";
AC->Connected = true;

// ADOTable
AT->Connection = AC;
AT->TableName = "Country";
//...
AT->Open();

// DataSource
DS->DataSet = AT;
DS->Enabled = true;
DS->AutoEdit = true;
// ...

// DBGrid
GR->Parent = this;
GR->Top = 10;
GR->Left = 10;
GR->Width = 800;
GR->Height = 400;
GR->DataSource = DS;
//...
}

...

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
delete AC;
delete AT;
delete DS;
delete GR;
}


Saludos :)

ginkaku
29-08-2013, 06:05:37
Grande ecfisa ^\||/, solo te falto compilar mi codigo ;). Era lo que necesitaba y andaba buscando :), ahora puedo dormir tranquilo. Mañana voy a hacer las pruebas finales pero acabas de responder todas mis dudas. Comentare los resultados mas adelante, pero todo parece funcionarme.