Escolar Documentos
Profissional Documentos
Cultura Documentos
NET C#
07/02/2012 | 07h06min
por Cesar Cassiano Schimanco
J avaliou este artigo?
Avaliao 4,7/5 - 13 votos.
inShare
Depois de vrios questionamentos sobre como criar e como utilizar stored procedures
no C#,
resolvi criar este artigo.
Outra pergunta, qual a diferena entre executar uma query no C# e usar stored
procedure?
Bom, eu particularmente prefiro usar as stored procedures apenas para fazer coisas mais
complexas, abaixo vou citar alguns dos benefcios das stored procedures.
Quando estiver usando um banco de dados remoto, menos dados sero enviados,
apenas o nome e os parmetros.
Vamos iniciar criando uma stored procedure e depois vou mostrar como alterar ela.
Para quem usa o SQL Server Management Studio em portugus.
@userName NVARCHAR(400),
@userEmail NVARCHAR(400)
AS
BEGIN
--varivel para o numero de usurios cadastrados
DECLARE @count AS INT;
--Setando o nmero de usurios a varivel @count
SET @count = (SELECT COUNT(*) FROM tblUsers);
(@userName,@userEmail,@userPhone)
END
END
O exemplo acima de uma stored procedure que vai verificar se j existem 5 usurios
cadastrados. Se tiver retorna 0, se no tiver, cadastra e retorna 1.
Como fica no C#
Exemplo 1 (Exemplo simples de como executar uma Stored procedure no C# para fazer um
INSERT)
using (SqlConnection conn = new SqlConnection(
"server=.\\SQLEXPRESS;Database=dbTeste;User
ID=user;Password=password;Trusted_Connection=False;"))
{
//Criando o SqlCommand
SqlCommand cmd = new SqlCommand();
//Setando a conexo para o SqlCommand
cmd.Connection = conn;
//Nome da stored procedure
cmd.CommandText = "spInsertUser";
//Definindo o tipo de comando como StoredProcedure
cmd.CommandType = System.Data.CommandType.StoredProcedure;
//Adicionar os parmetros
cmd.Parameters.AddWithValue("@userName", "Cesar Cassiano");
cmd.Parameters.AddWithValue("@userEmail", "cesar@cbsa.com.br");
cmd.Parameters.AddWithValue("userPhone", "00 0000 0000");
//Abrir a conexo
conn.Open();
//Executar a stored procedure
int intReturn = (int)cmd.ExecuteNonQuery();
//Verifica se executou o INSERT
if (intReturn != -1)
Response.Write("Usurio cadastrado.");
else
Response.Write("Limite mximo de usurios atingido.");
//Fechar a conexo
conn.Close();
}
Exemplo 2 (Exemplo simples de como executar uma Stored procedure no C# para retornar
dados fazendo um SELECT com IF)
Stored procedure
CREATE PROCEDURE spSelectUser
@userName NVARCHAR(400),
@userEmail NVARCHAR(400),
@userPhone NVARCHAR(15)
AS
BEGIN
SET NOCOUNT ON;
--Executa a query
EXECUTE(@sql)
END
GO
C#
using (SqlConnection conn = new SqlConnection(
"server=.\\SQLEXPRESS;Database=dbTeste;User
ID=user;Password=password;Trusted_Connection=False;"))
{
//Criando o SqlCommand
SqlCommand cmd = new SqlCommand();
//Setando a conexo para o SqlCommand
cmd.Connection = conn;
//Nome da stored procedure
cmd.CommandText = "spSelectUser";
//Definindo o tipo de comando como StoredProcedure
cmd.CommandType = System.Data.CommandType.StoredProcedure;
//Adicionar os parmetros
cmd.Parameters.AddWithValue("userName", "Cassiano");
//Enviando @userEmail = NULL
cmd.Parameters.AddWithValue("userEmail", DBNull.Value);
//Enviando @userPhone = ''
cmd.Parameters.AddWithValue("userPhone", "");
//Abrir a conexo
conn.Open();
//Lendo o DataReader
while (dr.Read())
{
//Imprimir os dados do DataReader
Response.Write(dr["userName"]);
Response.Write(dr["userEmail"]);
}
}