C# - Cadastro de Alunos com foto no SQL Server - I
Este artigo abordar alguns assuntos muito procurados por aqueles que estão iniciando no aprendizado da linguagem C# como:
As tarefas são simples e em diversos artigos eu já mostrei como realizar cada uma delas, mas resolvi criar este projeto simples para ajudar quem esta começando na linguagem C#,
Recursos necessários :
Criando o projeto Windows Forms, o banco de dados Escola e a tabela Alunos
Abra o Visual C# 2010 Express Edition e crie um novo projeto do tipo Windows Forms Application: File-> New Project;
Selecione o template Windows Forms Application, informe o nome Alunos e clique em OK;
Vamos agora criar o banco de dados e tabela que iremos usar no projeto.
Para isso precisamos exibir a janela DataBase Explorer; Faça isso no menu : View -> Other Windows -> DataBase Explorer
Em seguida clique com o botão direito do mouse sobre Data Connections da janela DataBase Explorer e selecione Add Connection...
A seguir na janela Add Connection informe o nome do banco de dados Escola e clique no botão OK;
Uma janela de diálogo será apresentada informando que o banco de dados não existe e será criado. Confirme.
O banco de dados será criado e exibido na janela DataBase Explorer.
Vamos criar a tabela Alunos. Para isso clique com o botão direito do mouse sobre Tables e selecione Add New Table;
A seguir defina a estrutura da tabela com os campos: id, nome, curso, mensalidade e foto sendo que a id é chave primária do tipo identidade (auto-numeração) conforme mostra a figura abaixo:
Neste momento já tem os o projeto , o banco de dados e a tabela prontos para serem usados e fizemos tudo isso usando apenas a ferramenta Visual C# 2010 Express e o banco de dados SQL Server 2005 Express.
Criando as Stored Procedures do projeto
Agora vamos definir as stored procedures que iremos usar no projeto.
Na janela DataBase Explorer clique com o botão direito do mouse sobre Stored Procedures e selecione Add New Stored Procedure;
Na janela Stored Procedure vamos criar as seguintes stored procedures:
1- getAlunos - Obtém os dados dos alunos registrados na tabela Alunos;
Clique em Salvar;
2- inserir_Alunos: Inclui uma aluno na tabela Alunos;
3- atualiza_Alunos - Atualiza os dados de um aluno na tabela Alunos;
4- exclui_Alunos - exclui os dados de um aluno na tabela Alunos;
Ao final deveremos ter as seguintes stored procedures gravadas no banco de dados:
Cuidando da interface
Vamos agora definir no formulário form1.cs criado por padrão quando o projeto foi criado incluindo no mesmo os controles:
Defina no formulário o seguinte leiaute:
Antes de começar a definir o código do formulário vou comentar alguns detalhes que precisamos entender.
O botão Procurar permite localizar um registro na tabela e exibir no formulário. Estamos realizando a busca usando o InputBox e para isso devemos incluir uma referência no projeto a Microsoft.VisualBasic;
Obs: Não existe nada parecido com o InputBox na linguagem C# ou fazemos a referência a MIcrosoft.VisualBasic, ou, se você se sentir incomodado com isso, crie seu próprio controle inputbox;
No menu Project clique em Add Reference e na janela Add Reference selecione a aba .NET e escolha o item Microsoft.VisualBasic e clique em OK;
Após isso defina o namespace no código do projeto: using Microsoft.VisualBasic
Estamos gravando e recuperando imagens do banco de dados SQL Server e para isso temos que converter a imagem em dados binários pois não podemos armazenar diretamente as imagens no banco de dados.
Para fazer isso podemos adotar duas soluções:
1- Armazenar o caminho da imagem no
banco de dados;
2- Converter a imagem para dados binários e inserir os dados
binários no banco de dados e converter os dados binários
novamente para o formato imagem quando tivermos que recuperar a
imagem;
Ambas as soluções apresentam vantagens e desvantagens mas a segunda é mais consistente e por isso vamos adotá-la.
Podemos converter uma imagem em dados binários usando os recursos das classes FileStream ou MemoryStream;
1- O FileStream utiliza a localização para converter uma imagem em dados binários;
FileStream
fs = new FileStream(openFileDialog1.FileName,
FileMode.Open,FileAccess.Read);
byte[] photo_aray = new byte[fs.Length];
fs.Read(photo_aray, 0, photo_aray.Length);
2- O MemoryStream usa a imagem para converter para dados
binários;
MemoryStream
ms = new MemoryStream();
pictureBox1.Image.Save(ms, ImageFormat.Jpeg);
byte[] photo_aray = new byte[ms.Length];
ms.Position = 0;
ms.Read(photo_aray, 0, photo_aray.Length);
Vamos usar o MemoryStream e para isso temos que incluir uma
referência ao namespace: System.IO no projeto;
Podemos usar o objeto comando para trabalhar com as stored procedures passando o nome da stored procedure para o objeto command e especificando o CommandType como do tipo StoreProcedure;
cmd = new
SqlCommand("getAlunos", con);
cmd.CommandType = CommandType.StoredProcedure;
O objeto DataAdapter não pode interagir
diretamente com stored procedures mas se precisarmos usar um
DataAdapter podemos passar o objeto Command para
o objeto DataAdapter;
Para localizar um registro estamos usando o método Find o qual requer detalhes da coluna chave primária, esses detalhes são fornecidos definindo o código:
adapter.MissingSchemaAction
= MissingSchemaAction.AddWithKey;
Após localizar o registro temos que obter o índice do registro
de forma afim de permitir a navegação pelos registros:
Ex: rno=
ds.Tables[0].Rows.IndexOf(drow);
Agora podemos iniciar a definição do código do nosso projeto.
Aguarde a continuação do artigo em : C# - Cadastro de Alunos com foto no SQL Server - II
Simples, simples assim...
Eu sei é apenas C# , mas eu gosto...
Referências: