Basicamente, em um projeto .Net a conexão com um banco de dados é como no esquema abaixo. Através de um provider teremos objetos específicos que servirão para a manipulação de dados em um banco. Esse tutorial trata de uma conexão com SQL Server 2008. As alterações ao se utiliza-las com outros bancos de dados são poucas – altera-se logicamente o provider e a connection string do object conection.
Object Connection
cn.ConnectionString = "Data Source=localhost;" +
"Integrated Security=SSPI;" +
"Initial Catalog=Northwind";
[/sourcecode]
Object Command
O Object Command é utilizado em comandos no banco de dados. Pode ser criado através de uma conexão – para se definir o comando que será executado no banco, utilize a função CommandText.
[sourcecode language=”csharp”] SqlCommand cmd = cn.CreateCommand();cmd.CommandText = "SELECT * FROM Tabela";
[/sourcecode]
Como existem diversos tipos de comandos que podemos executar em um banco de dados – insert, update, delete, por exemplo, existem também vários tipos de execução de um object command – ou vários tipos de commandtext.
Eles são:
- ExecuteNonQuery(): Não retorna nenhum tipo de dado, apenas o número de células afetadas.
"Data Source=localhost;" +
"Initial Catalog=Videos;Integrated
Security=True");
SqlCommand cmd = new SqlCommand("UPDATE titulos SET
Nome = ‘Sem Nome’ WHERE Nome = ”", cnn);
cnn.Open();
int qtidade =cmd.ExecuteNonQuery();
Console.WriteLine(qtidade + " linhas foram
afetadas.");
cnn.Close();
[/sourcecode]
- ExecuteScalar(): Retorna um único objeto – scalar
"Data Source=localhost;" +
"Initial Catalog=Videos;Integrated
Security=True");
SqlCommand cmd = new SqlCommand("SELECT COUNT(*)
FROM titulos", cnn);
cnn.Open();
object qtidade = cmd.ExecuteScalar();
Console.WriteLine("Existem " + (int)qtidade + "
títulos");
cnn.Close(); [/sourcecode]
- ExecuteDataReader(): Retorna um objeto DataReader, com o resultado da consulta – é utilizada para a leitura de dados após uma querie ser executada, mas não permite a alteração desses dados. Toda a leitura é feita sequencialmente.
Para ler o conteúdo de um campo específico utilizamos:
[sourcecode language=”csharp”] SqlDataReader dr = cmd.ExecuteReader();string str = dr["NomeDoCampo"];
[/sourcecode]
Para acessar o próximo registro da sequência:
[sourcecode language=”csharp”] dr.Read();[/sourcecode]
Exemplo de Uso:
[sourcecode language=”csharp”] SqlConnection cn = new SqlConnection("Data Source=localhost;" +"Integrated Security=SSPI;" +
"Initial Catalog=Northwind");
SqlCommand cmd = new SqlCommand("select * from Customers", cn);
cn.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read()) {
comboBox1.Add(dr["CompanyName"]); // Adiciona dado à um comboBox.
}
dr.Close();
cn.Close();
Exemplo de Uso 2:
[sourcecode language=”csharp”] SqlConnection cn = new SqlConnection("Data Source=localhost;“+"Integrated Security=SSPI;" +
"Initial Catalog=Northwind");
SqlCommand cmd = new SqlCommand("select * from Customers", cn);
cn.Open();
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader()); // Adiciona automaticamente todos os dados em um DataTable
cn.Close();
- ExecuteXMLReader(): Retorna um XMLReader.
Não se esqueça que ao realizar qualquer tipo de consulta em seu banco de dados é necessário utilizar técnicas para evitar ataques. Não deixe de ler o post . Net – Evitando ataques por SQL Injection.
// Comente!
comentários