ASP.NET - Trabalhando com BLOBs no SQL Server II
Na primeira parte definimos nosso objetivo e criamos o banco de dados Album.mdf , a tabela Fotos e a classe Foto; agora vamos criar a classe FotoHelper que será responsável pelas tarefas relacionadas com o acesso e a manutenção de dados do nosso Álbum de fotos.
Vamos então incluir uma nova classe no projeto. Clique com o botão direito sobre a pasta App_Code e selecione Add New Item;
Selecione o template Class e informe o nome FotoHelper.vb ;
Esta classe deverá possuir os seguintes métodos:
Além disso devemos definir um construtor na classe para obter a string de conexão com o banco de dados que estará armazenada no arquivo de configuração Web.Config.
Antes de iniciar vamos declarar os namespaces para termos acesso as classes da ADO.NET e o provedor SQL pois estamos usando o banco de dados SQL Server:
Imports
System.DataPara que o valor da string de conexão com o banco de dados esteja disponível no projeto vamos criar uma variável estática (Shared) e definir um construtor Shared com o seguinte código:
Shared sConexaoBD As StringShared Sub New()
sConexaoBD = ConfigurationManager.ConnectionStrings("conexaoBD").ConnectionString End Sub |
Agora vamos definir o método Inserir na mesma classe:
Public Shared Function Inserir(ByVal f As Foto) As Integer 'cria uma nova conexao e um objeto command Dim cnn As New SqlConnection(sConexaoBD) Dim cmd As New SqlCommand() 'define a conexão e a string sql para incluir dados na tabela cmd.Connection = cnn cmd.CommandText = "INSERT INTO Fotos(titulo,descricao,foto) values(@titulo,@descricao,@foto)" 'Define e obtem os valores dos parametros Dim titulo As New SqlParameter("@titulo", f.Titulo) Dim descricao As New SqlParameter("@descricao", f.Descricao) Dim foto As New SqlParameter("@foto", SqlDbType.VarBinary) foto.Value = f.FotoDados 'inclui os valores dos parametros cmd.Parameters.Add(titulo) cmd.Parameters.Add(descricao) cmd.Parameters.Add(foto) 'abre a conexão e executa a consulta SQL retornando um inteiro : 1 se bem sucedido -1 se houver erro cnn.Open() Dim i As Integer = cmd.ExecuteNonQuery() 'fecha a conexão cnn.Close() 'retorna o valor obtido na execução da consulta sql via Return i End Function |
O código acima já esta comentado mas eu quero que você atente para os seguintes detalhes:
-Além do método acima podemos usar os
seguintes métodos:
- ExecuteReader - Retorna um
DataReader; Retorna um conjunto de registro via instrução SQL ou
stored Procedure; |
Agora vamos ao método Atualizar :
Public Shared Function Atualizar(ByVal f As Foto) As Integer 'cria uma nova conexao e um objeto command Dim cnn As New SqlConnection(sConexaoBD) Dim cmd As New SqlCommand() 'define a conexão e a string sql para incluir dados na tabela cmd.Connection = cnn cmd.CommandText = "UPDATE fotos SET titulo=@titulo,descricao= @descricao,foto=@foto where fotoid=@fotoid" 'Define e obtem os valores dos parametros Dim titulo As New SqlParameter("@titulo", f.Titulo) Dim descricao As New SqlParameter("@descricao", f.Descricao) Dim foto As New SqlParameter("@foto", SqlDbType.VarBinary) foto.Value = f.FotoDados Dim fotoid As New SqlParameter("@fotoid", f.FotoID) 'inclui os valores dos parametros cmd.Parameters.Add(titulo) cmd.Parameters.Add(descricao) cmd.Parameters.Add(foto) cmd.Parameters.Add(fotoid) 'abre a conexão e executa a consulta SQL retornando um inteiro : 1 se bem sucedido -1 se houver erro cnn.Open() Dim i As Integer = cmd.ExecuteNonQuery() 'fecha a conexão cnn.Close() 'retorna o valor obtido na execução da consulta sql via Return i End Function
|
No método Atualizar estamos usando a instrução SQL para UPDATE SET para atualizar os dados da tabela e precisamos do parâmetro fotoid que é o código da foto pois queremos atualizar somente um registro cujo código seja igual ao informado.
Agora vamos ao método Deletar:
Public Shared Function Deletar(ByVal fotoid As Integer) As Integer 'cria uma nova conexao e um objeto command Dim cnn As New SqlConnection(sConexaoBD) Dim cmd As New SqlCommand() 'define a conexão e a string sql para incluir dados na tabela cmd.Connection = cnn cmd.CommandText = "DELETE FROM fotos where fotoid=@fotoid" 'Define e obtem os valores dos parametros Dim codigo As New SqlParameter("@fotoid", fotoid) cmd.Parameters.Add(codigo) 'abre a conexão e executa a consulta SQL retornando um inteiro : 1 se bem sucedido cnn.Open() Dim i As Integer = cmd.ExecuteNonQuery() 'fecha a conexão cnn.Close() 'retorna o valor obtido na execução da consulta sql via Return i End Function
|
Este método usa a instrução SQL DELETE FROM para excluir uma foto da tabela de Fotos com base no código da foto (fotoid) informado.
Estão faltando dois métodos que devemos definir e eu vou deixar isso para o próximo artigo...
Aguarde no próximo artigo : ASP.NET - Trabalhando com BLOBs no SQL Server III
Até mais ver...
referências:
José Carlos Macoratti