Crear Incio De Sesion Con Access Y Visual Studio
-
miércoles, 06 de febrero de 2013 15:45
Mis saludos a todos y muchas gracias por las respuestas que hagan referente a este tema .
Bueno lo que pasa es que estoy haciendo un incio de sesion y aun no entiendo bien y nose como usar access con visual studio el codigo que tengo en este momento es este que corresponde al el boton de inicio de sesion:
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
if (txtlogin.Text == "")
{
lbl_error.Text = "Ingrese un Nombre de Usuario";
}
else
{
if (txtpasword.Text == "")
{
lbl_error.Text = "Ingrese la contraseña";
}
else
{
BDrutinas BD = new BDrutinas();
int user = BD.Usuarios(txtlogin.Text, txtpasword.Text);
if (user == 0)
{
lbl_error.Text = "Usuario o Contraseña Inconrrectos";
}
else
{
if (user == 1)
{
Response.Redirect("\\PaginaPrincipal.aspx?Usuario=" + txtlogin.Text + "");
Response.Redirect("\\Default.aspx");
}
}
}
}
}luego de esto tengo el .cs y es aqui donde me esta dando el error
using System;
using System.Collections.Generic;
using System.Web;
using System.Data;
using System.Data.OleDb;
using System.Text;
public class BDrutinas
{
private OleDbConnection oConn = null;
public OleDbConnection Conectar()
{
string conexion = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Gin\DI_G.mdb";
OleDbConnection conectaBd = new OleDbConnection(conexion);
try
{
conectaBd.Open();
}
catch (OleDbException eX)
{
throw new ArgumentException(eX.Message);
}
return (conectaBd);
}
public void CloseAll()
{
if (!((oConn == null)) && (oConn.State != ConnectionState.Closed))
{
oConn.Close();
oConn = null;
}
}
public DataTable popDTable(string Qry) //devuelve datatable desde consulta
{
OleDbConnection oConn = Conectar();
OleDbCommand oldCmd = new OleDbCommand(Qry, oConn);
oldCmd.CommandType = CommandType.Text;
DataTable dt = new DataTable();
try
{
OleDbDataAdapter daD = new OleDbDataAdapter(oldCmd);
daD.Fill(dt);
daD.Dispose();
}
catch (OleDbException eX)
{
throw new ArgumentException(eX.Message);
}
finally
{
oConn.Close();
oldCmd.Dispose();
}
return dt;
}
public Boolean execSqlQry(string Qry) //ejecuta sql directo a BD
{
bool result = false;
OleDbConnection oConn = Conectar();
OleDbCommand sqlCmd = new OleDbCommand(Qry, oConn);
sqlCmd.CommandType = CommandType.Text;
try
{
sqlCmd.ExecuteNonQuery();
result = true;
}
catch (OleDbException eX)
{
throw new ArgumentException(eX.Message);
}
finally
{
oConn.Close();
sqlCmd.Dispose();
}
return result;
}
public int Usuarios(string usuario, string contraseña)
{
OleDbConnection cnn = Conectar();
using (cnn)
{
OleDbCommand cmd = new OleDbCommand(@"SELECT Usuarios (@NombreUsuario, @Clave)", cnn);
cmd.Parameters.Add("@NombreUsuario", OleDbType.VarChar, 35);
cmd.Parameters.Add("@Clave", OleDbType.VarChar, 10);
cmd.Parameters["@NombreUsuario"].Value = usuario;
cmd.Parameters["@Clave"].Value = contraseña;
int user = Convert.ToInt32(cmd.ExecuteScalar());
return (user);
}
}El error me lo marca donde e selecionado con negrita
int user = Convert.ToInt32(cmd.ExecuteScalar());
Y el error me que da es el siguiente:
La función 'Usuarios' no está definida en la expresión.
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.
Detalles de la excepción: System.Data.OleDb.OleDbException: La función 'Usuarios' no está definida en la expresión.Trate de explicar lo mas detalladamente, solo necesito poder entrar al inicio de sesion, desde ya muchas gracias saludos.
Sebastian Peralta
Todas las respuestas
-
miércoles, 06 de febrero de 2013 16:08Moderador
este query es incorrecto
SELECT Usuarios (@NombreUsuario, @Clave)
deberia ser
SELECT COUNT(*) FROM Usuarios WHERE nombre = @NombreUsuario AND clave = @Clave
de esa forma devolvera la cantidad de registros
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
miércoles, 06 de febrero de 2013 18:25
consulta y en la query que me menciona
nombre = @NombreUsuario AND clave = @Clave
ese nombre y esa clave que vendria siendo por lo que entiendo debe quedar asi o noo?
public int Usuarios(string usuario, string contraseña)
{
OleDbConnection cnn = Conectar();
using (cnn)
{
OleDbCommand cmd = new OleDbCommand(@"SELECT COUNT(*) FROM Usuarios WHERE nombre = @NombreUsuario AND clave = @Clave)", cnn);
cmd.Parameters.Add("@NombreUsuario", OleDbType.VarChar, 35);
cmd.Parameters.Add("@Clave", OleDbType.VarChar, 10);
cmd.Parameters["@NombreUsuario"].Value = usuario;
cmd.Parameters["@Clave"].Value = contraseña;
int user = Convert.ToInt32(cmd.ExecuteScalar());
return (user);
}
}Sebastian Peralta

