none
Conexion Base de Datos con ACCESS ó SQL SERVER 2005

    Pregunta

  • Hola A Todos mi problema es este:

    Como lo he dicho antes estoy desarrollando una aplicación en donde tengo un login.
    He creado una base de datos de prueba llamada: USUARIO EN ACCESS 2007
    donde esta cuenta solamente con una Tabla llamada: USUARIOS tambien; esta tiene dos campos: uno llamado "usuario" y otro llamado "clave"

    Quiero conectar esta base de datos para poder hacer la validación en mi formulario LOGIN

    Cuando le preciono el botón aceptar no hace nada , pero parece que mi conexuion esta bien o no se porke no me tira ningun error al ejecutar mi aplicación
    Solo que no me hace la validación y de prueba he puesto un MessageBox.Show("bien ha pasado");

    Miren mi Codigo:


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.OleDb;

    namespace WindowsFormsApplication1
    {
        public partial class LoginForm : Form
        {
            public LoginForm()
            {
                InitializeComponent();
            }
              
                 
            private void LoginForm_Load(object sender, EventArgs e)
            {
               
                      
            }
                 
            //evento para el botón Aceptar
            private void Aceptar_btn_Click(object sender, EventArgs e)
            {
                //cerando la cadena de conexion
                string cadena =
                @"Provider=Microsoft.ACE.OLEDB.12.0;

                   Data Source=C:\Documents and Settings\Administrator\Desktop\ING. Figueroa\programacion . NET\C#\Proyecto\ORES SOFT\WindowsFormsOreSoft\WindowsFormsOreSoftAPP\USUARIOS.accdb;Persist Security Info=False";

                //Objeto conexion
                OleDbConnection conexion = new OleDbConnection(cadena);
                conexion.Open();
              
                string Usuario = this.usuario_tbx.Text;
                string Clave = this.clave_tbx.Text;

                if (Usuario == "" || Clave == "")
                {
                    MessageBox.Show("Debe llenar los Campos");
                    this.usuario_tbx.Focus();
                    return;
               
                }
             
        //Hago mi consulta           
         string strsql = "SELECT [USUARIO], [CLAVE] FROM USUARIOS WHERE [USUARIO]=" + this.usuario_tbx + "[CLAVE]=" + this.clave_tbx + "";
                  
              
                //admin y ore es la credencial en mi tabla de USUARIOS

                if (Usuario == "admin" && Clave == "Ore")
                {                                             
                    MessageBox.Show("hola ,paso");
                           
                }
             
            }
            //Evento Botón Cancelar
            private void Cancelar_btn_Click(object sender, EventArgs e)
            {  
                //Sale de la aplicacion
                Application.Exit();
                                      
            }
         
                       
        }
    }


    Espero su cooperación si esta a su alcance por favor!!!
    GRACIAS!!!!
    viernes, 24 de julio de 2009 14:36

Respuestas

  • Creo que tienes mal esta línia:

    string queryString = "SELECT [USUARIO], [CLAVE] FROM USUARIOS WHERE [USUARIO]=" + this.usuario_tbx + "[CLAVE]=" + this.clave_tbx + "";

    Creo que deberia ser:

    string queryString = "SELECT [USUARIO], [CLAVE] FROM USUARIOS WHERE [USUARIO]= " + this.usuario_tbx.Text + " AND [CLAVE]=" + this.clave_tbx.Text + "";


    Debugando el codigo y inspeccionando las variables detectarás mejor los posibles errores.

    Espero haberte ayudado.

    Saludos.


    Albert
    viernes, 24 de julio de 2009 16:03

