Operações CRUD


SQL Server

Vamos mostrar como implementar operações CRUD (Create, Read, Update, Delete) usando ADO.NET em C# com SQL Server. Os exemplos são simples e podem ser adaptados para aplicações console, desktop ou web.

Pré-requisitos

  • Visual Studio instalado
  • SQL Server disponível
  • Biblioteca System.Data.SqlClient referenciada no projeto

1. Estrutura do Banco de Dados

Crie uma tabela de exemplo chamada Contactos:

CREATE TABLE Contactos (
Id INT IDENTITY PRIMARY KEY,
Nome NVARCHAR(100),
Email NVARCHAR(100)
)

2. Configuração da String de Conexão

Adicione a string de conexão no seu código:

string connectionString = "Data Source=SEU_SERVIDOR;Initial Catalog=SUA_BASE_DADOS;Integrated Security=True";

3. Operações CRUD

a) Create (Inserir)

using (SqlConnection conn = new SqlConnection(connectionString))
{
string sql = "INSERT INTO Contactos (Nome, Email) VALUES (@Nome, @Email)";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@Nome", "João da Silva");
cmd.Parameters.AddWithValue("@Email", "joao@email.com");
conn.Open();
cmd.ExecuteNonQuery();
}

b) Read (Consultar)

using (SqlConnection conn = new SqlConnection(connectionString))
{
string sql = "SELECT * FROM Contactos";
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine($"Id: {reader["Id"]}, Nome: {reader["Nome"]}, Email: {reader["Email"]}");
}
}

c) Update (Atualizar)

using (SqlConnection conn = new SqlConnection(connectionString))
{
string sql = "UPDATE Contactos SET Nome = @Nome, Email = @Email WHERE Id = @Id";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@Nome", "João Atualizado");
cmd.Parameters.AddWithValue("@Email", "joao.novo@email.com");
cmd.Parameters.AddWithValue("@Id", 1);
conn.Open();
cmd.ExecuteNonQuery();
}

d) Delete (Excluir)

using (SqlConnection conn = new SqlConnection(connectionString))
{
string sql = "DELETE FROM Contactos WHERE Id = @Id";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@Id", 1);
conn.Open();
cmd.ExecuteNonQuery();
}

4. Observações Importantes

  • Sempre feche a conexão após o uso (o bloco using faz isso automaticamente).
  • Utilize parâmetros em comandos SQL para evitar SQL Injection.
  • Trate exceções usando blocos try-catch para maior segurança e controle de erros.

Resumo das Operações

OperaçãoSQL UtilizadoMétodo ADO.NET
CreateINSERT INTO Contactos (Nome, Email) VALUES…ExecuteNonQuery
ReadSELECT * FROM ContactosExecuteReader
UpdateUPDATE Contactos SET Nome = …, Email = … WHERE IdExecuteNonQuery
DeleteDELETE FROM Contactos WHERE Id = …ExecuteNonQuery

Esses exemplos cobrem o básico do CRUD com ADO.NET em C#. Para projetos maiores, recomenda-se criar uma camada de acesso a dados (DAL) e utilizar stored procedures para maior organização e segurança.


MySql

Vamos apresentar exemplos práticos de operações CRUD (Create, Read, Update, Delete) usando ADO.NET em C# para uma base de dados MySQL,.

Pré-requisitos

  • MySQL Server instalado
  • MySQL Connector/NET (pacote NuGet: MySql.Data)
  • Visual Studio ou IDE compatível

1. Estrutura da Base de Dados

Crie a base de dados e a tabela de exemplo:

CREATE DATABASE IF NOT EXISTS PessoasDb;
USE PessoasDb;

CREATE TABLE IF NOT EXISTS Contactos (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(50),
email VARCHAR(100)
);

2. String de Conexão

No seu projeto C#, utilize a seguinte string de conexão:

string connectionString = "server=localhost;uid=root;pwd=SUASENHA;database=PessoasDb;";

Altere SUASENHA para a senha do seu utilizador root ou outro utilizador do MySQL.

3. Exemplos de Operações CRUD

Adicione o namespace:

using MySql.Data.MySqlClient;

a) Create (Inserir Registro)

