• Viernes 20 de Enero de 2017, 21:07

Autor Tema:  crear login en C# utilizando base de datos Sql Server  (Leído 475 veces)

christian1991

  • Nuevo Miembro
  • *
  • Mensajes: 4
  • Nacionalidad: cu
    • Ver Perfil
crear login en C# utilizando base de datos Sql Server
« en: Jueves 22 de Septiembre de 2016, 16:59 »
0

Publicidad 
 :exclamation: :exclamation: Hola compañeros... estoy desarrollando una aplicacion en C# utilizando Visual Studio 2012 y se me ha presentado un problemas a la hora de crear un formulario para login, utilizando una base de datos de sql server. Aqui les dejo el codigo como va hasta ahora y les pido me ayuden con un error que me esta dando. gracias de antemano por cualquier sugerencia.

private void btnSubmit_Click(object sender, EventArgs e)
        {
            try
            {
                // 1 - Crear una instancia de la clase SqlConnection
                string sCnn = "Data Source=" + textBox1.Text + ";Initial Catalog=" + textBox2.Text + ";Integrated Security=True";

                using (SqlConnection Cnn = new SqlConnection(sCnn))
                {
                    // 2 - Abrir la conexión
                    Cnn.Open();
                    // 3 - Crear un nuevo comando para login******** arrglar cmd
                    SqlCommand login_1 = new SqlCommand("SELECT userName, userPass FROM userId WHERE userName=' " + textBox3.Text + " ' ", Cnn);
                    //Ahora para ejecutar la lectura de nuestra bd creamos un reader
                    SqlDataReader miReader;
                   
 //comprobar que la conexion este abierta
                    if(SqlConnection.State == ConnectionState.Open)
                       {
                       ........
                       }

El error me esta dando en el IF, exactamente en SQLCONNECTION.STATE
Christian Zamora
Havana, Cuba

ADONAIRAFA

  • Nuevo Miembro
  • *
  • Mensajes: 2
  • Nacionalidad: ve
    • Ver Perfil
Re:crear login en C# utilizando base de datos Sql Server
« Respuesta #1 en: Viernes 23 de Septiembre de 2016, 02:59 »
0
Muy buenas noches !!!

No se si te servirá el código de ejemplo que voy a colocar (porque uso como BD, FirebirdSQL)...
Normalmente creo una clase externa, en donde diseño un método del que valgo, para abrir la conexión con la Base de Datos...

Código: C#
  1. public FbConnection conn = new FbConnection();
  2. public static string rutaBD = @"\BDScadig20.fdb";
  3. public string cadenaDeConexion = "ServerType=0;User=SYSDBA;Password=masterkey;Packet Size=16384;" +
  4.                                      "Dialect=3;Pooling=false;Database=Application.StartupPath + rutaBD;
  5.  
  6. public void ConectarseConBD()
  7. {
  8.      try
  9.      {
  10.             conn.ConnectionString = cadenaDeConexion;
  11.             if (conn.State == ConnectionState.Closed)
  12.             {
  13.                   conn.Open();
  14.                   /*MessageBox.Show("Se ha establecido la conexión " +
  15.                                 "exitosamente con la Base de Datos !!!",
  16.                                 "Satisfactorio...", MessageBoxButtons.OK,
  17.                                 MessageBoxIcon.Information);*/
  18.             }
  19.      }
  20.      catch (FbException errFb)
  21.      {
  22.             MessageBox.Show("Error al conectar de la base de datos. " +
  23.                         "Descripcion del error: " + errFb.Message,
  24.                         "Error", MessageBoxButtons.OK,
  25.                         MessageBoxIcon.Error);
  26.      }
  27.      catch (Exception ex)
  28.      {
  29.             MessageBox.Show("Error. Descripcion del error: " +
  30.                         ex.Message, "Error", MessageBoxButtons.OK,
  31.                         MessageBoxIcon.Error);
  32.      }
  33. }
  34.  

Yo, en la sentencia if, pregunto si el objeto conn (conn.State) está cerrado (conexión cerrada) y si es así, lo establezco: conn.Open() (abro la conexión...). luego procedo con lo demás...

Fíjate, uso el objeto conn...
En tu caso, deberías usar -----------> Cnn, que es tu objeto SqlConnection...

En el if que colocaste, tu error es usar el "Tipo" en vez el Objeto...

No se si me expliqué bien (espero que si), pero espero te pueda servir de algo !!!



Saludos !!!

Manuel F. Borrego Sterling  :band:
Barcelona, Edo. Anzoátegui. Venezuela.
[Mientras nos permitan seguir comunicándonos]...
« última modificación: Viernes 23 de Septiembre de 2016, 03:44 por ADONAIRAFA »

christian1991

  • Nuevo Miembro
  • *
  • Mensajes: 4
  • Nacionalidad: cu
    • Ver Perfil
Re:crear login en C# utilizando base de datos Sql Server
« Respuesta #2 en: Lunes 26 de Septiembre de 2016, 21:00 »
0
Hola, muchas gracias por tu respuesta, revise y efectivamente me estaba dando el error en el IF por utilizar el tipo en vez del objeto, ya he solucionado este problema, te reitero las gracias y espero que si alguien tiene algun problema similar esto le sirva de ejemplo...   :gracias: :gracias: :gracias: :gracias:
Christian Zamora
Havana, Cuba

christian1991

  • Nuevo Miembro
  • *
  • Mensajes: 4
  • Nacionalidad: cu
    • Ver Perfil
Re:crear login en C# utilizando base de datos Sql Server
« Respuesta #3 en: Lunes 26 de Septiembre de 2016, 23:23 »
0
 :fire: :fire: Hola, tengo otro problema ahora, ya la aplicacion funciona sin ningun error, pero ahora cuando introduzco los datos en los TextBox, no hace nada, aqui pongo todo el codigo a ver si alguien puede ayudarme con esto, le agradeceria cualquier ayuda pues esto es algo importante para mi... :ayuda: :ayuda: :ayuda:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data.Common;

namespace SICPE
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    private void btnSubmit_Click(object sender, EventArgs e)
        {
        // 1 - Crear una instancia de la clase SqlConnection
        string sCnn = "Data Source=" + textBox1.Text + ";Initial Catalog=" + textBox2.Text + ";Integrated Security=True";

          using (SqlConnection Cnn = new SqlConnection(sCnn))
          {
              try
            {
                //ahora compruebo que la conexion este abierta
              if(Cnn.State == ConnectionState.Closed)
              {
                  Cnn.Open();
                  // 3 - Crear un nuevo comando para login
                SqlCommand login1 = new SqlCommand("SELECT nombUsuario, contUsuario FROM usuario WHERE nombUsuario=' " + textBox3.Text + " ' ", Cnn);
                //Ahora para ejecutar la lectura de laa bd creo un reader
                SqlDataReader Reader1;
                  //asigno al reader el comando que escribi arriba
                  Reader1 = login1.ExecuteReader();
                  //ahora mientras se ejecuta comparo los datos
                  while (Reader1.Read())
                    {
                    if (Reader1[0].ToString() == textBox3.Text)
                      {
                    //verificar si la contraseña le pertenece a este nick
                          if (Reader1[1].ToString() == textBox4.Text)
                          {
                              //Codigo a realizar si el login es correcto
                              Form2 Form2 = new Form2();
                              Form2.Show();
                              this.Hide();
                          }
                          else
                          {
                              MessageBox.Show("Error, la contraseña es incorrecta","", MessageBoxButtons.OK, MessageBoxIcon.Error);
                          }
                       }
                         else
                          {
                             MessageBox.Show("Error, el usuario no existe", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                          }
                   }
                 }
                }
                  catch
                  {
                      MessageBox.Show("Revise los datos introducidos", "Error en la conexion", MessageBoxButtons.OK, MessageBoxIcon.Error);
                  }
            }     
       }
        private void btnCancel_Click(object sender, EventArgs e)
        {
        Application.Exit();
        }
    }
}
Christian Zamora
Havana, Cuba

ADONAIRAFA

  • Nuevo Miembro
  • *
  • Mensajes: 2
  • Nacionalidad: ve
    • Ver Perfil
Re:crear login en C# utilizando base de datos Sql Server
« Respuesta #4 en: Martes 27 de Septiembre de 2016, 05:27 »
0
Muy buenas noches !!!

A ver christian1991...!!!

Fíjate en esto (extracto de tu código):

if (Reader1[0].ToString() == textBox3.Text)
{
     //verificar si la contraseña le pertenece a este nick
     if (Reader1[1].ToString() == textBox4.Text)
     {
          ...
Haces uso de .ToString() e indexas al objeto Reader1[0] y Reader1[1]


He ahí el error (eso pienso, y casi que como bien seguro estoy)...
Ahora, prueba de esta forma:

if (Reader1.GetString(0) == textBox3.Text)
{
     //verificar si la contraseña le pertenece a este nick
     if (Reader1.GetString(1) == textBox4.Text)
     {
          ...


Espero te resulte !!!

Saludos !!!



Manuel F. Borrego Sterling  :band:
Barcelona, Edo. Anzoátegui. Venezuela.
[Mientras nos permitan seguir comunicándonos...]