SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: Pieza en Domingo 11 de Mayo de 2003, 17:58

Título: Re: Crear un dsn
Publicado por: Pieza en Domingo 11 de Mayo de 2003, 17:58
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
Título: Re: Crear un dsn
Publicado por: xoom en Martes 13 de Mayo de 2003, 14:22
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:
Título: Re: Crear un dsn
Publicado por: _Viktor en Sábado 20 de Septiembre de 2003, 00:48
Código: Text
  1.  
  2.  
  3.  
  4. //---------------------------------------------------------------------------
  5. #include <vcl.h>
  6. #include <stdio.h>
  7. #pragma hdrstop
  8.  
  9. #include "Unit1.h"
  10. //---------------------------------------------------------------------------
  11. #pragma package(smart_init)
  12. #pragma resource "*.dfm"
  13. TForm1 *Form1;
  14. //---------------------------------------------------------------------------
  15. __fastcall TForm1::TForm1(TComponent* Owner)
  16.         : TForm(Owner)
  17. {
  18. }
  19. //---------------------------------------------------------------------------
  20.  
  21.  
  22. bool CreateODBCAlias(String sAlias, String sDB, String sDir, String sDescription)
  23. {
  24.     typedef BOOL (__stdcall *pSQLConfigDataSource)(HWND, WORD, LPCSTR, LPCSTR);
  25.     pSQLConfigDataSource SQLConfigDataSource;
  26.     HINSTANCE hLib;
  27.     bool bRet = false;
  28.     hLib = LoadLibrary("odbccp32.dll");
  29.      if (hLib)
  30.        {
  31.         SQLConfigDataSource = (pSQLConfigDataSource) GetProcAddress(hLib, "SQLConfigDataSource");
  32.         if (SQLConfigDataSource)
  33.          {
  34.            char szParam[1024];
  35.            sprintf(szParam, "DSN=%s; Description=%s; DefaultDir=%s; DBQ=%s",
  36.                           sAlias.c_str(), sDescription.c_str(), sDir.c_str(), sDB.c_str());
  37.            bRet = SQLConfigDataSource(NULL, 1 /*ODBC_ADD_DSN*/,"Microsoft Access Driver (*.mdb)", szParam);
  38.          }        FreeLibrary(hLib);
  39.         }
  40.   // Devuelve true si se crea o false en caso contrario
  41. return bRet;
  42. }
  43.  
  44.  
  45. void __fastcall TForm1::Button1Click(TObject *Sender)
  46. {
  47. bool ret;
  48. ret = CreateODBCAlias("MiAlias",
  49. "bd.mdb",
  50. "C:bd",
  51. "Esto es una prueba");
  52. // Devuelve true si se crea correctamente
  53. ShowMessage(ret ? "Creado" : "Error");
  54.  
  55.  
  56. }
  57. //---------------------------------------------------------------------------
  58.  
  59.  
  60.  
  61.  
Título: Re: Crear un dsn
Publicado por: carlos_lue en Miércoles 24 de Septiembre de 2003, 23:25
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.
Título: Crear un dsn
Publicado por: _Viktor en Sábado 18 de Octubre de 2003, 22:01
En realidad se tiene que poner la ruta del directorio donde se encuentra la BD.-

Saludos!