Juan Fco. Berrocal -- DotNET y Yo transmitiendo desde GeeKs.Ms

Conectando nuestra aplicacion .NET (C#) con MS Access 2007

Gracias a mi vecino de blog Bruno por pasarme la información en respuesta a un post que publique esta mañana. El caso es que el me puso un código de ejemplo para ver la conexión entre una aplicación .NET y  una base de datos en Access 2007, pero el código publicado por el

Fue en VB.NET y pues ahora yo mismo código (aunque el no utiliza DataSet) pero en C#.

 

//Creo la cadena de conexion para Office 2007

            string cadena = @"Provider=Microsoft.ACE.OLEDB.12.0;

               Data Source=D:\BDPROBANDO2007.accdb;Persist Security Info=False";

            //Objeto conexion

            OleDbConnection conexion = new OleDbConnection(cadena);

            //Abro la conexion

            conexion.Open();

            //Creo el adaptador y selecciono los datos de la tabla

            OleDbDataAdapter adap = new OleDbDataAdapter("SELECT * FROM TblPrueba", conexion);

            //Creo el DataSet

            DataSet dsDatos = new DataSet();

            //Relleno el adaptador con los datos en memoria

            adap.Fill(dsDatos, "TblPrueba");

            //Creo el miembro de datos del DataGridView

            this.dtgDatos.DataMember = "TblPrueba";

            //Vuelco los datos al DataGridView

            this.dtgDatos.DataSource = dsDatos; 

 

Espero que les sirva a los que lean este blog. Wink
Posted: 22/1/2007 17:40 por Juan Fco. Berrocal | con 24 comment(s)
Archivado en: ,,
Comparte este post:

Comentarios

JUANCARLOS ha opinado:

HOLA, MI COMENTARIO ES EL SIGUIENTE:

LA CADENA DE CONEXION FUNCIONA CORRECTAMENTE DESDE CODIGO, PERO COMO LE HAGO PARA SELECCIONAR EL NUEVO PROVEEDOR DE DATOS (Microsoft.ACE.OLEDB.12.0) MEDIANTE EL ASISTENTE DE DATASETS DE VISUAL STUDIO 2005 ???? DE ANTEMANO, MUCHAS GRACIAS

# February 19, 2007 3:15 AM

Juan Fco. Berrocal ha opinado:

Hola Juan Carlos.

Bueno...., mira al parecer no es posible hacerlo desde el asistete ya que el Visual Studio no te tiene esa opcion.

Espero que en la proxima version (ORCAS) yas esto sea posible.

Un Saludo

# February 24, 2007 10:03 PM

Leonardo ha opinado:

le falta el this.dtgDatos.Databind();

# July 30, 2008 12:19 AM

Nacho ha opinado:

Excelente! :D

Conciso y muy claro. Felicitaciones ;)

# September 2, 2008 1:28 AM

TuchoBM ha opinado:

Hola,

no se si podra alguien ayudarme, pero intento crear un formulario conectado a una BD de Access, donde existen varias tablas vinculadas.

El problema es que cuando creo datos nuevos, tengo problemas al grabar los datos, pues los campos de las tablas enlazadas no se actualizan.

Podría alguien explicarme como hacerlo.

Gracias...

# September 2, 2008 2:35 PM

david ha opinado:

gracias por la cadena de una manera exelente. eres conciso gracias hasta pronto

# October 4, 2008 3:11 AM

Andres ha opinado:

Buen dia

amigos alguno sabe que conexion puedo utilizar para llamar una consulta de access con tablas de access y tablas vinculadas de ODBC.

tengo la siguiente conexion pero no se como llamar la tablas vinculadas las cuales me piden el usuario y contraseña.

Public cnn As New OleDb.OleDbConnection

   Public Function abrir_base() As OleDb.OleDbConnection

       Try

           If cnn.State = 1 Then cnn.Close()

           cnn.ConnectionString = "provider = microsoft.ace.oledb.12.0;data source =" & Application.StartupPath & "\datosgrupoidea.accdb"

           Return cnn

       Catch ex As Exception

           MessageBox.Show(Err.Description)

           Return Nothing

       End Try

   End Function

Les agredeciria cualquier ayuda o aporte

Mil Gracias.

# October 15, 2008 5:58 PM

Ivan ha opinado:

como la abres si tiene contrasena? claro ya sabes la contrasena?, osea como le pones en la cadena de conexion?

# December 29, 2008 11:02 PM

Eder Morales ha opinado:

