Programación General > C++ Builder

 Re: Crear un dsn

(1/1)

Pieza:
Hola a todos!
Estoy desarrollando un CD multimedia (con Director) para su posterior distribución. El problema me surge porque accede a una base de datos (por odbc) que va tambien en el CD, ¿cómo registro esa base de datos en el sistema del usuario?
¿Hay alguna manera de conectarse a la bd que no sea por odbc o por internet?

¿Sería posible hacerlo con un programa de c?

Gracias a todos

xoom:
Claro, desde C podrías acceder a la BDD usando ADO, que es bastante sencillo y no tienes que dar de alta la BDD en ningún sitio, sólo la abres indicando su ruta, que puede ser tanto absoluta (no te valdría para un CD) como relativa (referida al directorio actual del ejecutable, que es lo que necesitarías en tu caso).
Échale un vistazo al manejo del ADO, verás como es muy sencillo.
:comp:

_Viktor:

--- Código: Text ---   //--------------------------------------------------------------------------- #include <vcl.h> #include <stdio.h> #pragma hdrstop  #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner)         : TForm(Owner) { } //---------------------------------------------------------------------------   bool CreateODBCAlias(String sAlias, String sDB, String sDir, String sDescription) {     typedef BOOL (__stdcall *pSQLConfigDataSource)(HWND, WORD, LPCSTR, LPCSTR);     pSQLConfigDataSource SQLConfigDataSource;     HINSTANCE hLib;     bool bRet = false;     hLib = LoadLibrary("odbccp32.dll");      if (hLib)        {         SQLConfigDataSource = (pSQLConfigDataSource) GetProcAddress(hLib, "SQLConfigDataSource");         if (SQLConfigDataSource)          {            char szParam[1024];            sprintf(szParam, "DSN=%s; Description=%s; DefaultDir=%s; DBQ=%s",                           sAlias.c_str(), sDescription.c_str(), sDir.c_str(), sDB.c_str());            bRet = SQLConfigDataSource(NULL, 1 /*ODBC_ADD_DSN*/,"Microsoft Access Driver (*.mdb)", szParam);          }        FreeLibrary(hLib);         }   // Devuelve true si se crea o false en caso contrario return bRet; }   void __fastcall TForm1::Button1Click(TObject *Sender) { bool ret; ret = CreateODBCAlias("MiAlias", "bd.mdb", "C:bd", "Esto es una prueba"); // Devuelve true si se crea correctamente ShowMessage(ret ? "Creado" : "Error");   } //---------------------------------------------------------------------------     

carlos_lue:
como complemento a mensage anterior,
si deseas que el programa funcione en donde se instale, no debes poner la ruta fìsica, debes poner ruta relativa.

CODIGO:

bool ret;
ret = CreateODBCAlias("MiAlias",
"bd.mdb",
ExtractFilePath(Application->ExeName),
"Esto es una prueba");
// Devuelve true si se crea correctamente
ShowMessage(ret ? "Creado" : "Error");

solo se sustituye :
"C:directorio",  por la direccion en donde se encuentra el programa.
ExtractFilePath(Application->ExeName),


bueno un saludo a todos.

_Viktor:
En realidad se tiene que poner la ruta del directorio donde se encuentra la BD.-

Saludos!

Navegación

[0] Índice de Mensajes

Ir a la versión completa