Todas las respuestas

  • Hola,
    No funciona dado que solo generaste una cadena string con la consulta, pero nunca creaste el commando que ejecute la instrucción.
    Checa esta referencia http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.aspx
    Microsoft Certified Technology Specialist .NET 3.5 WPF Application Development
    Profesionista Microsoft VIP México
    Blog Técnico
    World Wide Finalist Imagine Cup 2007
    Microsoft Student Partner
    C#, WPF, WCF
    LinkedIn
    viernes, 24 de julio de 2009 14:44
  • Ok, pero el caso es que no c como hacerlo . creo que el oldcommand es para ejecutar la query ?

    como lo hago?
    viernes, 24 de julio de 2009 14:48
  • string queryString = "SELECT [USUARIO], [CLAVE] FROM USUARIOS WHERE [USUARIO]=" + this.usuario_tbx + "[CLAVE]=" + this.clave_tbx + "";

        using (OleDbConnection connection = new OleDbConnection(connectionString))
        {
            OleDbCommand command = new OleDbCommand(queryString, connection);
            connection.Open();
            OleDbDataReader reader = command.ExecuteReader();
            
            string dbUser, dbPass;

            while (reader.Read())
            {
                
                   dbUser = reader.GetString(0);
                    dbPass = reader.GetStrin(1);
            }
            // always call Close when done reading.
            reader.Close();

            if(dbUser.Equals(Usuario) && dbPass.Equals(Clave)) MessageBox.Show("nice");
            else MessageBox.Show("booooo");
        }

    Microsoft Certified Technology Specialist .NET 3.5 WPF Application Development
    Profesionista Microsoft VIP México
    Blog Técnico
    World Wide Finalist Imagine Cup 2007
    Microsoft Student Partner
    C#, WPF, WCF
    LinkedIn
    viernes, 24 de julio de 2009 14:54
  • bueno disculpame pero mira lo siguiente ... me tira una exepción :

     private void Aceptar_btn_Click(object sender, EventArgs e)
            {
                //cerando la cadena de conexion
                string cadena =
                @"Provider=Microsoft.ACE.OLEDB.12.0;

                   Data Source=C:\Documents and Settings\Administrator\Desktop\ING. Figueroa\programacion . NET\C#\Proyecto\ORES SOFT\WindowsFormsOreSoft\WindowsFormsOreSoftAPP\USUARIOS.accdb;Persist Security Info=False";

           
                string Usuario = this.usuario_tbx.Text;
                string Clave = this.clave_tbx.Text;
              
                if (Usuario == "" || Clave == "")
                {
                    MessageBox.Show("usuer y pass malos!!");
                    this.usuario_tbx.Focus();
                    return;
               
                }

                string queryString = "SELECT [USUARIO], [CLAVE] FROM USUARIOS WHERE [USUARIO]=" + this.usuario_tbx + "[CLAVE]=" + this.clave_tbx + "";
               
                using (OleDbConnection conexion = new OleDbConnection(cadena))
                {

                    OleDbCommand command = new OleDbCommand(queryString, conexion);
                    conexion.Open();
                    OleDbDataReader reader = command.ExecuteReader();
                   
                     while (reader.Read())
                    {
                        Usuario = reader.GetString(0);
                        Clave = reader.GetString(1);
                                       
                    }
                    reader.Close();
                    if (Usuario.Equals(usuario_tbx) && Clave.Equals(clave_tbx)) MessageBox.Show("nice");
                    else MessageBox.Show("booooo");

                }
    estoy mas perdido ke nunca

    cuando opongo el usuario y la clave me tira esta excepción

    Error de sintaxis (coma) en la expresión de consulta '[USUARIO]=System.Windows.Forms.TextBox, Text: admin[CLAVE]=System.Windows.Forms.TextBox, Text: ore'.

    ayudaaaaaaaaaHHHh
    viernes, 24 de julio de 2009 15:46
  • Creo que tienes mal esta línia:

    string queryString = "SELECT [USUARIO], [CLAVE] FROM USUARIOS WHERE [USUARIO]=" + this.usuario_tbx + "[CLAVE]=" + this.clave_tbx + "";

    Creo que deberia ser:

    string queryString = "SELECT [USUARIO], [CLAVE] FROM USUARIOS WHERE [USUARIO]= " + this.usuario_tbx.Text + " AND [CLAVE]=" + this.clave_tbx.Text + "";


    Debugando el codigo y inspeccionando las variables detectarás mejor los posibles errores.

    Espero haberte ayudado.

    Saludos.


    Albert
    viernes, 24 de julio de 2009 16:03
  • ok hermano dejame chekearlo trankilo en mi casa y si tengo la solucion ke me diste, ke creo ke es muy logica y cierta.. entonces te aviso gracias hermano!!!
    domingo, 26 de julio de 2009 0:37
  • por favor ya esto me tiene rojo , lo he intentado y me da exepciones cuando lo ejecuto



    AHORA MIRA TAMBIEN LO MODIFIQUE CONBINANDO LO que ME DISTE CON LO
    QUE TENIA PERO TAMBIEN ME TIRA ESTA EXEPCION:

    ExecuteReader requires an open and available Connection


    mira mi ultimo codigo:


    //evento para el botón Aceptar
            private void Aceptar_btn_Click(object sender, EventArgs e)
            {
                string cadena = @"PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\Administrator\Desktop\ING. Figueroa\programacion . NET\C#\Proyecto\ORES SOFT\WindowsFormsOreSoft\WindowsFormsOreSoftAPP\usuARIOS.accdb";
             

                // cadena de lectura
                string strsql = "select * from  USUARIOS where USUARIO  = " + usuario_tbx.Text + " and CLAVE =" + clave_tbx.Text + "";

                using (OleDbConnection conexion = new OleDbConnection(cadena))
                {
                    OleDbCommand select = new OleDbCommand(strsql, conexion);
                    OleDbDataReader resultado = select.ExecuteReader();
                    conexion.Open();
                    resultado.NextResult();
                    conexion.Dispose();
                    while (resultado.Read())
                    {

                        MessageBox.Show("Entre al sistema");
                        // el codigo ha sido modificado para tu comprension

                    }

                    resultado.Close();
                }         
                                          
           
            }

    jueves, 30 de julio de 2009 16:02
  • por favor ya esto me tiene rojo , lo he intentado y me da exepciones cuando lo ejecuto



    AHORA MIRA TAMBIEN LO MODIFIQUE CONBINANDO LO que ME DISTE CON LO
    QUE TENIA PERO TAMBIEN ME TIRA ESTA EXEPCION:

    ExecuteReader requires an open and available Connection


    mira mi ultimo codigo:


    //evento para el botón Aceptar
            private void Aceptar_btn_Click(object sender, EventArgs e)
            {
                string cadena = @"PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\Administrator\Desktop\ING. Figueroa\programacion . NET\C#\Proyecto\ORES SOFT\WindowsFormsOreSoft\WindowsFormsOreSoftAPP\usuARIOS.accdb";
             

                // cadena de lectura
                string strsql = "select * from  USUARIOS where USUARIO  = " + usuario_tbx.Text + " and CLAVE =" + clave_tbx.Text + "";

                using (OleDbConnection conexion = new OleDbConnection(cadena))
                {
                    OleDbCommand select = new OleDbCommand(strsql, conexion);
                    OleDbDataReader resultado = select.ExecuteReader();
                    conexion.Open();
                    resultado.NextResult();
                    conexion.Dispose();
                    while (resultado.Read())
                    {

                        MessageBox.Show("Entre al sistema");
                        // el codigo ha sido modificado para tu comprension

                    }

                    resultado.Close();
                }         
                                          
           
            }
    jueves, 30 de julio de 2009 16:02
  • por favor ya esto me tiene rojo , lo he intentado y me da exepciones cuando lo ejecuto



    AHORA MIRA TAMBIEN LO MODIFIQUE CONBINANDO LO que ME DISTE CON LO
    QUE TENIA PERO TAMBIEN ME TIRA ESTA EXEPCION:

    ExecuteReader requires an open and available Connection


    mira mi ultimo codigo:


    //evento para el botón Aceptar
            private void Aceptar_btn_Click(object sender, EventArgs e)
            {
                string cadena = @"PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\Administrator\Desktop\ING. Figueroa\programacion . NET\C#\Proyecto\ORES SOFT\WindowsFormsOreSoft\WindowsFormsOreSoftAPP\usuARIOS.accdb";
             

                // cadena de lectura
                string strsql = "select * from  USUARIOS where USUARIO  = " + usuario_tbx.Text + " and CLAVE =" + clave_tbx.Text + "";

                using (OleDbConnection conexion = new OleDbConnection(cadena))
                {
                    OleDbCommand select = new OleDbCommand(strsql, conexion);
                    OleDbDataReader resultado = select.ExecuteReader();
                    conexion.Open();
                    resultado.NextResult();
                    conexion.Dispose();
                    while (resultado.Read())
                    {

                        MessageBox.Show("Entre al sistema");
                        // el codigo ha sido modificado para tu comprension

                    }

                    resultado.Close();
                }         
                                          
           
            }

    jueves, 30 de julio de 2009 17:15