Você está na página 1de 12

Classe SqlCommand (System.Data.SqlClient) https://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlcom...

Este artigo foi traduzido por mquina. Para visualizar o arquivo em ingls, marque a caixa de seleo Ingls. Voc tambm pode exibir o texto Em
ingls em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.

Classe SqlCommand
.NET Framework (current version)


Representa uma instruo Transact-SQL ou procedimento armazenado para execuo em um banco de dados SQL Server. Essa classe no pode ser
herdada.

Namespace: System.Data.SqlClient
Assembly: System.Data (em System.Data.dll)

Hierarquia de Herana
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Data.Common.DbCommand
System.Data.SqlClient.SqlCommand

Sintaxe
VB

Public NotInheritable Class SqlCommand


Inherits DbCommand
Implements ICloneable

Construtores

Nome Descrio

SqlCommand() Inicializa uma nova instncia da classe SqlCommand.

SqlCommand(String) Inicializa uma nova instncia da classe SqlCommand com o


texto da consulta.

SqlCommand(String,SqlConnection) Inicializa uma nova instncia da classe SqlCommand com o


texto da consulta e um SqlConnection.

SqlCommand(String,SqlConnection,SqlTransaction) Inicializa uma nova instncia da classe SqlCommand com o


texto da consulta, um SqlConnection e o SqlTransaction.

SqlCommand(String,SqlConnection,SqlTransaction, Inicializa uma nova instncia da classe SqlCommand com


SqlCommandColumnEncryptionSetting) texto de comando especificado, conexes, transaes e
configurao de criptografia.

Propriedades

1 de 12 21/07/2017 11:31
Classe SqlCommand (System.Data.SqlClient) https://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlcom...

Nome Descrio

ColumnEncryptionSetting Obtm ou define a configurao de criptografia de coluna desse comando.

CommandText Obtm ou define a instruo Transact-SQL, nome da tabela ou procedimento armazenado a ser
executado na fonte de dados.(Substitui o DbCommand.CommandText.)

CommandTimeout Obtm ou define o tempo de espera antes do trmino da tentativa de executar um comando e
antes de gerar um erro.(Substitui o DbCommand.CommandTimeout.)

CommandType Obtm ou define um valor que indica como a propriedade CommandText deve ser interpretada.
(Substitui o DbCommand.CommandType.)

Connection Obtm ou define o SqlConnection usado por essa instncia do SqlCommand.

Container Obtm o IContainer que contm o Component.(Herdado de Component.)

DesignTimeVisible Obtm ou define um valor que indica se o objeto de comando deve estar visvel em um
controle do Windows Form Designer.(Substitui o DbCommand.DesignTimeVisible.)

Notification Obtm ou define um valor que especifica o objeto SqlNotificationRequest associado a este
comando.

NotificationAutoEnlist Obtm ou define um valor que indica se o aplicativo deve receber notificaes de consulta
automaticamente de um objeto SqlDependency comum.

Parameters Obtm o SqlParameterCollection.

Site Obtm ou define o ISite do Component.(Herdado de Component.)

Transaction Obtm ou define o SqlCommand em que o SqlTransaction executado.

UpdatedRowSource Obtm ou define como os resultados do comando so aplicados a DataRow quando usado
pelo mtodo Update de DbDataAdapter.(Substitui o DbCommand.UpdatedRowSource.)

Mtodos

Nome Descrio

BeginExecuteNonQuery() Inicia a execuo assncrona da instruo Transact-SQL ou procedimento


armazenado que descrito por este SqlCommand.

BeginExecuteNonQuery(AsyncCallback, Inicia a execuo assncrona da instruo Transact-SQL ou do procedimento


Object) armazenado descrito por esse SqlCommand, dado um procedimento de
retorno de chamada e informaes sobre o estado.

BeginExecuteReader() Inicia a execuo assncrona da instruo Transact-SQL ou procedimento


armazenado descrito por SqlCommand e recupera um ou mais conjuntos de
resultados do servidor.

BeginExecuteReader(AsyncCallback,Object) Inicia a execuo assncrona da instruo Transact-SQL ou procedimento


armazenado descrito por esse SqlCommand e recupera um ou mais
conjuntos de resultado do servidor, dado um procedimento de retorno de
chamada e informaes sobre o estado.

