ASP.NET - problemas con MySQL

 
Vista:

problemas con MySQL

Publicado por Alfredo (47 intervenciones) el 01/11/2010 20:10:58
Estoy trabajando VS 2005 con MySQL, cuando acceso a datos a través de procedimientos almacenados sin parametros no hay problema, pero cuando trato de usar uno con parametros no me retorna los resultados, ya he ejecutado el procedimiento y si retorna datos. Este es mi código divido en 3 capas, a ver si logran ayudarme a ver cual es el problema.

capa de presentacion
Dim dsUsu As New DataSet
Dim BLUsuarios As New BLogicaNegocio.lnUsuarios
dsUsu = BLUsuarios.fAutenticaUsuarios(UserName, Password)

Capa de logina de negocio
Public Function fAutenticaUsuarios(ByVal codigo As String, ByVal clave As String) As DataSet
Dim ds As New DataSet
Try
ds = Me.DatosSql.TraerDataSet("PE_C_TM_USUARIOS", codigo, clave)

Catch ex As Exception
Dim mensaje As String = ex.Message
End Try
Return ds
End Function

capa de acceso a datos
Public Overloads Function TraerDataSet(ByVal procedimientoAlmacenado As String, ByVal ParamArray args As [Object]()) As DataSet
Dim mDataSet = New DataSet()
CrearDataAdapter(procedimientoAlmacenado, args).Fill(mDataSet)
Return mDataSet
End Function

Protected Overrides Function CrearDataAdapter(ByVal ProcedimientoAlmacenado As String, ByVal ParamArray Args() As Object) As System.Data.IDataAdapter
Dim mCom As MySqlCommand = Comando(ProcedimientoAlmacenado)

If Not Args Is Nothing Then
CargarParametros(mCom, Args)
End If
Return New MySqlDataAdapter(mCom)

End Function

Protected Overrides Sub CargarParametros(ByVal com As System.Data.IDbCommand, ByVal args As [Object]())
For i As Integer = 1 To com.Parameters.Count - 1
Dim p = DirectCast(com.Parameters(i), MySql.Data.MySqlClient.MySqlParameter)
p.Value = IIf(i <= args.Length, args(i - 1), Nothing)
Next
End Sub

Este es el procedimiento
CREATE DEFINER=`root`@`localhost` PROCEDURE `PE_C_TM_USUARIOS`(IN codigo varchar(20), IN clave varchar(255))
BEGIN
DECLARE numactpass integer;
DECLARE idusuario integer;
DECLARE valor integer;
select -1 into valor;

select idtf_usuarios into idusuario from `mydb`.`tm_usuarios`
where cedula = codigo;

SELECT numeroactualpassword into numactpass from `mydb`.`td_seguridadusuarios`
where tm_usuarios_idtf_usuarios = idusuario;

if numactpass = 1 then
SELECT A.PrimerNombre, A.ApellidoPaterno
FROM `mydb`.`tm_usuarios` A, `mydb`.`td_seguridadusuarios` B
where
A.cedula = codigo and
A.idtf_usuarios = B.tm_usuarios_idtf_usuarios and
DES_DECRYPT( password1) = clave;
end if;
if numactpass = 2 then
/*SELECT 1 into valor*/
SELECT A.PrimerNombre
FROM `mydb`.`tm_usuarios` A, `mydb`.`td_seguridadusuarios` B
where
A.cedula = codigo and
A.idtf_usuarios = B.tm_usuarios_idtf_usuarios and
DES_DECRYPT( password2) = clave;
end if;
if numactpass = 3 then
SELECT A.PrimerNombre
FROM `mydb`.`tm_usuarios` A, `mydb`.`td_seguridadusuarios` B
where
A.cedula = codigo and
A.idtf_usuarios = B.tm_usuarios_idtf_usuarios and
DES_DECRYPT( password3) = clave;
end if;

select valor;

END
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder