Chaveca 0 Posted March 22, 2011 Report Share Posted March 22, 2011 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!" Link to post Share on other sites
bioshock 180 Posted March 22, 2011 Report Share Posted March 22, 2011 Chamas a função. ExecuteNonQuery("A tua query...", Os teus parâmetros) Link to post Share on other sites
jpaulino 90 Posted March 22, 2011 Report Share Posted March 22, 2011 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) Link to post Share on other sites
Chaveca 0 Posted March 23, 2011 Author Report Share Posted March 23, 2011 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!" Link to post Share on other sites
jpaulino 90 Posted March 23, 2011 Report Share Posted March 23, 2011 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) Link to post Share on other sites
Chaveca 0 Posted March 24, 2011 Author Report Share Posted March 24, 2011 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 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!" Link to post Share on other sites
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now