c# - SqlException was unhandled, incorrect syntax -
i have following problem when performing query on sqlserver management:
an unhandled exception of type ' system.data.sqlclient.sqlexception ' occurred in system.data.dll
additional information : incorrect syntax near ' u' .
the code follows:
public static alumno obtenerusuario(string usuarionumero) { //long id_int; //id_int = convert.toint64(pid); using (sqlconnection conexion = bdcomun.obtnerconexion()) { alumno pal = new alumno(); sqlcommand comando = new sqlcommand(string.format("select id, nombre, apellido, usuario, cargo, celular, rfid, fecha_nac, estado, check_acceso, empresa_contratista alumnos id={0}", usuarionumero), conexion); sqldatareader reader = comando.executereader(); while (reader.read()) { pal.nombre = reader.getstring(1); pal.apellido = reader.getstring(2); pal.usuario = reader.getstring(3); pal.cargo = reader.getstring(4); pal.celular = reader.getstring(5); //pal.rfid = reader.getstring(6); pal.fecha_nac = reader.getstring(7); pal.estado = reader.getstring(8); pal.check_acceso = reader.getstring(9); pal.empresa_contratista = reader.getstring(10); } conexion.close(); return pal; } }
the function: public static alumno obtenerusuario(string usuarionumero)
comes from:
public static alumno obtenerusuario(string prfid) { int dato_numerico; int informacion_de_estado_2 = 0; while (prfid.contains("")) { prfid = "123456789012"; } while (prfid.contains("")) { prfid = "123456789012"; } while (prfid.contains("~")) { prfid = "123456789012"; informacion_de_estado_2 = 1; // 1 = acceso denegado 0 = acceso permitido para el registro } while (prfid.contains("¢")) //¢ { prfid = "123456789012"; informacion_de_estado_2 = 1; // 1 = acceso denegado 0 = acceso permitido para el registro } using (sqlconnection conexion = bdcomun.obtnerconexion()) { alumno palumno = new alumno(); sqlcommand comando = new sqlcommand(string.format( "select id, nombre, apellido, usuario, cargo, celular, rfid, fecha_nac, empresa_contratista alumnos rfid = {0}", prfid), conexion); ////try ////{ sqldatareader reader = comando.executereader(); //} //catch (exception exp) //{ // // messagebox.show("por favor inicia registros para habilitar el control.", "iniciar registros", messageboxbuttons.ok, messageboxicon.information); //} while (reader.read()) { palumno.id = reader.getstring(0); palumno.nombre = reader.getstring(1); palumno.apellido = reader.getstring(2); palumno.usuario = reader.getstring(3); palumno.cargo = reader.getstring(4); palumno.celular = reader.getstring(5); palumno.rfid = reader.getstring(6); palumno.fecha_nac = reader.getstring(7); palumno.empresa_contratista = reader.getstring(8); // palumno.fecha_nac = convert.tostring(reader.getdatetime(7)); } conexion.close(); return palumno; } }
how can resolve problem?
appending parameters directly command text bad practice, make vulnurable sql injection. can add variable usuarionumero
parameter this
sqlcommand comando = new sqlcommand("select id, nombre, apellido, usuario, cargo, celular, rfid, fecha_nac, estado, check_acceso, empresa_contratista alumnos id=@id"); cmd.parameters.addwithvalue("@id", usuarionumero );
this should solve problem escaping special characters inside usuarionumero
in resulting sql
Comments
Post a Comment