Guardar configuración de Base de Datos
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.
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:
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
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.
@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.
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.
@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.
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.
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.