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. [;)]

24 comentarios sobre “Conectando nuestra aplicacion .NET (C#) con MS Access 2007”

  1. 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

  2. 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

  3. 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…

  4. 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.

  5. 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).

  6. 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

  7. 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??

  8. 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.

  9. 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

  10. 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 !!!

  11. 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

  12. 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

  13. 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.

  14. 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:UsersdesaDocuments.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….

  15. 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

Responder a anonymous Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *