Você está na página 1de 22

Programao em C# com Visual Studio .

NET

Prof. Eder Samaniego Villalba

ADO .NET e o Modelo Desconectado

Neste modelo possvel manipularmos dados sem que a conexo esteja aberta.

Conecta-se ao BD. As informaes so recuperadas e colocadas em um


objeto Dataset. Conexo desfeita.

Pode-se ento manipular os dados no Dataset sem estar conectado com o BD. Quando deseja-se persistir as alteraes a conexo refeita.
Programao em C#

Dataset

Abra a aplicao ControleProjetos. Arraste para o form CadastroContato um controle DataGridView, um ListBox e um Button.

Programao em C#

Dataset

Crie o evento click do boto e coloque o seguinte cdigo:

Execute a aplicao e perceba que ao clicar no boto os dados da tabela Contato so mostrados.

Programao em C#

Dataset

Em relao ao cdigo:

1. Foi instanciado um objeto DataSet ds 2. Conexo com o BD 3. Um DataAdapter, da, criado. Este objeto gerencia 4.
a conexo com o BD automaticamente O mtodo Fill do DataAdapter usado para preencher os registros que ele recupera do BD do DataSet. Um DataSet pode conter muitas tabelas, portanto deve-se informar qual tabela utilizar no DataSource.
Programao em C#

5.

Dataset

Pode-se fazer de duas formas, ou usando o nome da tabela ou o ndice. Como s temos uma tabela no DataSet, ela possui o ndice 0. Para usar o nome da tabela:
da.Fill(ds, Contato); dataGridView1.DataSource = ds.Tables[Contato];

Para adicionarmos uma segunda tabela no DataSet basta usar o mesmo objeto informando um outro comando SQL.

Programao em C#

Dataset

Adicione o seguinte cdigo no evento click do boto:


listBox1.DataSource = ds.Tables["Contato"]; listBox1.DisplayMember = "Nome"; listBox1.ValueMember = "ContatoID";

Para ListBox e ComboBox informa-se o DataSource, os valores do DisplayMember e ValueMember.

Programao em C#

Dataset

O DataSet armazena os dados em XML, portanto pode ser facilmente transportado para outras linguagens. Um DataSet pode tambm armazenar relacionamentos entre tabelas. Entretanto, como o DataSet fica na memria da mquina no muito produtivo ter muitos dados nele ao mesmo tempo.

Programao em C#

Dataset

Cada tabela em um DataSet conhecida como DataTable. Adicione mais um boto ao CadastroContato. Adicione o seguinte cdigo no evento click deste novo boto.

Programao em C#

Dataset

Criada a tabela vamos adicionar registros.

Agora precisamos adicionar o DataTable ao DataSet, porm o DataSet est disponvel no evento do Button1. Torne a mesma global. Mova-a para fora do evento.
Programao em C#

11

Dataset

Com o DataSet no escopo da classe podemos acess-lo: ds.Tables.Add(dt); //no boto 2 Adicione mais um Button e um ComboBox ao CadastroContato.

Programao em C#

12

Dataset

Programao em C#

13

Dataset

Duplo clique no boto 3 e conecte o mesmo a tabela Estado, com DisplayMember Estado e ValueMember EstadoID. Execute a aplicao, clique no b1, b2 e por ltimo b3, do CadastroContato, para testes.

Programao em C#

14

DataAdapter

responsvel por fazer a ligao entre o DataSet e o BD. Pode ter associado a ele 4 parmetros:

SelectCommand para consultas ao BD. InsertCommand para inserir registros no BD. UpdateCommand para atualizar o BD. DeleteCommand para remover registros do BD.

Programao em C#

15

DataAdapter

Seguindo o exemplo anterior, vamos deixar o DataAdapter disponvel a todos os mtodos da classe. Coloque o cdigo do Adapter do mtodo button1_Click logo abaixo do que cria o objeto DataSet.
DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter();

Programao em C#

16

DataAdapter - SelectCommand

Delete o cdigo do SelectCommand no button1_Click e insira o abaixo:


da.SelectCommand = new SqlCommand(); da.SelectCommand.CommandText = select * from contato; da.SelectCommand.Connection = conn;

Programao em C#

17

DataAdapter - InsertCommand

O comando Insert:

da.InsertCommand = new SqlCommand(); da.InsertCommand.CommandText = "INSERT INTO tabela (Colunas) Values (Parmetros)"; da.InsertCommand.Parameters.Add(Parmetro, Tipo, Tamanho, Coluna);

Programao em C#

18

DataAdapter - InsertCommand

Abaixo do Select coloque o cdigo do Insert.

da.InsertCommand = new SqlCommand(); da.InsertCommand.CommandText = "INSERT INTO Contato (EmpresaID, Nome, Cargo) Values (@EmpresaID, @Nome, @Cargo)"; da.InsertCommand.Parameters.Add("@EmpresaID", SqlDbType.Int, 4, "EmpresaID"); da.InsertCommand.Parameters.Add("@Nome", SqlDbType.VarChar, 50, "Nome"); da.InsertCommand.Parameters.Add("@Cargo", SqlDbType.VarChar, 50, "Cargo"); da.InsertCommand.Connection = conn;
Programao em C#

19

DataAdapter - UpdateCommand
da.UpdateCommand = new SqlCommand(); da.UpdateCommand.CommandText = UPDATE Contato SET EmpresaID = @EmpresaID, Nome = @Nome, Cargo = @Cargo WHERE ContatoID = @ContatoID; da.UpdateCommand.Parameters.Add("@EmpresaID", SqlDbType.Int, 4, "EmpresaID"); da.UpdateCommand.Parameters.Add("@Nome", SqlDbType.VarChar, 50, "Nome"); da.UpdateCommand.Parameters.Add("@Cargo", SqlDbType.VarChar, 50, "Cargo"); da.UpdateCommand.Parameters.Add("@ContatoID", SqlDbType.Int, 4, ContatoID"); da.UpdateCommand.Connection = conn;
Programao em C#

20

DataAdapter - DeleteCommand
da.DeleteCommand = new SqlCommand(); da.DeleteCommand.CommandText = DELETE FROM Contato WHERE ContatoID = @ContatoID; da.DeleteCommand.Parameters.Add("@ContatoID", SqlDbType.Int, 4, ContatoID"); da.DeleteCommand.Connection = conn;

Programao em C#

21

DataAdapter

Aps feitas as modificaes apenas chamamos o Update para a tabela em questo:


da.Update(ds.Tables[0]);

Coloque este cdigo onde quiser, no exemplo colocaremos no final do mtodo button3_Click. Execute e agora se voc inserir, alterar ou remover dados do DataGridView e clicar no boto 3 os mesmos sero salvos.

Programao em C#

22