ADO.NET (cont.)
Acesso a Bases de DadosADO .NET

Namespace System.Data
Modos de aceder à informação


OLE DB – namespace System.Data.OleDb
SQL - namespace System.Data.SqlClient
Aplicativo .Net

Objectos
OLE DB
Objectos
OLE DB
OLE DB
Informação
TDS
Informação
SQL Server
1
Arquitectura ADO .NET
2
Acesso a Bases de Dados
3
.Net Data Providers

SQL Server - System.Data.SqlClient
OLE DB - System.Data.OleDb
ODBC - System.Data.Odbc
Oracle - System.Data.OracleClient.

Objectos:



Connection
Estabelece a comunicação com a fonte de dados
Command
Executa um comando na fonte de dados
DataReader
Lê sequencialmente de uma fonte de dados – só leitura
DataAdapter
Preenche um DataSet
4
Objecto Connection

SqlConnection / OleDbConnection
string strConn = "data source=localhost; " +
"initial catalog=northwind; " +
"integrated security=true";
SqlConnection conn = new SqlConnection(strConn);

Parâmetros da string de conexão




Connection timeout
Data source
Initial catalog
Integrated security




Password
Persist security info
Provider
User ID
5
Objecto Command

SqlCommand / OleDbCommand
SqlCommand com = new SqlCommand();
com.Connection = conn;
com.CommandText="Select * From Tabela;";
SqlDataReader Info = com.ExecuteReader();

Propriedades:



Connection
Command Text
Parameters
6
Objecto Command

Executar comandos SQL



ExecuteReader – executa comandos que
devolvam linhas de informação (ex: SELECT)
ExecuteNonQuery – executa comandos que
retornam dados (ex: INSERT, UPDATE,
DELETE)
ExecuteScalar - retorna um valor único como
resultado de uma função agregada (ex:
COUNT)
7
Data Command
private System.Data.OleDb.OleDbConnection
private System.Data.OleDb.OleDbCommand
myConnection;
cmd;
String connstr="Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=" + strpath;
String strsql="Insert into Produtos (IdCat,NomeProd,Preco)
Values ('1','" + nomeprod + "'," + "'" + preco +"')" ;
myConnection=new
System.Data.OleDb.OleDbConnection(connstr);
myConnection.Open();
cmd=new OleDbCommand (strsql,myConnection); (*)
cmd.ExecuteNonQuery();
myConnection.Close();
(*) cmd=new OleDbCommand();
cmd.Connection=myConnection;
cmd.CommandText=strsql;
Construtores
ou
Propriedades
8
Data Command

Utilização de parâmetros no SQL
String strsql =
"Insert into Produtos (IdCat,NomeProd,Preco) Values (?,?,?)";
myConnection = new OleDbConnection(myConnectionstr);
cmd = new System.Data.OleDb.OleDbCommand( );
cmd.Connection = myConnection;
cmd.CommandText = strsql;
cmd.Parameters.AddWithValue("idcat",idcat);
cmd.Parameters.AddWithValue("nomeprod",nomeprod);
cmd.Parameters.AddWithValue("preco",preco);
9
Objecto DataReader

SqlDataReader / OleDbDataReader
SqlDataReader Info = com.ExecuteReader();
DataGrid1.DataSource=Info;


Percurso forward-only em modo read-only
Criado através do método executeReader de um objecto
Command
• Pode ser associado ao DataSource de Server Controls
 Propriedades e métodos mais usais





FieldCount
IsClosed
Close
GetString
GetInt32
10
Objecto DataReader
• DataSource de Server Controls
string sql ="SELECT OrderID, CustomerID FROM orders";
OleDbConnection conn = new OleDbConnection(connstr);
OleDbCommand cmd = new OleDbCommand(sql,conn);
conn.Open();
OleDbDataReader myReader;
myReader = myCommand.ExecuteReader();
DataGrid1.DataSource=myReader;
DataGrid1.DataBind();
11
Objecto DataReader

Métodos:



Read – lê um registo do resultado do Query, permite iterar
sobre o objecto
GetFloat, GetInt, GetString, etc – permite aceder aos campos
do registo
GetSchemaTable – Devolve um Data Table com a informação
do Schema do resultado do Query
while (dtreader.Read())
{
HyperLink hlink=new HyperLink();
hlink.Text=dtreader.GetString(1);
// (string)dtreader[“NomeCat”];
hlink.NavigateUrl="http://localhost/produtos.aspx?prod=
"+dtreader.GetInt32(0);
Panel1.Controls.Add(hlink);
Panel1.Controls.Add(new LiteralControl("<P/>"));
}
12
DataSet
• DataSet representa uma colecção
de tabelas (objectos DataTables) ,
juntamente com restrições e
relações entre tabelas
•Estrutura relacional em memória
•Usa o DataAdapter para fazer a
ligação com a fonte de dados
13
What is a Dataset?
DataSet
DataTable
DataTable
DataTable
SqlDataAdapter
Web server memory
SqlConnection
OleDbDataAdapter
Physical storage
OleDbConnection
SQL Server 2000
OleDb Database
14
Data Adapters
DataSet
DataAdapter
SelectCommand UpdateCommand InsertCommand DeleteCommand
DataReader
Command
Command
Command
Command
Connection
sp_SELECT
sp_UPDATE
sp_INSERT
sp_DELETE
Database
15
DataAdapter

Criar um DataAdapter
SqlDataAdapter da = new SqlDataAdapter
("select * from Authors",conn);

Propriedades do comando SelectCommand
da.SelectCommand.CommandText
da.SelectCommand.Connection

Definir os comandos InsertCommand, UpdateCommand, and
DeleteCommand, se necessário
da.Insertcommand
da.UpdateCommand
16
Creating a DataSet

Criar um DataSet

Fill – executa o SelectCommand
DataSet ds = new DataSet();
da.Fill(ds, "Authors");

Access a DataTable
ds.Tables["Authors"].Rows.Count;
string str="";
foreach(DataRow r in
ds.Tables["Authors"].Rows)
{
str += r[2];
str += r["au_lname"];
}
17
DataAdapder / DataSet
• Datasource
de um Controlo
…
String strconn="Provider=Microsoft.Jet.OLEDB.4.0; ….
String strsql="Select * from produtos where IdCat=“ +
id;
conn=new OleDbConnection();
conn.ConnectionString=strconn;
dadapter=new
OleDbDataAdapter (strsql,conn);
dataset=new DataSet();
dadapter.Fill(dataset,”Produtos”);
dgrid.DataSource=dataset;
dgrid.DataBind();
18
DataAdapder / DataSet

Aceder às tabelas no DataSet

Usar Tables para aceder à tabela Produtos
Objecto DataTable

DataTable dt =dataset.Tables[“Produtos"]

Aceder às linhas da tabela

Usar Rows

Objecto DataRow
DataRow dr= dataset.Tables["Produtos”].Rows
foreach (DataRow dr in dataset.Tables[“Produtos"].Rows)
19
Download

ADO.Net