sexta-feira, 6 de fevereiro de 2015

Inserindo dados no banco através de uma Store Procedure - C# e SQL

Booooooooa tarde programadores! Este tutorial é a continuação do tutorial: "Melhorando a Conexão com o Banco de Dados SQL Server", caso você ainda não tenha visto este tutorial basta clicar no link anterior. E neste tutorial abordaremos como inserir dados em nossa tabela criada, vamos conhecer o assembly SqlCommand responsável pelos comandos de instruções SQL.





1)Com o projeto da ultima aula aberto, vamos fazer o seguinte, iremos apagar quase todo o nosso código, deixando apenas a nossa string de conexão como é mostrado na imagem abaixo:

















2) Agora vamos pedir ao usuário de nossa aplicação que informe o nome do cliente e também o email, para isso vamos usar os comandos Console.WriteLine e Console.ReadLine.

Console.WriteLine("Digite o nome do cliente:");
var nmCliente = Console.ReadLine();
Console.WriteLine("Digite o Email do cliente");
var eMail = Console.ReadLine();

3) Certo, agora que já estamos pedindo para inserir o Nome do Cliente e também o Email, é hora de criar a nossa instrução SQL que em breve passaremos para o comando SQL.

4) Então faça o seguinte, vamos criar uma instrução de inserção de dados, para isso declare uma variável SQL e informe o comando de inserção em SQL.

var SQL = "INSERT INTO CLIENTES (NomeCliente, Email) values (@NomeCliente, @Email)";

5) Por enquanto nossa instrução ainda não passa de um texto string sem utilidade, então vamos dar a ela a sua devida finalidade, vamos criar o comando sql!

6) Declare uma var CMD instanciando o assembly SqlCommand e passando por referencia a nossa string SQL e a nossa Conexão.

var cmd = new SqlCommand(SQL,con);

OBS: Como podemos observar durante todo esse processo de conexão com o banco de dados SQL é que sempre definimos uma instrução através de uma string antes de utiliza-la. Como foi o caso da conexão e do comando.

7) com a nosso SqlCommand criado vamos agora  adicionar o nosso nomeCliente que foi declarado no escopo do programa juntamente com nosso NomeCliente do banco de dados e que está presente em nossa variável SQL (O mesmo vale para o Email).

8) Para isso vamos utilizar o parâmetro AddWithValue da propriedade de comando:

 cmd.Parameters.AddWithValue("@NomeCliente",nmCliente);
 cmd.Parameters.AddWithValue("@Email", eMail);

9) Em seguida vamos abrir a nossa conexão para utilizarmos um novo comando que ira executar a nossa instrução sql, o comando ExecuteNonQuery .

10) Então faça como já foi falado anteriormente, abra a conexão com o comando Con.Open();. Em seguida, vamos utilizar o Try e Finally como também já foi abordado.

11) Dentro do Try insira o comando cmd.ExecuteNonQuery();, caso queira inserir uma mensagem de sucesso, ficará a sua disposição.

12) Dentro do Finally insira o fechamento da conexão, o seu código deve ficar mais ou menos assim:



13) Execute o código e em seguida cadastre um cliente. Você pode verificar se o cliente foi cadastrado com êxito, através da SQL Server Object Explorer, vá até o banco de dados CADASTRO e em seguida abra a pasta TABLES, e clique com o botão direito sobre a tabela CLIENTES e clique em View Data.

14) E pronto! Seu primeiro cadastro foi efetuado com êxito!

15) Entretanto, não é uma boa prática informar a instrução SQL diretamente no código, então iremos colocar essa instrução na forma de uma store procedure ! Então vamos comentar a nossa linha de inserção de dados na tabela.

// var SQL = "INSERT INTO CLIENTES (NomeCliente, Email) values (@NomeCliente, @Email)";

16) Vamos então agora, copiar o nosso comando de inserção, em seguida dê um clique com o botão direito em programmabily e em seguida em store procedures como mostra a imagem abaixo:





















17) Em seguida, clique em Add New Store Procedure... Em seguida será aberta a tela de configuração da Store Procedure ou "Procedimento de armazenamento", vamos então dar um nome ao nosso procedimento. No meu caso eu utilizei "InserirClientes".

CREATE PROCEDURE [dbo].[InserirClientes]

18) Em seguida vamos configurar os nossos parâmetros que são NomeCliente e Email.

CREATE PROCEDURE [dbo].[InserirClientes]
@NomeCliente varchar(max),
@Email varchar(max)

19) Agora vamos colar/informar o nosso código de inserção no restante do código, ele deverá estar da seguinte maneira:






20) Observe que está instrução não estará mais na interface do cliente e sim no servidor! Clique agora em Update para atualizar o código e em seguida Update Database.

21) De volta ao nosso código, a linha que comentamos onde estava a instrução SQL, será a linha que irá receber o nome do nosso procedimento. Ou seja:

De:

// var SQL = "INSERT INTO CLIENTES (NomeCliente, Email) values (@NomeCliente, @Email)";

Vamos para:

var SQL = "InserirCliente";

22) Agora como estamos utilizando um novo modo de inserção de dados, também teremos que trocar o nosso command a propriedade de comando, então vamos adicionar junto aos nossos outros comandos o seguinte código:

cmd.CommandType = CommandType.StoredProcedure;

23) Agora teste o seu código e veja o funcionamento! E pronto, você concluiu mais um conhecimento sobre C# e SQL!

24) O seu código deve terminar da seguinte maneira:




Nenhum comentário:

Postar um comentário