PDA

Ver la Versión Completa : error funcion login usuario en c# con SQL server


Ariel03
30-01-2008, 12:32:15
holaa... el problema que tengo es con la funcion de verificar usuario que les paso a continuacion, esta recibe como parametros un nombre y password y los verifica si existe en la tabla USUARIO que se encuentra en una base de datos realizada en sql server 2005

esta es la funcion:

public bool verificarUsuar io(string nombre, string pass)
{
SqlConnection cnn = new SqlConnection();
cnn.Connection String = "Server=.\\SQLEXPRESS; database='C:\\Archivos de programa\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Data\\MesaAyuda.mdf';Integ rated Security=True;User Instance=True";
cnn.Open();

System.Text.St ringBuilder sel = new System.Text.St ringBuilder();

sel.Append("SELECT COUNT(*) FROM USUARIO");
sel.Append("WHERE NombreUsuario = @Nombre AND Password = @Clave");

SqlCommand cmd = new SqlCommand(sel.ToString(), cnn);

cmd.Parameters .Add("@Nombre",SqlDbType.NVarChar,5) ;
cmd.Parameters .Add("@Clave", SqlDbType.NVar Char,10);

cmd.Parameters["@Nombre"].Value = nombre;
cmd.Parameters["@Clave"].Value = pass;

int t = Convert.ToInt3 2(cmd.ExecuteSca lar());

cnn.Close();

if (t == 0)
return false;
else
return true;
}

devuelve true o false depende de si encontro algun registro que coincida con los datos ingresados...p ero al ejecutarla me lanza el siguiente error:

Sintaxis incorrecta cerca de '='.

y marca con amarillo la linea:

int t = Convert.ToInt3 2(cmd.ExecuteSca lar());


la verdad ya he leido varios post que hay en este foro y la mayoria lo hacen de esta forma pero no encontre ninguno que tuviera este problema.
si por favor me pueden ayudar les agradeceria mucho.

gracias

Ariel

nightynvid
01-02-2008, 16:50:02
bueno ariel creo que el error esta en la forma en como estas mandando el texto de la consulta sql

en la forma como lo estas concatenando queda asi

"SELECT COUNT(*) FROM USUARIOWHERE NombreUsuario = @Nombre AND Password = @Clave"



entonces te sugiero pongas un espacio para separar el texto de la consulta entre usuario y where y que quede asi ademas de que no esta de mas darle un alias al resultado d ela consulta

"SELECT COUNT(*) total FROM USUARIO WHERE NombreUsuario = @Nombre AND Password = @Clave"



y una recomendacion coloca entre etiquetas tu codigo para que pueda ser mas legible hasta pronto

mamaro
20-02-2008, 23:27:30
No estoy seguro pero creo que el APPEND hace que cada texto quede en una linea separada.
A mi la otra vez me dieron problemas los parámetros (@algo), veo que en tu código se podría hacer algo así:

public bool verificarUsuar io(string nombre, string pass)
{
SqlConnection cnn = new SqlConnection();
cnn.Connection String = "Server=.\\SQLEXPRESS; database='C:\\Archivos de programa\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Data\\MesaAyuda.mdf';Integ rated Security=True;User Instance=True";
cnn.Open();
System.Text.St ringBuilder sel = new System.Text.StringBuilder();
sel.Append("SELECT COUNT(*) FROM USUARIO");
sel.Append("WHERE NombreUsuario = " + nombre + " AND Password = " + pass);
SqlCommand cmd = new SqlCommand(sel.ToString(), cnn);
int t = Convert.ToInt32(cmd.ExecuteScalar());
cnn.Close();
if (t == 0)
return false;
else
return true;
}

Saludos y suerte. :)