BeginExecuteReader(AsyncCallback, Inicia a execuo assncrona da instruo Transact-SQL ou procedimento


Object,CommandBehavior) armazenado que descrito por este SqlCommand, usando um do
CommandBehavior valores e recuperar um ou mais os conjuntos de
resultados do servidor, dado uma informaes de estado e o procedimento

2 de 12 21/07/2017 11:31
Classe SqlCommand (System.Data.SqlClient) https://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlcom...

de retorno de chamada.

BeginExecuteReader(CommandBehavior) Inicia a execuo assncrona da instruo Transact-SQL ou do procedimento


armazenado descrito por este SqlCommand usando um dos valores
CommandBehavior.

BeginExecuteXmlReader() Inicia a execuo assncrona da instruo Transact-SQL ou procedimento


armazenado que descrito por este SqlCommand e retorna resultados
como um XmlReader objeto.

BeginExecuteXmlReader(AsyncCallback, Inicia a execuo assncrona da instruo Transact-SQL ou procedimento


Object) armazenado que descrito por este SqlCommand e retorna resultados
como um XmlReader do objeto, usando um procedimento de retorno de
chamada.

Cancel() Tenta cancelar a execuo de um SqlCommand.(Substitui o


DbCommand.Cancel().)

Clone() Cria um novo objeto SqlCommand que uma cpia da instncia atual.

CreateObjRef(Type) Cria um objeto que contm todas as informaes relevantes necessrias


para gerar um proxy usado para se comunicar com um objeto remoto.
(Herdado de MarshalByRefObject.)

CreateParameter() Cria uma nova instncia de um objeto SqlParameter.

Dispose() Libera todos os recursos usados pelo Component.(Herdado de Component.)

EndExecuteNonQuery(IAsyncResult) Termina a execuo assncrona de uma instruo Transact-SQL.

EndExecuteReader(IAsyncResult) Conclui a execuo assncrona de uma instruo Transact-SQL, retornando o


SqlDataReader solicitado.

EndExecuteXmlReader(IAsyncResult) Termina a execuo assncrona de uma instruo Transact-SQL, retornando


os dados solicitados como XML.

Equals(Object) Verifica se o objeto especificado igual ao objeto atual. (Herdado de


Object.)

ExecuteNonQuery() Executa a instruo Transact-SQLna conexo estabelecida e devolve o


nmero de linhas afetadas.(Substitui o DbCommand.ExecuteNonQuery().)

ExecuteNonQueryAsync() Uma verso assncrona de ExecuteNonQuery, que executa uma instruo


SQL em um objeto de conexo.

Invoca ExecuteNonQueryAsync com CancellationToken.None.(Herdado de


DbCommand.)

ExecuteNonQueryAsync(CancellationToken) Uma verso assncrona de ExecuteNonQuery, que executa uma instruo


Transact-SQL em relao conexo e retorna o nmero de linhas afetadas.
O token de cancelamento pode ser usado para solicitar que a operao seja
abandonada antes de expirar o tempo limite do comando. As excees
sero relatadas por meio do objeto de tarefa.(Substitui o
DbCommand.ExecuteNonQueryAsync(CancellationToken).)

ExecuteReader() Envia o CommandText para o Connection e cria um SqlDataReader.

ExecuteReader(CommandBehavior) Envia o CommandText para o Connection e cria um SqlDataReader usando


um dos valores de CommandBehavior.

ExecuteReaderAsync() Uma verso assncrona de ExecuteReader, que envia o CommandText para o


Connection e cria um SqlDataReader. As excees sero relatadas por meio
do objeto de Tarefa retornado.

3 de 12 21/07/2017 11:31
Classe SqlCommand (System.Data.SqlClient) https://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlcom...

ExecuteReaderAsync(CancellationToken) Uma verso assncrona de ExecuteReader, que envia o CommandText para o


Connection e cria um SqlDataReader.

O token de cancelamento pode ser usado para solicitar que a operao seja
abandonada antes de expirar o tempo limite do comando. As excees
sero relatadas por meio do objeto de tarefa.

ExecuteReaderAsync(CommandBehavior) Uma verso assncrona de ExecuteReader, que envia o CommandText para o


Connection e cria um SqlDataReader. As excees sero relatadas por meio
do objeto de tarefa.

ExecuteReaderAsync(CommandBehavior, Uma verso assncrona de ExecuteReader, que envia o CommandText para o


CancellationToken) Connection e cria um SqlDataReader

O token de cancelamento pode ser usado para solicitar que a operao seja
abandonada antes de expirar o tempo limite do comando. As excees
sero relatadas por meio do objeto de tarefa.

ExecuteScalar() Executa a consulta e retorna a primeira coluna da primeira linha do conjunto


de resultados retornado pela consulta. Colunas ou linhas adicionais so
ignoradas.(Substitui o DbCommand.ExecuteScalar().)

ExecuteScalarAsync() Uma verso assncrona de ExecuteScalar, que executa a consulta e retorna a


primeira coluna da primeira linha no conjunto de resultados retornado pela
consulta. Todas as outras colunas e linhas so ignoradas.

Invoca ExecuteScalarAsync com CancellationToken.None.(Herdado de


DbCommand.)

ExecuteScalarAsync(CancellationToken) Uma verso assncrona de ExecuteScalar, que executa a consulta de forma


assncrona e retorna a primeira coluna da primeira linha no conjunto de
resultados retornado pela consulta. Colunas ou linhas adicionais so
ignoradas.

O token de cancelamento pode ser usado para solicitar que a operao seja
abandonada antes de expirar o tempo limite do comando. As excees
sero relatadas por meio do objeto de tarefa.(Substitui o
DbCommand.ExecuteScalarAsync(CancellationToken).)

ExecuteXmlReader() Envia o CommandText para o Connection e cria um objeto XmlReader.

ExecuteXmlReaderAsync() Uma verso assncrona de ExecuteXmlReader, que envia o CommandText


para o Connection e cria um XmlReader objeto.

Excees sero informadas por meio do objeto de tarefa retornado.

ExecuteXmlReaderAsync(CancellationToken) Uma verso assncrona de ExecuteXmlReader, que envia o CommandText


para o Connection e cria um XmlReader objeto.

O token de cancelamento pode ser usado para solicitar que a operao ser
abandonado antes de expira o tempo limite do comando. Excees sero
informadas por meio do objeto de tarefa retornado.

GetHashCode() Serve como a funo de hash padro.(Herdado de Object.)

GetLifetimeService() Recupera o objeto atual de servio de vida til que controla a diretiva de
vida til para esta instncia. (Herdado de MarshalByRefObject.)

GetType() Obtm o Type da instncia atual.(Herdado de Object.)

InitializeLifetimeService() Obtm um objeto de servio de tempo de vida para controlar a diretiva de


vida til para esta instncia. (Herdado de MarshalByRefObject.)

Prepare() Cria uma verso preparada do comando em uma instncia do SQL Server.
(Substitui o DbCommand.Prepare().)

4 de 12 21/07/2017 11:31
Classe SqlCommand (System.Data.SqlClient) https://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlcom...

ResetCommandTimeout() Redefine a propriedade CommandTimeout para seu valor padro.

ToString() Retorna um String que contm o nome do Component, se houver. Esse


mtodo no deve ser substitudo.(Herdado de Component.)

Eventos

Nome Descrio

Disposed Ocorre quando o componente disposto por uma chamada para o mtodo Dispose.(Herdado de
Component.)

StatementCompleted Ocorre quando a execuo de uma instruo Transact-SQL concluda.

Implementaes Explcitas da Interface

Nome Descrio

IDbCommand.CreateParameter() Cria uma nova instncia de um objeto IDbDataParameter.(Herdado de


DbCommand.)

IDbCommand.ExecuteReader() Executa o CommandText no Connection e compila um IDataReader.


(Herdado de DbCommand.)

IDbCommand.ExecuteReader(CommandBehavior) Executa o CommandText contra o Connectione cria um IDataReader


usando um do CommandBehavior valores.(Herdado de DbCommand.)

ICloneable.Clone() Cria um novo SqlCommand objeto que uma cpia da instncia atual.

IDbCommand.Connection Obtm ou define o IDbConnection usado por essa instncia do


IDbCommand.(Herdado de DbCommand.)

IDbCommand.Parameters Obtm o IDataParameterCollection.(Herdado de DbCommand.)

IDbCommand.Transaction Obtm ou define o DbCommand em que este objeto DbTransaction


executado.(Herdado de DbCommand.)

