Escolar Documentos
Profissional Documentos
Cultura Documentos
NET
El siguiente ejemplo u lizará las bibliotecas Microso Ac veX Data Objects (ADO) y Ac veX Data Objects
para DDL y Seguridad (ADOX), mediante la interoperabilidad COM que nos ofrece la plataforma .NET,
para crear una nueva base de datos Microso Access. Por tanto, lo primero que ene que hacer es
añadir una referencia COM a las bibliotecas de ADO y ADOX en su solución de Visual Basic .NET. Una vez
efectuada la referencia, u lizaremos el método Create del objeto Catalog para crear la base de datos:
Try
' Generamos una nueva base de datos Access 2000, 2002 ó 2003
' cat.Create("Provider = Microsoft.Jet.OLEDB.4.0;" & _
' "Data Source = C:\Mis documentos\Nuevo1.mdb")
Catch ex As Exception
MessageBox.Show(ex.Message, _
"Crear base de datos", _
MessageBoxButtons.OK, _
MessageBoxIcon.Error)
Finally
' Quitamos las referencias a las instancias de los objetos creados.
cat.ActiveConnection = Nothing
cat = Nothing
End Try
cat.ActiveConnection.Close()
A decir verdad, no es necesario establecer una referencia a la biblioteca de ADO para crear la base de
datos; con la biblioteca de ADOX es más que suficiente. Pero debe de saber que al crearse la base de
datos, implícitamente se crea un objeto ADODB.Connec on, el cual estará representado por la
propiedad Ac veConnec on del objeto Catalog definido. Por tal mo vo, es por lo que necesitará
cerrar expresamente la conexión, porque no es suficiente con establecer a Nothing el valor del objeto
Catalog, dado que el recolector de elementos no u lizados liberará la instancia y recuperará los
recursos asociados en un momento posterior, lo que no quiere decir que lo haga inmediatamente. Por
tanto, si no cierra la conexión, puede ser que no pueda u lizar la base de datos creada en otro
procedimiento de la aplicación, hasta que no cierre defini vamente la aplicación, sobre todo si en la
cadena de conexión ha especificado un modo de apertura exclusivo.
Otra técnica que podríamos u lizar para evitar una referencia expresa en nuestra solución a la biblioteca
de ADO, y poder eliminar de la memoria la referencia creada por el obteto Catalog, sería llamar
expresamente al método Collect de la clase GC, una vez que hayamos asignado el valor Nothing a la
variable objeto del po Catalog, de ésta manera forzamos al recolector de basura a eliminar de la
memoria el objeto declarado. Posteriormente, podemos llamar al método WaitForPendingFinalizars
de la clase GC, para que se detenga el proceso actual hasta que finalice el método Collect.
Para probar lo comentado anteriormente, comente la línea de código donde se cierra expresamente el
objeto ADODB.Connec on creado implícitamente por el objeto Catalog, y u lice la clase GC dentro del
bloque Finally:
Finally
cat = Nothing
' Obligamos a que se lleve a cabo la recolección de elementos no utilizados.
GC.Collect()
GC.WaitForPendingFinalizers()
End Try
Si deseamos establecer una contraseña en el momento de crear la base de datos, hay que u lizar la
siguiente cadena de conexión, procurando que la longitud de la contraseña no exceda de veinte
caracteres:
Hay que tener especial cuidado en no separar con un espacio en blanco las palabras OLEDB: y Database,
porque de hacerlo nos encontraremos con el error No se pudo encontrar el archivo ISAM instalable. Por
tanto, la escritura correcta es OLEDB:Database, sin espacios en blanco, lo que también es válido para
cualquier otro nombre de propiedad que comience por Jet OLEDB:.
http://mvp-access.es/softjaen/bases/adonet/sjadonet05.htm 2/7
20/5/2018 Colección de Ejemplos de ADO .NET
En el momento de crear la base de datos por defecto pertenece al usuario admin, por lo que si
queremos que la base de datos pertenezca a otro usuario, debemos especificar en la cadena de
conexión el nombre de usuario y su contraseña, si ene establecida alguna. Para ello, necesariamente
tendremos que especificar la ruta del archivo de información de grupos de trabajo donde se encuentre
previamente incluido el usuario. Asimismo, tendrá que pertenecer a un grupo de trabajo que tenga los
permisos oportunos para crear bases de datos, porque de lo contrario obtendremos un error. Por
defecto, los usuarios pertenecientes a los grupos Admins o Users, enen permiso para crear una base de
datos. El siguiente ejemplo, creará una base de datos cuyo propietario será el usuario establecido en la
propiedad User ld:
La versión de la base de datos creada será la que corresponda con el motor de base de datos Microso
Jet que tengamos instalado por defecto en nuestro sistema. Si queremos crear una nueva base de datos
con un po de versión en concreto, deberemos de especificar en la cadena de conexión la propiedad Jet
OLEDB:Engine Type, la cual puede tomar uno de los siguientes valores, que corresponderá con los
dis ntos pos de motores OLEDB que puede u lizar:
Si el usuario ene instalado en su sistema Microso Access 2003, el que se cree una base de datos
formato Access 2000 o Access 2002 - 2003 dependerá del formato de archivo predeterminado que
tenga establecido como valor por defecto en el cuadro de diálogo Opciones de Microso Access, por
tanto, si especificamos en la cadena de conexión el parámetro:
La base de datos creada tendrá formato Access 2000, si así lo tenemos especificado en nuestras
Opciones de Microso Access; en caso contrario, la base de datos tendrá el formato de Access 2002 -
2003.
Dicho valor se guarda en el parámetro Default File Format de la siguiente clave del registro de
Windows, HKEY_CURRENT_USER\So ware\Microso \Office\11.0\Access\Se ngs (o ...
\Office\15.0\Access\Se ngs, si ene instalada la nueva versión de Access 2013), el cual puede tomar
uno de los siguientes valores DWORD:
Una vez creada la base de datos, la propiedad Ac veConnec on del objeto Catalog se puede asignar a
la propiedad Connec onString de un objeto Connec on de la biblioteca de ADO, de ésta forma no
http://mvp-access.es/softjaen/bases/adonet/sjadonet05.htm 3/7
20/5/2018 Colección de Ejemplos de ADO .NET
tendremos que u lizar el método Open del objeto Connec on para abrir la base de datos:
El siguiente ejemplo presenta una función genérica que u liza únicamente la biblioteca de ADOX para
crear una base de datos Microso Access, con los datos de la cadena de conexión pasada a la subru na,
por lo que también nos puede servir para crear una base de datos con el nuevo formato de Access 2007
- 2013, siempre y cuando especifiquemos en la cadena de conexión el proveedor de datos
Microso .ACE.OLEDB.12.0 (o el proveedor Microso .ACE.OLEDB.15.0, éste úl mo introducido con la
versión de Microso Access 2013). El procedimiento contempla la posibilidad de que exista la base de
datos que se desea crear, por lo que si procede, se le preguntará al usuario si desea sobrescribir la base
de datos existente:
http://mvp-access.es/softjaen/bases/adonet/sjadonet05.htm 4/7
20/5/2018 Colección de Ejemplos de ADO .NET
Try
' Creamos un objeto DirectoryInfo para la copia de seguridad
If (System.IO.File.Exists(dataBase)) Then
' Renombro la base de datos existente
System.IO.File.Move(dataBase, fi.FullName)
End If
Return True
Catch ex As Exception
MessageBox.Show("No se ha podido crear la base de datos." & _
CrLf & CrLf & _
"Compruebe los parámetros de la cadena de conexión " & _
http://mvp-access.es/softjaen/bases/adonet/sjadonet05.htm 5/7
20/5/2018 Colección de Ejemplos de ADO .NET
Return False
Finally
' Forzamos el borrado del objeto de la memoria
cat = Nothing
GC.Collect()
GC.WaitForPendingFinalizers()
End Try
End Function
NOTA: La información contenida en este ar culo, así como el código fuente incluido en el mismo, se proporciona COMO ESTÁ,
sin garan as de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en prác ca, u lizar o ejecutar
lo explicado, recomendado o sugerido en el presente ar culo.
http://mvp-access.es/softjaen/bases/adonet/sjadonet05.htm 6/7
20/5/2018 Colección de Ejemplos de ADO .NET
NOTE: The informa on contained in this ar cle and source code included therein, is provided AS IS without warranty of any
kind, and confers no rights. You assume any risk to implement, use or run it explained, recommended or suggested in this
ar cle.
http://mvp-access.es/softjaen/bases/adonet/sjadonet05.htm 7/7