Para poner la contraseña en la cadena de conexión, solo le tienes que poner Password='lacontraseña'; y listo, un ejemplo:

cnn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\basedatos.mdb;Jet OLEDB:Database Password=123;

Y para las tablas relacionadas, basta con crear un DataSet a partir de la base de datos y verificar que no haya registros que necesiten una llave foránea que no se encuentre en el dataset, ya que marcará un error al llenarlo (Depende de la integridad referencial).

# March 25, 2009 6:57 PM

daniel ha opinado:

tengo el siguiente codigo la conexion no c si esta bien pero cuando le digo guardar no inserta los datos a la tabla

Private Sub btn_acu_guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_acu_guardar.Click

       'creando y cargando conexion command

       Dim coneccion As New OleDb.OleDbConnection

       Dim orden As OleDb.OleDbCommand

       'abriendo la coneccion o enlace

       coneccion.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & CurDir() & "\colegio1.accdb;Jet OLEDB:Database Password=1234;"

       ' creando y cargando un objeto OLEDBCOMMAND con

       ' instruccion sql insert into mitabla(listacampos) values(listadatos)

       ' @variable es una variable de tipo parametro

       Dim q As String = "insert into acudiente (acu_cedula,acu_nombre,acu_apellido,acu_telefono,acu_celular,acu_sexo,acu_est_documento_id) values (@cedula,@nombre,@apellido,@telefono,@celular,@sexo,@estudiante)"

       orden = New OleDb.OleDbCommand(q, coneccion)

       orden.Parameters.Add(New OleDb.OleDbParameter("@cedula", OleDb.OleDbType.Numeric))

       orden.Parameters("@cedula").Value = txt_acu_cedula.Text

       orden.Parameters.Add(New OleDb.OleDbParameter("@nombre", OleDb.OleDbType.VarWChar, 20))

       orden.Parameters("@nombre").Value = txt_acu_nombre.Text

       orden.Parameters.Add(New OleDb.OleDbParameter("@apellido", OleDb.OleDbType.VarWChar, 20))

       orden.Parameters("@apellido").Value = txt_acu_apellido.Text

       orden.Parameters.Add(New OleDb.OleDbParameter("@telefono", OleDb.OleDbType.Numeric))

       orden.Parameters("@telefono").Value = txt_acu_telefono.Text

       orden.Parameters.Add(New OleDb.OleDbParameter("@celular", OleDb.OleDbType.VarWChar, 20))

       orden.Parameters("@celular").Value = txt_acu_celular.Text

       orden.Parameters.Add(New OleDb.OleDbParameter("@sexo", OleDb.OleDbType.VarWChar, 1))

       orden.Parameters("@sexo").Value = txt_acu_sexo.Text

       orden.Parameters.Add(New OleDb.OleDbParameter("@estudiante", OleDb.OleDbType.Numeric))

       orden.Parameters("@estudiante").Value = txt_acu_est_id.Text

       ' mandando sql a base de datos

       orden.Connection.Open()

       orden.ExecuteNonQuery()

       orden.Connection.Close()

       ' limpiando TEXTBOXS para otra inserccion

       txt_acu_cedula.Text = " "

       txt_acu_nombre.Text = " "

       txt_acu_apellido.Text = " "

       txt_acu_telefono.Text = " "

       txt_acu_celular.Text = " "

       txt_acu_sexo.Text = " "

       txt_acu_est_id.Text = " "

   End Sub

End Class

# March 30, 2009 2:04 AM

SAm ha opinado:

kiero conectar una base de access a C# pero encuentro mil codigos diferentes y no se cual usar, no necesito que este en internet, solo lo kiero en .exe  ...alguien me puede ayudar??

# August 22, 2009 11:36 PM

Josemi ha opinado:

Y luego para generar el installer, luego lo instalo en un equipo sin office2007 y no conecta a la bd access ¿que hay que hacer?

tk!!

# February 9, 2010 2:26 PM

uriel ha opinado:

HOLA

queiro saber si puedo conectar una base de datos hecha en access 2007 a Visual C# porque e leido y segun que no se puede.

y si me pueden dejar algunas lineas de codigo.

Gracias les agradeceria si me dieran respuestas favorables.

# July 5, 2010 11:42 PM

Carlos Camacho ha opinado:

Hola

la conexion fue exitosa, ahora quieria pedirles ayuda para realizar un updat e insert a la base de datos de acces 2007 mediante C#

de antemano gracias!!

Carlos

# August 3, 2010 4:21 PM

daniel arias ha opinado:

