none
Como puedo Conectar una base de datos Acces desde C# RRS feed

  • Pregunta

  • Buenas tardes y un cordial saludo, el motivo de mi mensaje es el siguiente, quiero contactar una base de datos Acces a mi programa desarrollado con el lenguaje WPF y después enlazar un campo de la base de datos a un TextBox, todo esto me gustaría programarlo por C# para tener mas control de toda la base de datos en el programa.

    Encontré un código que permite conectar el programa con la base de datos pero solo faltaría saber como puedo enlazar un campo a especifico a mi TexBox

    El código es el siguiente

    private void Window_Loaded(object sender, RoutedEventArgs e)
            {
    
                OleDbConnection con;//Representa una conexión abierta a un origen de datos
                String ds = "E:/dbproblem.mdb"; //direccion de la base de datos Access
                String stringConexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ds;
    
                try
                {
                    con = new OleDbConnection(@stringConexion);
                    con.Open();//se abre una conexion
                    Console.WriteLine("Conectado a la base de datos.");
                    con.Close();//se cierra la conexion
                    Console.WriteLine("La conexion ha terminado.");
                }
                catch (System.Exception ex)
                {
                    Console.WriteLine("ERROR:" + ex.Message);
                }
    
                Console.WriteLine("Presione cualquier tecla para terminar");
                Console.ReadKey();
            }
    Realmente no se si sea la manera correcta de conectar una base de datos acces pero si surge algún detalla de favor háganmelo saber, de mi parte es todo y espero puedan ayudarme, muchas gracias

     
    martes, 28 de mayo de 2019 21:11

Respuestas

  • Hola.

    Me imagino que para obtener el campo que quieres aras un filtro en la consulta(si no haces filtro te va devolver todos los datos que tengas en la tabla)

    Arias algo asi.

          //cadena de conexion  
          using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:/dbproblem.mdb ")
            {
    	       //consulta a la base de datos
                string sql = @"SELECT NombreCampo
                              FROM TuTabla
                              WHERE CampoFiltro = @campofiltro";
     
                    conn.Open();//abrimos conexion
     
                     OleDbCommand cmd = new  OleDbCommand(sql, conn); //ejecutamos la instruccion
                    cmd.Parameters.AddWithValue("campofiltro", TexboxFiltro.Text); //enviamos los parametros
     
                    //creamos el adaptador
     
                     OleDbDataAdapter da = new  OleDbDataAdapter(cmd);
     
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    //valido si encruentra datos
                    if (dt.Rows.Count > 0)
                    {
                        DataRow row = dt.Rows[0];
                        Textbox1.Text = Convert.ToString(row["NombreCampo"]);//muestro dato en texbox
    
                    }
    	}
    Como veras en la consulta sql haces un filtro para obtener un dato en especifico y en el ejemplo envías ese dato a filtrar con el dato de un texboxFiltro
    cmd.Parameters.AddWithValue("campofiltro", TexboxFiltro.Text);

    Saludos


    Cristian Torres
    Blog Cristian Torres

    El Salvador - San Salvador

    • Marcado como respuesta Jovanny CJ miércoles, 29 de mayo de 2019 22:31
    miércoles, 29 de mayo de 2019 21:59

Todas las respuestas

  • Hola Christian,

    Mas o menos debería ser asi, considerar que es un ejemplo para que te de una idea de como hacerlo ya dependerá de ti mejorar el código.

    private void Window_Loaded(object sender, RoutedEventArgs e)
            {
    
                OleDbConnection con;//Representa una conexión abierta a un origen de datos
                String ds = "E:/dbproblem.mdb"; //direccion de la base de datos Access
                String stringConexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ds;
    
                try
                {
                    con = new OleDbConnection(@stringConexion);
                    con.Open();//se abre una conexion
                    Console.WriteLine("Conectado a la base de datos.");
    
            	DataTable dt = new DataTable();
            	OleDbDataAdapter da = new OleDbDataAdapter();
            	DataSet ds = new DataSet();
    
            	da.SelectCommand = new OleDbCommand("select * FROM Sheet1 ", cn); //aqui va la consulta que desees
    
            	da.Fill(ds);
            	dt = ds.Tables[0];
    
    		txtCampo.Text = dt.Row[0][0]; //aqui obtienes el valor del datatable y lo seteas en el textbox que desees
    
                    con.Close();//se cierra la conexion
                    Console.WriteLine("La conexion ha terminado.");
                }
                catch (System.Exception ex)
                {
                    Console.WriteLine("ERROR:" + ex.Message);
                }
    
                Console.WriteLine("Presione cualquier tecla para terminar");
                Console.ReadKey();
            }


    SI te sirve mi respuesta por favor marcarla como válida.

    Saludos

    miércoles, 29 de mayo de 2019 0:01
  • Hola.

    Me imagino que para obtener el campo que quieres aras un filtro en la consulta(si no haces filtro te va devolver todos los datos que tengas en la tabla)

    Arias algo asi.

          //cadena de conexion  
          using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:/dbproblem.mdb ")
            {
    	       //consulta a la base de datos
                string sql = @"SELECT NombreCampo
                              FROM TuTabla
                              WHERE CampoFiltro = @campofiltro";
     
                    conn.Open();//abrimos conexion
     
                     OleDbCommand cmd = new  OleDbCommand(sql, conn); //ejecutamos la instruccion
                    cmd.Parameters.AddWithValue("campofiltro", TexboxFiltro.Text); //enviamos los parametros
     
                    //creamos el adaptador
     
                     OleDbDataAdapter da = new  OleDbDataAdapter(cmd);
     
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    //valido si encruentra datos
                    if (dt.Rows.Count > 0)
                    {
                        DataRow row = dt.Rows[0];
                        Textbox1.Text = Convert.ToString(row["NombreCampo"]);//muestro dato en texbox
    
                    }
    	}
    Como veras en la consulta sql haces un filtro para obtener un dato en especifico y en el ejemplo envías ese dato a filtrar con el dato de un texboxFiltro
    cmd.Parameters.AddWithValue("campofiltro", TexboxFiltro.Text);

    Saludos


    Cristian Torres
    Blog Cristian Torres

    El Salvador - San Salvador

    • Marcado como respuesta Jovanny CJ miércoles, 29 de mayo de 2019 22:31
    miércoles, 29 de mayo de 2019 21:59
  • Cristian Torres muchas gracias por tu respuesta
    miércoles, 29 de mayo de 2019 22:32