SqlCommand

Apresentação do SqlCommand

SqlCommand encapsula as instruções SQL que serão executadas. Usando uma conexão com banco de dados já estabelecida, envia comandos e recupera os resultados da execução.
O construtor aceita dois parâmetros: texto SQL (cmdText) e objeto de conexão com banco de dados (SqlConnection).

Exemplo simples

Instale o SQL Server, crie a tabela Article e insira um registro de teste.

private void button1_Click(object sender, EventArgs e)
{
    // 1. Definir string de conexão
    string connectionString = "User ID=sa;pwd=qweqwe;initial catalog=DB;Data Source=.;";

    // 2. Criar objeto de conexão
    SqlConnection conn = new SqlConnection(connectionString);

    // 3. Definir instrução SQL para execução
    string cmdText = "SELECT GETDATE(),count(1) FROM [DB].[dbo].[Article]";

    // 4. Criar objeto de comando, associar SQL e conexão
    SqlCommand command = new SqlCommand(cmdText, conn);

    conn.Open();    // Abrir conexão com banco de dados
    // ExecuteScalar():Executa SQL e retorna o valor da [primeira linha, primeira coluna] no tipo object

    object res = command.ExecuteScalar();

    MessageBox.Show(res.ToString());

    conn.Close();   // Fechar conexão
}Code language: C# (cs)

Tabela do SQL Server

CREATE TABLE Article(
    id INT PRIMARY KEY IDENTITY(1,1),
    Title NCHAR(10) NULL,
    AddTime NCHAR(10) NULL
);Code language: SQL (Structured Query Language) (sql)

Método principal: ExecuteScalar()

  • Executar consultas de agregação: COUNT(), MAX(), MIN(), SUM()
  • Buscar um valor único, por exemplo a hora atual do banco de dados, ID de chave primária auto‑incrementada

Observações:

  1. O tipo de retorno é object, é necessária conversão manual de tipo;
  2. Se a consulta retornar várias linhas e colunas, apenas a primeira linha, primeira coluna é retornada; os demais dados são descartados;
  3. Antes de chamar o método, abra a conexão com conn.Open().

Forma recomendada de código

Use a instrução using para liberar recursos de conexão automaticamente e evitar vazamento por esquecer de fechar a conexão:

string connectionString = "User ID=sa;pwd=qweqwe;initial catalog=DB;Data Source=.;";
string cmdText = "SELECT GETDATE(),count(1) FROM [DB].[dbo].[Article]";
using (SqlConnection conn = new SqlConnection(connectionString))
{
    SqlCommand command = new SqlCommand(cmdText, conn);
    conn.Open();
    object res = command.ExecuteScalar();
    MessageBox.Show(res.ToString());
}
// Ao sair do bloco using a conexão é liberada automaticamente, não precisa chamar conn.Close() manualmenteCode language: JavaScript (javascript)

Observações complementares

O SqlCommand tem mais três métodos de execução muito utilizados:

  1. ExecuteNonQuery(): Executa INSERT/UPDATE/DELETE, retorna o número de linhas afetadas
  2. ExecuteReader(): Retorna um fluxo DataReader para ler múltiplos resultados linha a linha
  3. ExecuteXmlReader(): Lê dados no formato XML (pouco usado na prática)

Vamos cobrir esses métodos nas próximas aulas.

SqlCommand

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *