none
vb.NET 2010 SQL CE y procedimiento almacenado RRS feed

  • Pregunta

  • Hola a todos, tengo una aplicación que es usada en mas de 20 ciudades y conecta a un servidor SQL 2008.

    Para no sobrecargar el servidor con la ejecución constante de procedimientos almacenados en el mismo, y para que los clientes no dependan al 100% de una conexión a internet, opté por un merge con SQL CE 3.5.

    Después de tanta lucha logré la réplica y hasta ahi todo perfecto. El tema es que nunca había trabajado con SQL CE, y por tanto ahora bienen las dudas..

    Tengo una función por ejemplo, que en el login de la aplicación me valida el usuario:

    Public Function validar(ByVal dts As empleados)
            Try
                conectado()
                cmd = New SqlCeCommand("validar_usuario")
    
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Connection = cnn
    
                cmd.Parameters.AddWithValue("@id", dts.gid)
                cmd.Parameters.AddWithValue("@ciudad", dts.gciudad)
                cmd.Parameters.AddWithValue("@login", dts.glogin)
                cmd.Parameters.AddWithValue("@password", dts.gpassword)
    
                Dim dr As SqlCeDataReader
                dr = cmd.ExecuteReader
    
                If dr.HasRows = True Then
                    Return True
                Else
                    Return False
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
                Return False
            Finally
                desconectado()
            End Try
        End Function

    esta función validar, está dentro de la clase funciones que instancia a la clase empleados donde tengo los constructores dts.

    Esta función, así como las funciones mostrar, actualizar, eliminar, agregar dentro de la misma clase "funciones" las he usado en versiones anteriores de mi app conectando directamente con el SQL, luego usando OleDB ya que necesitaba usar archivos *.udl para modificar el servidor en tiempo de ejecución...

    El procedimiento que uso en el SQL para validar es el siguiente:

    create proc validar
    @id integer,
    @ciudad varchar(50),
    @login varchar(50),
    @password varchar(50)
    as
    select * from empleados
    where login=@login and password=@password and ciudad=@ciudad and acceso='1'

    La duda es, teniendo en cuenta la función, como envío ahora este procedimiento desde el visua?

    Su ayuda me va a servir para poder adecuar el resto de los procedimientos que ahora tengo que incluír en el código.

    Desde ya agradezco cualquier ayuda o guía que me puedan brindar.

    • Cambiado Enrique M. Montejo sábado, 18 de junio de 2016 7:26 Pregunta relacionada con el acceso a datos con Sql Server Compact 3.5.
    miércoles, 15 de junio de 2016 14:49

Todas las respuestas

  • Modifiqué un poco la función..

    Public Function validar(ByVal dts As constructores)
            Try
                conectado()
                Dim cmd As New SqlCeCommand("SELECT * FROM mitabla where login=@login and password=@password and ciudad=@ciudad and acceso='1'", cnn)
                cmd.CommandType = CommandType.TableDirect
                cmd.Connection = cnn
    
                cmd.Parameters.AddWithValue("@id", dts.gid)
                cmd.Parameters.AddWithValue("@ciudad", dts.gciudad)
                cmd.Parameters.AddWithValue("@login", dts.glogin)
                cmd.Parameters.AddWithValue("@password", dts.gpassword)
    
                Dim dr As SqlCeDataReader
                dr = cmd.ExecuteReader
    
                If ((cmd.CommandType = CommandType.TableDirect) AndAlso (dr.HasRows)) Then
                    Return True
                Else
                    Return False
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
                Return False
            Finally
                desconectado()
            End Try
        End Function

    Ahora me dice que la tabla no existe..

    Alguna sugerencia?

    miércoles, 15 de junio de 2016 17:19