djbarbas Posted November 25, 2020 at 12:51 PM Report Share #620378 Posted November 25, 2020 at 12:51 PM Olá a todos! Já faço desenvolvimento em VB.NET a algum tempo. Embora tenha tido programação na escola (Pascal, C++ e VB6) acabei por alguns anos depois do ambiente escolar por migrar para esta nova linguagem de uma forma auto didática pelo que em algumas vezes julgo que poderei não estar a adotar as melhores práticas na realização de uma determinada Acão. No caso em concreto que apresento hoje aqui tem haver com a forma de acessos a Bases de Dados, no meu caso específico a Bases de Dados Microsoft SQL Server. Em todas as aplicações que desenvolvo e que necessitam acesso a uma base de dados, faço através da criação de algumas variáveis e instanciação de alguns objectos num módulo de forma a ficar visível em todo o projeto. Estas variáveis são: mssql_cn (SqlClient.SqlConnection) -> Guarda a String de ligação ao Servidor MSSQL mssql_db (String) -> Define a Base de Dados a usar mssql_cmd (SqlClient.SqlCommand) -> Objeto em que defino e executo uma determinada query mssql_dr (SqlClient.SqlDataReader) -> Objecto que recebe o resultado do mssql_cmd, caso este seja um "Select" Abaixo um exemplo de que forma faço uma query através deste modelo: Try If Not mssql_cn.State = ConnectionState.Open Then mssql_cn.Open() mssql_cmd.Connection = mssql_cn ' Só executo esta linha uma única vez em toda a aplicação If Not mssql_cmd.Connection.State = ConnectionState.Open Then mssql_cmd.Connection.Open() mssql_cmd.Parameters.Clear() mssql_cmd.CommandText = "SELECT ref, nome, morada FROM Clientes Where ref = @Ref" mssql_cmd.Parameters.Add("@Ref", SqlDbType.NVarChar).Value = txt_ref.text mssql_dr = mssql_cmd.ExecuteReader If mssql_dr.HasRows Then While mssql_dr.Read datagridview1.rows.add(mssql_dr(0), mssql_dr(1)) End While Else MsgBox("Não foi encontrado registos", MsgBoxStyle.Exclamation) End If Catch ex As Exception MsgBox(ex.ToString, MsgBoxStyle.Critical) Finally mssql_dr.Close() mssql_cmd.Parameters.Clear() mssql_cmd.Connection.Close() mssql_cn.Close() End Try Com base no código acima, gostaria de ter a vossa opinião sobre defeitos e más práticas que possam existir e de que forma poderei melhorar ou reformular por completo este código. Sei que há outras alternativas como o Linq e DataTables, gostaria de saber a vossa opinião. Obrigado desde de já a todos! Link to comment Share on other sites More sharing options...
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