using (MySqlConnection conn = new MySqlConnection(connectionString))
{
string sql = "INSERT INTO Contactos (nome, email) VALUES (@nome, @email)";
MySqlCommand cmd = new MySqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@nome", "Maria Oliveira");
cmd.Parameters.AddWithValue("@email", "maria@email.com");
conn.Open();
cmd.ExecuteNonQuery();
}

b) Read (Consultar Registros)

using (MySqlConnection conn = new MySqlConnection(connectionString))
{
string sql = "SELECT * FROM Contactos";
MySqlCommand cmd = new MySqlCommand(sql, conn);
conn.Open();
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine($"Id: {reader["id"]}, Nome: {reader["nome"]}, Email: {reader["email"]}");
}
}

c) Update (Atualizar Registro)

using (MySqlConnection conn = new MySqlConnection(connectionString))
{
string sql = "UPDATE Contactos SET nome = @nome, email = @email WHERE id = @id";
MySqlCommand cmd = new MySqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@nome", "Maria Atualizada");
cmd.Parameters.AddWithValue("@email", "nova_maria@email.com");
cmd.Parameters.AddWithValue("@id", 1);
conn.Open();
cmd.ExecuteNonQuery();
}

d) Delete (Excluir Registro)

using (MySqlConnection conn = new MySqlConnection(connectionString))
{
string sql = "DELETE FROM Contactos WHERE id = @id";
MySqlCommand cmd = new MySqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@id", 1);
conn.Open();
cmd.ExecuteNonQuery();
}

4. Observações Importantes

  • Utilize sempre parâmetros para evitar SQL Injection.
  • O bloco using garante o fecho da conexão.
  • Trate exceções com try-catch para maior robustez.
  • Para projetos maiores, considere separar o acesso a dados em uma camada específica (DAL).

Resumo das Operações

OperaçãoSQL UtilizadoMétodo ADO.NET
CreateINSERT INTO Contactos (nome, email) VALUES…ExecuteNonQuery
ReadSELECT * FROM ContactosExecuteReader
UpdateUPDATE Contactos SET nome = …, email = … WHEREExecuteNonQuery
DeleteDELETE FROM Contactos WHERE id = …ExecuteNonQuery

PostgresSQL

Este tutorial mostra como realizar operações CRUD (Create, Read, Update, Delete) numa base PostgreSQL usando ADO.NET em C# com o provedor Npgsql, que é o driver oficial para PostgreSQL em .NET.

Pré-requisitos

  • PostgreSQL instalado e rodando
  • Projeto C# (Console, WinForms, Web, etc.)
  • Pacote NuGet Npgsql instalado

1. Estrutura da Tabela de Exemplo

Crie uma tabela simples chamada contactos:

CREATE TABLE contactos (
id SERIAL PRIMARY KEY,
nome VARCHAR(100),
email VARCHAR(100)
);

2. String de Conexão

No seu código C#, defina a string de conexão:

string connectionString = "Host=localhost;Port=5432;Username=seu_utilizador;Password=sua_senha;Database=sua_base_dados";

Altere os valores conforme o seu ambiente.

3. Exemplos de Operações CRUD

Adicione o namespace:

using Npgsql;

a) Create (Inserir)

using (var conn = new NpgsqlConnection(connectionString))
{
conn.Open();
var sql = "INSERT INTO contactos (nome, email) VALUES (@nome, @email)";
using (var cmd = new NpgsqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("nome", "João da Silva");
cmd.Parameters.AddWithValue("email", "joao@email.com");
cmd.ExecuteNonQuery();
}
}

b) Read (Consultar)

using (var conn = new NpgsqlConnection(connectionString))
{
conn.Open();
var sql = "SELECT id, nome, email FROM contactos";
using (var cmd = new NpgsqlCommand(sql, conn))
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"Id: {reader.GetInt32(0)}, Nome: {reader.GetString(1)}, Email: {reader.GetString(2)}");
}
}
}

c) Update (Atualizar)

using (var conn = new NpgsqlConnection(connectionString))
{
conn.Open();
var sql = "UPDATE contactos SET nome = @nome, email = @email WHERE id = @id";
using (var cmd = new NpgsqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("nome", "João Atualizado");
cmd.Parameters.AddWithValue("email", "novo@email.com");
cmd.Parameters.AddWithValue("id", 1);
cmd.ExecuteNonQuery();
}
}

d) Delete (Excluir)

