Documente Academic
Documente Profesional
Documente Cultură
NET
Neste modelo possvel manipularmos dados sem que a conexo esteja aberta.
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
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
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
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
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
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
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