Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Noskcire en 27 Julio 2009, 19:17 pm



Título: Conexion Base de Datos con ACCESS ó SQL SERVER 2005
Publicado por: Noskcire en 27 Julio 2009, 19:17 pm
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")



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();
                                 
        }
     
                   
    }
}


Título: Re: Conexion Base de Datos con ACCESS ó SQL SERVER 2005
Publicado por: Pablo Videla en 29 Julio 2009, 00:06 am
Hola que tal , creo que la consulta sql, esta mal hecha... seria tu la tienes asi

Código
  1. string strsql = "SELECT [USUARIO], [CLAVE] FROM USUARIOS WHERE [USUARIO]=" + this.usuario_tbx + "[CLAVE]=" + this.clave_tbx +

creo que seria asi la forma correcta

Código
  1. string strsql = "SELECT [USUARIO], [CLAVE] FROM USUARIOS WHERE [USUARIO]=" + this.usuario_tbx.Text + " AND [CLAVE]=" + this.clave_tbx.Text +"
  2.  
  3. // si los datos son de textos algunos necesitan la comilla simple '
  4. // dependiendo en que caso se vea...
  5. // tu error era que te falta la clausula AND en la consulta sql
  6. // puedo estar equivocado , pero confirmalo.
  7.  

Y otra cosa, de donde estas obteniendo los datos clave y usuario , no veo que lo guarden en la variable que supuestamente deben obtener de la consulta sql.... creo que hay varios problemas ahi , por que no estas validando segun la consulta sql.....  :-\


aqui te dejo un ejemplo como deberia ser... esto lo hice yo...

Código
  1.  OleDbConnection cnn = new OleDbConnection();
  2.                cnn.ConnectionString = @"PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\autos.mdb";
  3.                cnn.Open();
  4.                OleDbCommand select = new OleDbCommand("select * from usuarios where usuario = "+txt1.Text+" and password = "+txt2.Text+"");
  5.                OleDbDataReader resultado;
  6.                resultado = select.ExecuteReader();
  7. // significa que mientras resultado arroje algo entrara en el while, si no , no //actuara
  8.                while (resultado.Read())
  9.                {
  10.                    MsgBox("Entre al Sistema");
  11.                }// el codigo ha sido modificado para tu comprension
  12.  


Título: Re: Conexion Base de Datos con ACCESS ó SQL SERVER 2005
Publicado por: Noskcire en 30 Julio 2009, 17:58 pm
Hola Hermano Gracias por la atención pero sigo con el problema.
Resulta que lo hice como me dijiste y me tira una exepción :

Connection property has not been initialized.

y se para el debuger en esta parte del codigo:

  resultado = select.ExecuteReader();

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 AULTIMO 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();
            }         
                                       
       
        }

Y RECUERDATE QUE  ESTA BASE DE DATOS ES EN ACCESS 2007 POR ESO EL PROVIDER LO PUSE COMO ESTA Y NO COMO TU LO PUSISTE

SI POR FAVOR ME PODRIAS MANDAR ALGO TERMINADO OSEA UN EJEMPLO CON TODO EL CODIGO, TE LO AGRADECERIA HERMANO YA ESTOY ROJO CON ESTO

GRACIAS ESPERO RESP...!!!1


Título: Re: Conexion Base de Datos con ACCESS ó SQL SERVER 2005
Publicado por: Pablo Videla en 30 Julio 2009, 18:51 pm
Coloca OleDbDataReader resultado = select.ExecuteReader(); antes del executeReader por eso no detecta la conexion. , saludos si sigues con problemas me dices y te busco ejemplos


Título: Re: Conexion Base de Datos con ACCESS ó SQL SERVER 2005
Publicado por: Noskcire en 30 Julio 2009, 21:39 pm
ok te hago saber si me funciona y si no por favor buscame un ejemplo creado please!!


Título: Re: Conexion Base de Datos con ACCESS ó SQL SERVER 2005
Publicado por: Noskcire en 30 Julio 2009, 21:45 pm
no me funcionó out! si sta a tu alcance los ejemplos plz


Título: Re: Conexion Base de Datos con ACCESS ó SQL SERVER 2005
Publicado por: Pablo Videla en 30 Julio 2009, 22:28 pm
mas claro imposible

Código
  1. private void btAcceder_Click(object sender, EventArgs e)
  2.        {
  3.            try
  4.            {
  5.                OleDbConnection cnn = new OleDbConnection();
  6.                cnn.ConnectionString = @"PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\autos.mdb";
  7.                cnn.Open();
  8.                OleDbCommand select = new OleDbCommand("select * from conexion where password = '" + txtPassword.Text + "'", cnn);
  9.                OleDbDataReader resultado;
  10.                resultado = select.ExecuteReader();
  11.  
  12.                while (resultado.Read())
  13.                {
  14.                    MessageBox.Show("Clave Correcta");
  15.                    tabControl1.Visible = true;
  16.                    btVerBase.Visible = true;
  17.                    btAcceder.Visible = false;
  18.                    txtPassword.Visible = false;
  19.                    label19.Visible = false;
  20.                    lbMaxConVerde.Visible = false;
  21.                    label1.Visible = true;
  22.                    //size 662; 689
  23.                    this.Size = new System.Drawing.Size(662, 689);
  24.                }
  25.                if (tabControl1.Visible == false)
  26.                {
  27.                    MessageBox.Show("Clave Incorrecta , intente nuevamente");
  28.                }
  29.  
  30.  
  31.            }
  32.            catch (Exception error)
  33.            {
  34.                MessageBox.Show("Error..." + error.Message);
  35.            }
  36.  
  37.        }


Título: Re: Conexion Base de Datos con ACCESS ó SQL SERVER 2005
Publicado por: Noskcire en 3 Agosto 2009, 20:46 pm
Gracias hermano , de todos modos no funciono, mejor lo hare con el sql en vez del acces


Título: Re: Conexion Base de Datos con ACCESS ó SQL SERVER 2005
Publicado por: Pablo Videla en 3 Agosto 2009, 23:16 pm
Por que no funciono :huh: , tratamos de solucionarlo viejo , de eso se trata la programacion , solucionar problemas  ;D

ahora dinos que error te salio y todo con lujos de detalles si es posible, los codigos completos


Título: Re: Conexion Base de Datos con ACCESS ó SQL SERVER 2005
Publicado por: seba123neo en 4 Agosto 2009, 04:19 am
Gracias hermano , de todos modos no funciono, mejor lo hare con el sql en vez del acces


un ejemplo mas facil no te pudieron poner...deci porque no te funciono...sino es pura suposición...mira el codigo y seguilo y fijate porque no anda...no creo que lo hayas escrito tal cual, debes adaptarlo a lo que vos tenes...

saludos.


Título: Re: Conexion Base de Datos con ACCESS ó SQL SERVER 2005
Publicado por: Noskcire en 7 Agosto 2009, 16:14 pm
ok gracias , si no le molesta le pondre el codigo completo como yo lo hago y hasta pondre el error de exepcion que me da , orita se lo publico, en verdad ya casi me resigno y lo hago en sql , pero se l mandare


Título: Re: Conexion Base de Datos con ACCESS ó SQL SERVER 2005
Publicado por: Pablo Videla en 7 Agosto 2009, 23:12 pm
ok gracias , si no le molesta le pondre el codigo completo como yo lo hago y hasta pondre el error de exepcion que me da , orita se lo publico, en verdad ya casi me resigno y lo hago en sql , pero se l mandare
Esperamos tu codigo  ;)