using (var conn = new NpgsqlConnection(connectionString))
{
conn.Open();
var sql = "DELETE FROM contactos WHERE id = @id";
using (var cmd = new NpgsqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("id", 1);
cmd.ExecuteNonQuery();
}
}

4. Boas Práticas

  • Sempre utilize parâmetros para evitar SQL Injection.
  • Use o bloco using para garantir o fechamento da conexão.
  • Trate exceções com try-catch conforme necessário.
  • Para projetos maiores, crie uma camada de acesso a dados (DAL) para organizar o código3.

Resumo das Operações

OperaçãoSQL UtilizadoMétodo ADO.NET
CreateINSERT INTO contactos (nome, email) VALUES…ExecuteNonQuery
ReadSELECT id, nome, email FROM contactosExecuteReader
UpdateUPDATE contactos SET nome = …, email = … WHEREExecuteNonQuery
DeleteDELETE FROM contactos WHERE id = …ExecuteNonQuery

Oracle

Vamos apresentar exemplos práticos de como realizar operações CRUD (Create, Read, Update, Delete) utilizando ADO.NET em C# com base de dados Oracle, usando o provider oficial Oracle Data Provider for .NET (ODP.NET).

Pré-requisitos

  • Oracle Database instalado e rodando
  • Provider ODP.NET instalado e referenciado no projeto (Oracle.DataAccess.Client ou Oracle.ManagedDataAccess.Client)
  • Visual Studio ou IDE compatível

1. Estrutura da Tabela de Exemplo

Crie uma tabela simples chamada Cliente:

CREATE TABLE Cliente (
Id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
Nome VARCHAR2(100)
);

2. String de Conexão

No seu código C#, defina a string de conexão:

string connectionString = "Data Source=dbserver;User Id=dbuser;Password=dbpassword;";

Altere os valores conforme seu ambiente Oracle.

3. Exemplos de Operações CRUD

Adicione o namespace:

using Oracle.DataAccess.Client; // ou Oracle.ManagedDataAccess.Client, dependendo do provider

a) Create (Inserir)

using (var conn = new OracleConnection(connectionString))
{
conn.Open();
using (var cmd = new OracleCommand())
{
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO Cliente (Nome) VALUES (:nome)";
cmd.Parameters.Add(new OracleParameter(":nome", "Novo Cliente"));
cmd.ExecuteNonQuery();
}
}

Use parâmetros sempre que possível para evitar SQL Injection.

b) Read (Consultar)

using (var conn = new OracleConnection(connectionString))
{
conn.Open();
using (var cmd = new OracleCommand())
{
cmd.Connection = conn;
cmd.CommandText = "SELECT Id, Nome FROM Cliente";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"Id: {reader["Id"]}, Nome: {reader["Nome"]}");
}
}
}
}

c) Update (Atualizar)

using (var conn = new OracleConnection(connectionString))
{
conn.Open();
using (var cmd = new OracleCommand())
{
cmd.Connection = conn;
cmd.CommandText = "UPDATE Cliente SET Nome = :nome WHERE Id = :id";
cmd.Parameters.Add(new OracleParameter(":nome", "Nome Atualizado"));
cmd.Parameters.Add(new OracleParameter(":id", 1));
cmd.ExecuteNonQuery();
}
}

d) Delete (Excluir)

using (var conn = new OracleConnection(connectionString))
{
conn.Open();
using (var cmd = new OracleCommand())
{
cmd.Connection = conn;
cmd.CommandText = "DELETE FROM Cliente WHERE Id = :id";
cmd.Parameters.Add(new OracleParameter(":id", 1));
cmd.ExecuteNonQuery();
}
}

4. Boas Práticas

  • Utilize parâmetros para evitar SQL Injection.
  • Use sempre o bloco using para garantir o fechamento da conexão.
  • Trate exceções com try-catch conforme necessário.
  • Para projetos maiores, crie uma camada de acesso a dados (DAL) para organizar o código1.

Resumo das Operações

OperaçãoSQL UtilizadoMétodo ADO.NET
CreateINSERT INTO Cliente (Nome) VALUES (:nome)ExecuteNonQuery
ReadSELECT Id, Nome FROM ClienteExecuteReader
UpdateUPDATE Cliente SET Nome = :nome WHERE Id = :idExecuteNonQuery
DeleteDELETE FROM Cliente WHERE Id = :idExecuteNonQuery