Comentrios
Quando uma instncia de SqlCommand criado, a leitura/gravao propriedades so definidas para seus valores iniciais. Para obter uma lista
desses valores, consulte o SqlCommand construtor.

SqlCommandapresenta os seguintes mtodos para executar comandos em um banco de dados do SQL Server:

Item Descrio

BeginExecuteNonQuery Inicia a execuo assncrona da instruo Transact-SQL ou procedimento armazenado que descrito por esta
SqlCommand, geralmente executando comandos, como insero, excluso, atualizao e instrues SET. Cada
chamada para BeginExecuteNonQuery devem estar combinados com uma chamada para EndExecuteNonQuery
que termina a operao, geralmente em um thread separado.

5 de 12 21/07/2017 11:31
Classe SqlCommand (System.Data.SqlClient) https://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlcom...

BeginExecuteReader Inicia a execuo assncrona da instruo Transact-SQL ou procedimento armazenado que descrito por esta
SqlCommand e recupera os resultados de um ou mais conjuntos de servidor. Cada chamada para
BeginExecuteReader devem estar combinados com uma chamada para EndExecuteReader que termina a
operao, geralmente em um thread separado.

BeginExecuteXmlReader Inicia a execuo assncrona da instruo Transact-SQL ou procedimento armazenado que descrito por este
SqlCommand. Cada chamada para BeginExecuteXmlReader devem estar combinados com uma chamada para
EndExecuteXmlReader, que termina a operao, geralmente em um thread separado e retorna um XmlReader
objeto.

ExecuteReader Executa comandos que retornam linhas. Para melhorar o desempenho, ExecuteReader invoca comandos usando o
Transact-SQL sp_executesql procedimento armazenado do sistema. Portanto, ExecuteReader no pode ter o
efeito que voc deseja se usado para executar comandos como instrues Transact-SQL SET.

ExecuteNonQuery Executa comandos como instrues Transact-SQL INSERT, DELETE, UPDATE e conjunto.

ExecuteScalar Recupera um valor nico (por exemplo, um valor agregado) de um banco de dados.

ExecuteXmlReader Envia o CommandText para o Connection e cria um objeto XmlReader.

Voc pode redefinir o CommandText propriedade e reutilizao de SqlCommand objeto. No entanto, voc deve fechar o SqlDataReader antes
de executar um comando de novo ou anterior.

Se um SqlException gerado, o mtodo executando um SqlCommand, o SqlConnection permanece aberto quando o nvel de severidade 19 ou
menos. Quando o nvel de severidade 20 ou maior, o servidor normalmente fecha o SqlConnection. No entanto, o usurio pode reabrir a
conexo e continuar.

Observao

Sem nome, tambm chamado de ordinal, parmetros no so suportados pelo provedor de dados .NET Framework para SQL Server.

Exemplos
O exemplo a seguir cria um SqlConnection, um SqlCommande um SqlDataReader. O exemplo l os dados, grav-la no console. Finalmente, o
exemplo fecha o SqlDataReader e, em seguida, o SqlConnection conforme ela sai do Using blocos de cdigo.

VB

Public Sub ReadOrderData(ByVal connectionString As String)


Dim queryString As String = _
"SELECT OrderID, CustomerID FROM dbo.Orders;"
Using connection As New SqlConnection(connectionString)
Dim command As New SqlCommand(queryString, connection)
connection.Open()
Dim reader As SqlDataReader = command.ExecuteReader()
Try
While reader.Read()
Console.WriteLine(String.Format("{0}, {1}", _
reader(0), reader(1)))
End While
Finally
' Always call Close when done reading.
reader.Close()
End Try
End Using
End Sub

O exemplo a seguir mostra como criar e executar diferentes tipos de objetos SqlCommand.

Primeiro voc deve criar o banco de dados de exemplo, executando o script a seguir:

6 de 12 21/07/2017 11:31
Classe SqlCommand (System.Data.SqlClient) https://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlcom...

USE [master]
GO

CREATE DATABASE [MySchool]


GO

USE [MySchool]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE procedure [dbo].[CourseExtInfo] @CourseId int
as
select c.CourseID,c.Title,c.Credits,d.Name as DepartmentName
from Course as c left outer join Department as d on c.DepartmentID=d.DepartmentID
where c.CourseID=@CourseId

GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[DepartmentInfo] @DepartmentId int,@CourseCount int output
as
select @CourseCount=Count(c.CourseID)
from course as c
where c.DepartmentID=@DepartmentId

select d.DepartmentID,d.Name,d.Budget,d.StartDate,d.Administrator
from Department as d
where d.DepartmentID=@DepartmentId

GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE [dbo].[GetDepartmentsOfSpecifiedYear]
@Year int,@BudgetSum money output
AS
BEGIN
SELECT @BudgetSum=SUM([Budget])
FROM [MySchool].[dbo].[Department]
Where YEAR([StartDate])=@Year

SELECT [DepartmentID]
,[Name]
,[Budget]
,[StartDate]
,[Administrator]
FROM [MySchool].[dbo].[Department]
Where YEAR([StartDate])=@Year

END
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Course](
[CourseID] [nvarchar](10) NOT NULL,
[Year] [smallint] NOT NULL,
[Title] [nvarchar](100) NOT NULL,

7 de 12 21/07/2017 11:31
Classe SqlCommand (System.Data.SqlClient) https://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlcom...

[Credits] [int] NOT NULL,


[DepartmentID] [int] NOT NULL,
CONSTRAINT [PK_Course] PRIMARY KEY CLUSTERED
(
[CourseID] ASC,
[Year] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Department](
[DepartmentID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[Budget] [money] NOT NULL,
[StartDate] [datetime] NOT NULL,
[Administrator] [int] NULL,
CONSTRAINT [PK_Department] PRIMARY KEY CLUSTERED
(
[DepartmentID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Person](
[PersonID] [int] IDENTITY(1,1) NOT NULL,
[LastName] [nvarchar](50) NOT NULL,
[FirstName] [nvarchar](50) NOT NULL,
[HireDate] [datetime] NULL,
[EnrollmentDate] [datetime] NULL,
CONSTRAINT [PK_School.Student] PRIMARY KEY CLUSTERED
(
[PersonID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[StudentGrade](
[EnrollmentID] [int] IDENTITY(1,1) NOT NULL,
[CourseID] [nvarchar](10) NOT NULL,
[StudentID] [int] NOT NULL,
[Grade] [decimal](3, 2) NOT NULL,
CONSTRAINT [PK_StudentGrade] PRIMARY KEY CLUSTERED
(
[EnrollmentID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_NULLS ON

8 de 12 21/07/2017 11:31
Classe SqlCommand (System.Data.SqlClient) https://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlcom...

GO
SET QUOTED_IDENTIFIER ON
GO
create view [dbo].[EnglishCourse]
as
select c.CourseID,c.Title,c.Credits,c.DepartmentID
from Course as c join Department as d on c.DepartmentID=d.DepartmentID
where d.Name=N'English'

GO
INSERT [dbo].[Course] ([CourseID], [Year], [Title], [Credits], [DepartmentID]) VALUES (N'C1045', 2012,
N'Calculus', 4, 7)
INSERT [dbo].[Course] ([CourseID], [Year], [Title], [Credits], [DepartmentID]) VALUES (N'C1061', 2012,
N'Physics', 4, 1)
INSERT [dbo].[Course] ([CourseID], [Year], [Title], [Credits], [DepartmentID]) VALUES (N'C2021', 2012,
N'Composition', 3, 2)
INSERT [dbo].[Course] ([CourseID], [Year], [Title], [Credits], [DepartmentID]) VALUES (N'C2042', 2012,
N'Literature', 4, 2)
SET IDENTITY_INSERT [dbo].[Department] ON

INSERT [dbo].[Department] ([DepartmentID], [Name], [Budget], [StartDate], [Administrator]) VALUES (1,


N'Engineering', 350000.0000, CAST(0x0000999C00000000 AS DateTime), 2)
INSERT [dbo].[Department] ([DepartmentID], [Name], [Budget], [StartDate], [Administrator]) VALUES (2,
N'English', 120000.0000, CAST(0x0000999C00000000 AS DateTime), 6)
INSERT [dbo].[Department] ([DepartmentID], [Name], [Budget], [StartDate], [Administrator]) VALUES (4,
N'Economics', 200000.0000, CAST(0x0000999C00000000 AS DateTime), 4)
INSERT [dbo].[Department] ([DepartmentID], [Name], [Budget], [StartDate], [Administrator]) VALUES (7,
N'Mathematics', 250024.0000, CAST(0x0000999C00000000 AS DateTime), 3)
SET IDENTITY_INSERT [dbo].[Department] OFF
SET IDENTITY_INSERT [dbo].[Person] ON

INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (1, N'Hu',
N'Nan', NULL, CAST(0x0000A0BF00000000 AS DateTime))
INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (2,
N'Norman', N'Laura', NULL, CAST(0x0000A0BF00000000 AS DateTime))
INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (3,
N'Olivotto', N'Nino', NULL, CAST(0x0000A0BF00000000 AS DateTime))
INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (4,
N'Anand', N'Arturo', NULL, CAST(0x0000A0BF00000000 AS DateTime))
INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (5, N'Jai',
N'Damien', NULL, CAST(0x0000A0BF00000000 AS DateTime))
INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (6,
N'Holt', N'Roger', CAST(0x000097F100000000 AS DateTime), NULL)
INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (7,
N'Martin', N'Randall', CAST(0x00008B1A00000000 AS DateTime), NULL)
SET IDENTITY_INSERT [dbo].[Person] OFF
SET IDENTITY_INSERT [dbo].[StudentGrade] ON

INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (1, N'C1045', 1,


CAST(3.50 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (2, N'C1045', 2,
CAST(3.00 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (3, N'C1045', 3,
CAST(2.50 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (4, N'C1045', 4,
CAST(4.00 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (5, N'C1045', 5,
CAST(3.50 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (6, N'C1061', 1,
CAST(4.00 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (7, N'C1061', 3,
CAST(3.50 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (8, N'C1061', 4,
CAST(2.50 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (9, N'C1061', 5,
CAST(1.50 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (10, N'C2021', 1,
CAST(2.50 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (11, N'C2021', 2,

9 de 12 21/07/2017 11:31
Classe SqlCommand (System.Data.SqlClient) https://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlcom...

CAST(3.50 AS Decimal(3, 2)))


INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (12, N'C2021', 4,
CAST(3.00 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (13, N'C2021', 5,
CAST(3.00 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (14, N'C2042', 1,
CAST(2.00 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (15, N'C2042', 2,
CAST(3.50 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (16, N'C2042', 3,
CAST(4.00 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (17, N'C2042', 5,
CAST(3.00 AS Decimal(3, 2)))
SET IDENTITY_INSERT [dbo].[StudentGrade] OFF
ALTER TABLE [dbo].[Course] WITH CHECK ADD CONSTRAINT [FK_Course_Department] FOREIGN KEY([DepartmentID])
REFERENCES [dbo].[Department] ([DepartmentID])
GO
ALTER TABLE [dbo].[Course] CHECK CONSTRAINT [FK_Course_Department]
GO
ALTER TABLE [dbo].[StudentGrade] WITH CHECK ADD CONSTRAINT [FK_StudentGrade_Student] FOREIGN
KEY([StudentID])
REFERENCES [dbo].[Person] ([PersonID])
GO
ALTER TABLE [dbo].[StudentGrade] CHECK CONSTRAINT [FK_StudentGrade_Student]
GO

Em seguida, compile e execute o seguinte:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Threading.Tasks;

class Program {

static class SqlHelper {


// Set the connection, command, and then execute the command with non query.
public static Int32 ExecuteNonQuery(String connectionString, String commandText,
CommandType commandType, params SqlParameter[] parameters) {
using (SqlConnection conn = new SqlConnection(connectionString)) {
using (SqlCommand cmd = new SqlCommand(commandText, conn)) {
// There're three command types: StoredProcedure, Text, TableDirect. The TableDirect
// type is only for OLE DB.
cmd.CommandType = commandType;
cmd.Parameters.AddRange(parameters);

conn.Open();
return cmd.ExecuteNonQuery();
}
}
}

// Set the connection, command, and then execute the command and only return one value.
public static Object ExecuteScalar(String connectionString, String commandText,
CommandType commandType, params SqlParameter[] parameters) {
using (SqlConnection conn = new SqlConnection(connectionString)) {
using (SqlCommand cmd = new SqlCommand(commandText, conn)) {
cmd.CommandType = commandType;
cmd.Parameters.AddRange(parameters);

conn.Open();
return cmd.ExecuteScalar();
}
}
}

// Set the connection, command, and then execute the command with query and return the reader.

10 de 12 21/07/2017 11:31
Classe SqlCommand (System.Data.SqlClient) https://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlcom...

public static SqlDataReader ExecuteReader(String connectionString, String commandText,


CommandType commandType, params SqlParameter[] parameters) {
SqlConnection conn = new SqlConnection(connectionString);

using (SqlCommand cmd = new SqlCommand(commandText, conn)) {


cmd.CommandType = commandType;
cmd.Parameters.AddRange(parameters);

conn.Open();
// When using CommandBehavior.CloseConnection, the connection will be closed when the
// IDataReader is closed.
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

return reader;
}
}
}

static void Main(string[] args) {


String connectionString = "Data Source=(local);Initial Catalog=MySchool;Integrated Security=True;
Asynchronous Processing=true;";

CountCourses(connectionString, 2012);
Console.WriteLine();

Console.WriteLine("Following result is the departments that started from 2007:");


GetDepartments(connectionString, 2007);
Console.WriteLine();

Console.WriteLine("Add the credits when the credits of course is lower than 4.");
AddCredits(connectionString, 4);
Console.WriteLine();

Console.WriteLine("Please press any key to exit...");


Console.ReadKey();
}

static void CountCourses(String connectionString, Int32 year) {


String commandText = "Select Count([CourseID]) FROM [MySchool].[dbo].[Course] Where Year=@Year";
SqlParameter parameterYear = new SqlParameter("@Year", SqlDbType.Int);
parameterYear.Value = year;

Object oValue = SqlHelper.ExecuteScalar(connectionString, commandText, CommandType.Text,


parameterYear);
Int32 count;
if (Int32.TryParse(oValue.ToString(), out count))
Console.WriteLine("There {0} {1} course{2} in {3}.", count > 1 ? "are" : "is", count, count > 1 ?
"s" : null, year);
}

// Display the Departments that start from the specified year.


static void GetDepartments(String connectionString, Int32 year) {
String commandText = "dbo.GetDepartmentsOfSpecifiedYear";

// Specify the year of StartDate


SqlParameter parameterYear = new SqlParameter("@Year", SqlDbType.Int);
parameterYear.Value = year;

// When the direction of parameter is set as Output, you can get the value after
// executing the command.
SqlParameter parameterBudget = new SqlParameter("@BudgetSum", SqlDbType.Money);
parameterBudget.Direction = ParameterDirection.Output;

using (SqlDataReader reader = SqlHelper.ExecuteReader(connectionString, commandText,


CommandType.StoredProcedure, parameterYear, parameterBudget)) {
Console.WriteLine("{0,-20}{1,-20}{2,-20}{3,-20}", "Name", "Budget", "StartDate",
"Administrator");
while (reader.Read()) {
Console.WriteLine("{0,-20}{1,-20:C}{2,-20:d}{3,-20}", reader["Name"],

11 de 12 21/07/2017 11:31
Classe SqlCommand (System.Data.SqlClient) https://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlcom...

reader["Budget"], reader["StartDate"], reader["Administrator"]);


}
}
Console.WriteLine("{0,-20}{1,-20:C}", "Sum:", parameterBudget.Value);
}

// If credits of course is lower than the certain value, the method will add the credits.
static void AddCredits(String connectionString, Int32 creditsLow) {
String commandText = "Update [MySchool].[dbo].[Course] Set Credits=Credits+1 Where Credits<@Credits";

SqlParameter parameterCredits = new SqlParameter("@Credits", creditsLow);

Int32 rows = SqlHelper.ExecuteNonQuery(connectionString, commandText, CommandType.Text,


parameterCredits);

Console.WriteLine("{0} row{1} {2} updated.", rows, rows > 1 ? "s" : null, rows > 1 ? "are" : "is");
}
}

Informaes de Verso
.NET Framework
Disponvel desde 1.1

Acesso thread-safe
Quaisquer membros estticos pblicos ( Compartilhado no Visual Basic) desse tipo so thread-safe. No h garantia de que qualquer membro
de instncia seja thread-safe.

Confira Tambm
Namespace System.Data.SqlClient
Recuperando e modificando dados no ADO.NET
SQL Server e ADO.NET
ADO.NET Managed Providers and DataSet Developer Center

Retornar ao incio

2017 Microsoft

12 de 12 21/07/2017 11:31