CLR: .Net / Mono / Boo / Otros CLR > C#
crear login en C# utilizando base de datos Sql Server
christian1991:
: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
ADONAIRAFA:
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# ---public FbConnection conn = new FbConnection();public static string rutaBD = @"\BDScadig20.fdb";public string cadenaDeConexion = "ServerType=0;User=SYSDBA;Password=masterkey;Packet Size=16384;" + "Dialect=3;Pooling=false;Database=Application.StartupPath + rutaBD; public void ConectarseConBD(){ try { conn.ConnectionString = cadenaDeConexion; if (conn.State == ConnectionState.Closed) { conn.Open(); /*MessageBox.Show("Se ha establecido la conexión " + "exitosamente con la Base de Datos !!!", "Satisfactorio...", MessageBoxButtons.OK, MessageBoxIcon.Information);*/ } } catch (FbException errFb) { MessageBox.Show("Error al conectar de la base de datos. " + "Descripcion del error: " + errFb.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) { MessageBox.Show("Error. Descripcion del error: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); }}
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]...
christian1991:
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:
christian1991:
: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();
}
}
}
ADONAIRAFA:
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...]
Navegación
[#] Página Siguiente
Ir a la versión completa