necesito konectar una base de datos que esta en acces y konectarla a un formulario de C# en aplicaiones windows. y las tablas tienen ke estar konectadas a un main menu....

kien me podria kolaborar kon esta inkietud...

graxias !!!

# August 6, 2010 5:15 PM

Yilenis ha opinado:

Juan, muchas gracias por esta publicación. tu respuesta me ha ayudado mucho con mi problema.

# January 12, 2011 4:58 PM

Cinthya ha opinado:

MUuuchisimasss gracias... muy muy bueno excelente...

stoy muy agradecida contigo amixs, bye cuidate

# February 27, 2011 7:36 AM

julio cesar ha opinado:

amigos alguien me puede ayudar con algun ejemplo, de asp.net con controles y conexion a access 2007, es que no tengo idea de como se hace todo esto, pues nunca he visto nada de programacion, pero debo realizar una aplicacion, que contenga dropdownlist, listbox, checkbox, panel, y pues la verdad, en algunas ocasiones solo vi algo pero fue de console.readline

por favor algun ejemplo de lo que me pueda ayudar a tener una idea de como hacer esto

si alguien me puede ayudar mi correo es

julioc2-@hotmail.com

que esten muy bien y gracias de verdad

# May 5, 2011 4:46 AM

rafael ha opinado:

hola que tal como estan saludos y muy buena info

soy nuevo en esto de la programacion y quisiera saber como agregar eliminar modificar y mostrar los datos de la base de datos mediante visual c#.

saludo que tengas un buen dia

# May 18, 2011 6:03 PM

jose ha opinado:

Email : sei_g@msn.com

Hola que tal.

hojala tu me puedas ayudar, viendo tu ejemplo tu saber si se puede usar Access con silverlight, c# o vb, VS2010.

Algun ejemplo (web) que realize, Altas, bajas, cambios, consultas e impresiones.

tengo que hacer una aplicacion para web usando access, pero usando silverlight.

# May 19, 2011 12:13 AM

ae ha opinado:

gracias, me sacaste del paso

no te olvides aclara por ahi que hay que poner using System.Data.OleDb;

saludos

# June 23, 2011 7:26 AM

Issabel ha opinado:

Muchas Gracias me sirvio de muchisima ayuda :D

# July 30, 2011 8:50 PM

eliasamado ha opinado:

Hola soy nuevo en esto...el codigo creo que va bien pero aqui me marca dos errores exactamente en esto

//Creo el miembro de datos del DataGridView

     this.dtgDatos.DataMember = "TblDatabase1";

      //Vuelco los datos al DataGridView

     this.dtgDatos.DataSource = dsDatos;

Me marca el dtgDatos y me dice que hace falta un referencia de uso o de ensamblado... no se que me falte... mi codigo completo es el sig.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Data.OleDb;

using System.Windows.Forms;

namespace Conexion_Base_Datos

{

   public partial class Form1 : Form

   {

       public Form1()

       {

           InitializeComponent();

       }

       private void Form1_Load(object sender, EventArgs e)

       {

       }

       private void BTNCONEXION_Click(object sender, EventArgs e)

       {

           //Creo la cadena de conexion para Office 2007

           string cadena = @"Provider=Microsoft.ACE.OLEDB.12.0;

              Data Source=C:\Users\desa\Documents.accdb;Persist Security Info=False";

           //Objeto conexion

           OleDbConnection conexion = new OleDbConnection(cadena);

           //Abro la conexion

           conexion.Open();

           //Creo el adaptador y selecciono los datos de la tabla

           OleDbDataAdapter adap = new OleDbDataAdapter("SELECT * FROM TblDatabase1", conexion);

           //Creo el DataSet

           DataSet dsDatos = new DataSet();

           //Relleno el adaptador con los datos en memoria

           adap.Fill(dsDatos, "TblDatabase1");

           //Creo el miembro de datos del DataGridView

           this.dtgDatos.DataMember = "TblDatabase1";

           //Vuelco los datos al DataGridView

           this.dtgDatos.DataSource = dsDatos;

       }

Ayuda porfas....

# September 28, 2011 11:23 PM

eliasamado ha opinado:

Hola nuevamente me podrias decir a que se refiere con esto o que quiere decir

this.dtgDatos.DataMember = "TblDatabase1";

this.dtgDatos.DataSource= dsDatos;

En este caso mi base de datos se llama Basedata1 y el nombre de la tabla le puse Alumnos.

en "TblDatabase1"; iria Basedata1 o Alumnos

# September 28, 2011 11:38 PM