Inicio > Bases de Datos, Ejemplos, Trucos > Guardar configuración de Base de Datos

Guardar configuración de Base de Datos

miércoles, 27 de enero de 2010 Dejar un comentario Ir a comentarios
Share Button

Es una cosa que en multitud de ocasiones hemos necesitado hacer; Ya sea con la configuración del acceso a Base de Datos, con la configuración de propiedades, guardar estado del programa, posición,…

En este caso en concreto (a raiz de este hilo en Clubdelphi) se trata de guardar la configuración de Base de Datos. El contenido importante de la propiedad ConnectionString.

Podemos almacenada TODO el contenido de la propiedad en un sólo elemento o guardar los elemtos relevantes de la conexión (Servidor, usuario, Base de Datos y password); En mi caso he preferido el segundo.

Para ello lo más sencillo es utilizar la clase TIniFile que provee Delphi.

Para guardar los valores utilizamos WriteString:

// Grabar
ini.WriteString(CONFIG_SECTION, 'User', edtUser.Text);
ini.WriteString(CONFIG_SECTION, 'password', edtPassword.Text);
ini.WriteString(CONFIG_SECTION, 'Server', edtServer.Text);
ini.WriteString(CONFIG_SECTION, 'BaseDatos', cbBD.Text);

Y para recuperarlos el equivalente ReadString:

// Cargar datos
edtUSer.Text := ini.ReadString(CONFIG_SECTION, 'User', STR_EMPTY);
edtPassword.Text := ini.ReadString(CONFIG_SECTION, 'password', STR_EMPTY);
edtServer.Text := ini.ReadString(CONFIG_SECTION, 'Server', STR_EMPTY);
cbBD.Text := ini.ReadString(CONFIG_SECTION, 'BaseDatos', STR_EMPTY);

Una vez tenemos los datos podemos montar la conexión y activarla.

const
STR_CONN = 'Provider=SQLOLEDB.1;Password=%s;Persist Security Info=True;' +
'User ID=%s;Initial Catalog=%s;Data Source=%s';
 
...
 
// Intentar conectar
ADOConnection1.ConnectionObject.ConnectionString :=
Format(STR_CONN, [edtPassword.Text, edtUser.Text, cbBD.Text, edtServer.Text]);

En este ejemplo además se utiliza otra conexión con casi los mismos parámetros introducidos, pero accediendo a la tabla master, para preguntar al servidor SQL por las Bases de Datos disponibles y así mostrarlas al usuario:

SELECT * FROM SysDataBases

Adjunto el ejemplo coon el código.

<DESCARGAR EJEMPLO>

En este caso, la conexión es con SQL Server mediante OLEDB. En general, para esta y otras conexiones os recomiendo una web creada específicamente al respecto:

ConnectionString.com

Vota este post
  1. pabloloustau
    martes, 8 de junio de 2010 a las 22:43 | #1

    hola neftali!
    soy medico y el año pasado necesite hacer unas aplicaciones de medicina. comence a aprender lo basico de delphi descargando tutoriales y mandando mensajes al foro de club delphi, ahora se me transformó en algo apasionante. he tenido ayudas tuyas en varias oportunidades y te agradezco por eso ya que mi unica fuente de aprendizaje es por internet. te felicito por tu blog. esto me viene bien para aprender algo de ado ya que quiero hacer una base de datos para historias clinicas.

  2. Neftalí
    miércoles, 9 de junio de 2010 a las 07:55 | #2

    @pabloloustau
    Hello Paul.
    I’m glad you have these concerns and you will like this scene. With proper motivation, enthusiasm and a little help really get what you propose.
    And if you need help you know where to look. ;-)
    Regarding the database, perhaps the most complicated and important, is having a good initial design. If you have it, then everything will be easier if instead the design is bad, late complications may be large.

    A greeting.

  3. Ramiro
    martes, 6 de julio de 2010 a las 21:46 | #3

    En lugar de utilizar el sysdatabases para mostrar las bases de datos dentro de sql server, como podría hacer para mostrar las tablas dentro de una base de datos y los campos dentro de una tabla.
    Gracias.

  4. Neftalí
    miércoles, 7 de julio de 2010 a las 09:37 | #4

    @Ramiro
    Para eso puedes consultar el catálogo de la Base de Datos. En el caso de SQL Server puedes realizar consultas a la Tabla SysObjects y SysColumns. Si revisas la ayuda de SQL Server encontrarás más información y ejemplos de estas dos tablas (y el resto pertenecientes al catálogo).

    Un saludo.

  5. Cesar
    jueves, 19 de agosto de 2010 a las 20:58 | #5

    Hola Neftali, mi consulta es la siguiente:

    Como o con que herramientas puedo cargar todos los servidores mas sus respectivas instancia de(SQL Server) existentes en una red LAN en el Edit Servidor de este tu post (Server/NameInstancia), un saludo y gracias.

  6. Neftalí
    lunes, 6 de septiembre de 2010 a las 11:24 | #6

    Hola César.
    Me suena que por internet he visto algun código para hacer esto. Creo que básicamente lo que hace es explorar la red en busxa de ordenadores que tengan activo determinado puerto.
    Para las Bases de Datos, una vez que tienes el servidor., sí que puedes lanzar una consulta que te las devuelve.

    Un saludo.

  1. miércoles, 27 de enero de 2010 a las 18:50 | #1