Boas Práticas de Acesso a uma Base de Dados - Visual Basic .NET - Portugal-a-Programar
By djbarbas,
November 25, 2020 in Visual Basic .NET
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:
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))
MsgBox("Não foi encontrado registos", MsgBoxStyle.Exclamation)
mssql_dr.Close()
mssql_cmd.Connection.Close()
mssql_cn.Close()
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.