Base datos c#

Iniciado por F3RN1, 24 Mayo 2008, 16:59 PM

0 Miembros y 1 Visitante están viendo este tema.

F3RN1

Hola estoy haciendo una aplicación en c# que utiliza una bd creada con access. Quiero hacer un codigo de prueba para ver si me doy conectao bien y parece ser que no. Miren el codigo es el siguiente:

public class BD
        {
            DataSet myDataSet;
            string AccessCon;
            OleDbConnection myAccessCon;

            public BD()
            {
                myAccessCon = null;
                AccessCon = "Provider=Microsoft.Jet.OLEDB.12.0;Data Source=C:\\Documents and Settings\\F3RN1\\Mis documentos\\Base_de_Datos_DAS.accdb";
                myDataSet = new DataSet();
            }

            public void conexion()
            {
                try
                {
                    myAccessCon = new OleDbConnection(AccessCon);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error: No se pudo establecer la conexión con la Base de Datos. \n{0}", ex.Message);
                    return;
                }
            }

            public void recuperar(String sentencia, String tabla)
            {
                try
                {
                    OleDbCommand myAccessCommand = new OleDbCommand(sentencia, myAccessCon);
                   
                    OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);

                    myAccessCon.Open();
                    myDataAdapter.Fill(myDataSet, tabla);

                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error: Fallo al recuperar los datos desde la Base de Datos.\n{0}", ex.Message);
                    return;
                }
                finally
                {
                    myAccessCon.Close();
                 
                }
            }

            public void mostrar()
            {
             
                DataTableCollection dta = myDataSet.Tables;
                foreach (DataTable dt in dta)
                {
                   
                    //Console.WriteLine("Encontrada la Tabla {0}", dt.TableName);
                    MessageBox.Show("Encontrada la Tabla {0}", dt.TableName);
                }

               
            }

        }


Esa clase me la he creado yo y ahora en el Form 1 en este método tengo esto:

private void porNºClienteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            baseD = new BD();

            baseD.conexion();

            baseD.recuperar("Select * from Articulos","Articulos");

            baseD.mostrar();


He estado traceando y parece ser que va pasando bien po todo el codigo pero dentro del método mostrar() no entra dentro del foreach y por eso no me muestra el messageBox. ¿Que estoy haciendo mal?.

Decir que mi base de datos en access se llama Base_De_Datos_Das.accdb y tiene dos tablas, Artículos (con datos) y Clientes (vacia de momento).


Un saludo

MANULOMM

pues es puramente error de logica, cual? no tengo idea... :laugh: :laugh: :laugh:, intenta depurar y pon un punto de interrupcion en el inicio del foreach, y fijate cuantas tablas te estan quedando en el DataTableCollection. probare y te cuento en caso del algo.

Atentamente,

Juan Manuel Lombana
Medellín - Colombia


HappyLellow

Buenas,

Por pura lógica, si en el método mostrar no está pasando por el foreach es porque el DataSet no contiene ninguna tabla así que el error estaría en el método que ejecutas antes. Suponiendo que la tabla Artículos tenga algún registro, ¿has comprobado que le asignas la conexión al OleDbDataAdapter?

Por cierto, también te puede servir leer esto:
CitarEl objeto IDbConnection asociado al comando select debe ser válido, aunque no es necesario que esté abierto. Si la interfaz IDbConnection está cerrada antes de llamar a Fill, se abre para recuperar datos y, a continuación, se cierra. Si la conexión está abierta antes de llamar a Fill, permanece abierta.

Saludos.
Whatever stops you from dreamin'
Whatever trys to stop you from livin'
Flip it