Jump to content
Chaveca

Pesquisa condicionada

Recommended Posts

Chaveca

Boas a todos,

eu estou a tentar fazer uma pesquisa, que só utilize os parametros que eu lhe passar; eu já andei pelo fórum e encontrei este  /Tópico/, porem eu tenho a abertura de conexão e passo os parametros em sítios separados.

Resumindo, eu tenho um "SQLHelper" que contem funções já feitas que me ajudam (executequery, executescalar, abrir conexão, etc), depois uso uma BLL(Business logic layer) para coisas já especificas do programa(inserir utilizadores, remover, etc), e por fim chamo as no fórum respectivo.

Eu não estou é a ver como utilizar esses exemplos, que são aplicações directas num form, para o meu caso.

As minhas funções que utilizo no helper:

Public Shared Sub CreateConnection()
        If sqlConn Is Nothing Then
            sqlConn = New SqlConnection(strConnectionString)
        End If
    End Sub

  Shared Sub OpenConnection()
        If sqlConn.State <> ConnectionState.Open Then
            sqlConn.Open()
        End If
    End Sub

 Shared Sub closeConnection()
        If sqlConn.State <> ConnectionState.Closed Then
            sqlConn.Close()
        End If
    End Sub

Shared Function ExecuteNonQuery(ByVal SQLText As String, ByRef Params As ArrayList) As Integer
        Dim cmdSQL As New SqlCommand(SQLText, sqlConn)
        Try
            For Each Param As SqlParameter In Params
                cmdSQL.Parameters.Add(Param)
            Next
            OpenConnection()
            Return CInt(cmdSQL.ExecuteNonQuery)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            'Return -1
        Finally
            closeConnection()
            cmdSQL.Parameters.Clear()
            cmdSQL.Dispose()
        End Try
    End Function

Então como passo os parametros?

Cumprimentos


"Há 10 tipos de pessoas, as que sabem binário e as que não...""Run DOS, Run!"

Share this post


Link to post
Share on other sites
bioshock

Chamas a função.

ExecuteNonQuery("A tua query...", Os teus parâmetros)

Share this post


Link to post
Share on other sites
jpaulino

Eu não entendo porque perdem tempo a tentar automatizar processos quando podem usar algo como o Entity Framework que faz grande parte do trabalho por vocês.

Mas de qualquer forma não podes fazer isso assim, pois tens de indicar o parametro, o tipo de dados e o valor. Tens de repensar ou fazer algo mais sério (EF)

Share this post


Link to post
Share on other sites
Chaveca

Eu não entendo porque perdem tempo a tentar automatizar processos quando podem usar algo como o Entity Framework que faz grande parte do trabalho por vocês.

Mas de qualquer forma não podes fazer isso assim, pois tens de indicar o parametro, o tipo de dados e o valor. Tens de repensar ou fazer algo mais sério (EF)

Jpaulino eu não perco tempo a automatiza-los pois já os tenho automatizados há algum tempo, e foi assim que eu aprendi, e o Entety veio so a partir do 2008, e na altura como era algo recente e ainda pouco utilizado fui habituado a utilizar um Helper (eu estou num curso de programação), e para alem disso a empresa onde estou a estagiar pôs me numa conta com falta de privilégios, como tal não sou capaz de fazer conecções automáticas á base de dados.

E eu utilizo as funções assim:

Public Shared Sub AdicionarUtilizador(ByVal Username As String, ByVal Password As String)
        Dim ap As New ArrayList

        ap.Add(CriarParametros("Nick", SqlDbType.VarChar, Username))
        ap.Add(CriarParametros("Pass", SqlDbType.VarChar, Password))

        ExecuteNonQuery("Insert into Utilizador(Nick,Pass,Admin_Geral) values('" & Username & "', '" & Password & "',0)", ap)

    End Sub

Posso fazer algo desse tipo?


"Há 10 tipos de pessoas, as que sabem binário e as que não...""Run DOS, Run!"

Share this post


Link to post
Share on other sites
jpaulino

Mas o que é isso que estás a fazer? O que faz a função ExecuteNonQuery?

É que estás a definir parameters e depois não usas e fazes concatenação da string (TSQL)

Share this post


Link to post
Share on other sites
Chaveca

Ups... Agora é que reparei que demonstrei o exemplo errado, o execute nonquery é para efectuar registo que não necessitem retorno de valor(update e delete)

Eu para fazer select utilizo o ExecuteQuery

Public Shared Function ExecuteQuery(ByVal SQLText As String, ByRef Params As ArrayList) As ArrayList
        Dim cmdSQL As New SqlCommand(SQLText, sqlConn)
        Dim Result As New ArrayList
        Try
            If Not (Params Is Nothing) Then
                For Each Param As SqlParameter In Params
                    cmdSQL.Parameters.Add(Param)
                Next
            End If
            OpenConnection()
            Dim dr As SqlDataReader = cmdSQL.ExecuteReader
            While dr.Read()
                For i As Integer = 0 To dr.FieldCount - 1
                    Result.Add(dr(i))
                Next
            End While
            Return Result
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            'Return Nothing

        Finally
            cmdSQL.Dispose()
            closeConnection()
        End Try

Peço desculpa por ter postado o código errado  ;):confused::D

Edit:

Já consegui  ;) fazer, deveria postar aqui a maneira correcto?


"Há 10 tipos de pessoas, as que sabem binário e as que não...""Run DOS, Run!"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.