<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3476309669807478533</id><updated>2011-12-05T17:39:36.442-08:00</updated><title type='text'>Desenvolvendo .Net</title><subtitle type='html'>Blog desenvolvido para auxiliar os iniciantes a utilizar a Plataforma .Net.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://desenvolvendodotnet.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476309669807478533/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://desenvolvendodotnet.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Wilker Silva</name><uri>http://www.blogger.com/profile/09923643753104645084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3476309669807478533.post-4702405870172981097</id><published>2008-02-03T07:54:00.000-08:00</published><updated>2008-02-03T07:56:43.063-08:00</updated><title type='text'>Passei na Prova 70-528 Microsoft .NET Framework 2.0 - Web-Based Client Development</title><content type='html'>&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;Nessa sexta-feira dia 01/02/2008 passei na prova para 70-528, que é uma das duas provas obrigatórias para obter a certificação &lt;i style=""&gt;MCTS: .Net Framework 2.0 Web Applications&lt;/i&gt;. Ta certo que passei usando a “&lt;i style=""&gt;Second Shot&lt;/i&gt;”, mas não tinha estudo tudo que iria cair na prova, como WebParts e Mobile Web Applications.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;Bom, vou falar um pouco sobre a prova. Ela não é difícil é bem simples, não teve nenhum “pega”, é composta por 45 questões que abrange grande parte das principais funcionalidades do Asp.Net. O que eu notei ao fazer a prova, foi que, o que mais caiu, como dito em outros blogs que andei olhando, foi WebParts, ligação entre componentes usando &lt;i style=""&gt;&lt;u&gt;ConnectionsZone&lt;/u&gt;,&lt;/i&gt; configuração das aparências das WebParts com &lt;i style=""&gt;&lt;u&gt;EditorZone&lt;/u&gt;&lt;/i&gt; entre as outras funcionalidades das WebParts. Cai na parte de Mobile Web Applications, configuração das imagens para fazer escolha automaticamente dependendo do dispositivo, se é um dispositivo móvel ou se é uma browser normal. Autenticação também foi uns dos tópicos mais cobrados na prova, parte de autorização por grupo de usuários, acesso a pastas do site por usuário protegidos, autenticação por &lt;i style=""&gt;Windows&lt;/i&gt; e &lt;i style=""&gt;Forms&lt;/i&gt;. &lt;i style=""&gt;Web Server Control&lt;/i&gt; também foi um conteúdo muito cobrado.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;Bom, isso foi apenas alguns tópicos mais cobrados na prova que eu fiz, pode ater ter outros tópicos, mais não lembro agora.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial;" lang="EN-US"&gt;Estudei pelo livro &lt;b style=""&gt;MCTS Self-Paced Training Kit (Exam 70-528) Microsoft.NET Framework 2.0 Web-Based Client Development.&lt;/b&gt; &lt;/span&gt;&lt;span style="font-family: Arial;"&gt;Ele abrange todo o conteúdo necessário para a prova, mas a experiência conta muito, muito mesmo. Não fique só nos exemplos do livro, faça mais.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;E principalmente, faça simulados, muitos, tanto os simulados do Livro como outros que encontrar, eu fiz esse simulado também, &lt;i style=""&gt;CertGuaranteed - ExamSheet 70-528 v100906 97q&lt;/i&gt;, que por sinal, me ajudou muito.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;Fica então essa dica pra quem quer fazer a prova.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;Agora é estudar para a segunda prova, 70-536 - TS: Microsoft .NET Framework 2.0 Application Development Foundation, para assim conseguir meu certificado.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;Qualquer duvida, é só mandar um e-mail.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;Até mais...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3476309669807478533-4702405870172981097?l=desenvolvendodotnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desenvolvendodotnet.blogspot.com/feeds/4702405870172981097/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3476309669807478533&amp;postID=4702405870172981097' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476309669807478533/posts/default/4702405870172981097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476309669807478533/posts/default/4702405870172981097'/><link rel='alternate' type='text/html' href='http://desenvolvendodotnet.blogspot.com/2008/02/passei-na-prova-70-528-microsoft-net.html' title='Passei na Prova 70-528 Microsoft .NET Framework 2.0 - Web-Based Client Development'/><author><name>Wilker Silva</name><uri>http://www.blogger.com/profile/09923643753104645084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3476309669807478533.post-1085514587375212377</id><published>2007-05-13T05:45:00.000-07:00</published><updated>2008-12-10T05:18:27.407-08:00</updated><title type='text'>Utilizando o Registro do Windows para gravar informações com C#.Net</title><content type='html'>Quando precisamos gravar algum tipo de informações onde o banco de dados não pode ser utilizado, utilizamos outras formas, como um arquivo “.txt”, “.ini” entre outros. Podemos também, dependendo da informação que será guardada, utilizar o próprio registro do Windows.&lt;br /&gt;Um exemplo para essa gravação e o caminho de um banco de dados ou uma string de conexão criptografada.&lt;br /&gt;&lt;br /&gt;Nesse artigo irei demonstrar como podemos utilizar o registro do Windows para gravar o caminho de um arquivo “.txt”. Mas você pode escolher qualquer outro tipo de arquivo.&lt;br /&gt;&lt;br /&gt;A chave de Registro que iremos utilizar será:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;HKEY_LOCAL_MACHINE\Software&lt;/span&gt;&lt;br /&gt;Nela podemos encontrar informações de todos os programas instalados no computador.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Iniciando a construção do Programa.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Estarei utilizando o Visual Studio 2005, mas você pode utilizar qualquer outro aplicativo para auxiliar no desenvolvimento.&lt;br /&gt;&lt;br /&gt;Começaremos criando um projeto. No Visual Studio, clique em File/New/Project e escolha Windows Application. Escolha o nome para sua aplicação e o caminho que será salvo conforme &lt;span style="font-weight: bold;"&gt;Figura 1:&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_x9N98vEZwrk/RkcMJJIqbEI/AAAAAAAAAB8/g49xiK4Ll9M/s1600-h/imagem_1.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_x9N98vEZwrk/RkcMJJIqbEI/AAAAAAAAAB8/g49xiK4Ll9M/s320/imagem_1.gif" alt="" id="BLOGGER_PHOTO_ID_5064029657212021826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Feito isso, crie então um formulário conforme imagem abaixo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_x9N98vEZwrk/RkcMZJIqbFI/AAAAAAAAACE/06_W7IvfFlQ/s1600-h/formulario.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_x9N98vEZwrk/RkcMZJIqbFI/AAAAAAAAACE/06_W7IvfFlQ/s320/formulario.gif" alt="" id="BLOGGER_PHOTO_ID_5064029932089928786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Componentes utilizados:&lt;br /&gt;GroupBox:  gb_gravaCaminho&lt;br /&gt;Label:   lb_caminho&lt;br /&gt;TextBox: tbx_caminho&lt;br /&gt;Button:  bt_abrir&lt;br /&gt;Button:  bt_gravarCaminho&lt;br /&gt;&lt;br /&gt;GroupBox: gb_leCaminho&lt;br /&gt;Label:   lb_caminhoGravado&lt;br /&gt;TextBox:: tbx_caminhoGravado&lt;br /&gt;&lt;br /&gt;Iremos utilizar também um outro componente, o OpenFileDialog para poder pegar o caminho do arquivo (para maiores informações sobre esse componente, acesse &lt;a href="http://msdn2.microsoft.com/pt-br/library/system.windows.forms.openfiledialog(vs.80).aspx)"&gt;http://msdn2.microsoft.com/pt-br/library/system.windows.forms.openfiledialog(vs.80).aspx)&lt;/a&gt;. Para usar esse componente no projeto, na barra Toolbox de dois clique em cima dele:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_x9N98vEZwrk/RkcM35IqbGI/AAAAAAAAACM/bsSeZFg2SkI/s1600-h/ToolBox.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_x9N98vEZwrk/RkcM35IqbGI/AAAAAAAAACM/bsSeZFg2SkI/s320/ToolBox.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5064030460370906210" /&gt;&lt;/a&gt;&lt;br /&gt;Agora vamos partir para a ação dos botões.&lt;br /&gt;De dois clique no botão &lt;span style="font-weight:bold;"&gt;Abrir&lt;/span&gt; e insira o código abaixo:&lt;br /&gt;&lt;code&gt;&lt;br /&gt; /// &lt;summary&gt;&lt;br /&gt; /// Abri a janela para escolher o caminho do &lt;br /&gt; /// banco de dados&lt;br /&gt; /// &lt;/summary&gt;&lt;br /&gt; private void bt_abrir_Click(object sender, EventArgs e)&lt;br /&gt; {&lt;br /&gt;    // coloca o título na janela&lt;br /&gt;    this.openFileDialog1.Title = "Escolha o banco de dados...";&lt;br /&gt;    // informa qual será o diretório inicial&lt;br /&gt;    this.openFileDialog1.InitialDirectory = "c:\\";&lt;br /&gt;    // configura o filtro para tipo de arquivo&lt;br /&gt;    this.openFileDialog1.Filter = "txt files (*.txt)|*.txt";&lt;br /&gt;    // abre a janela para escolher o banco de dados&lt;br /&gt;    this.openFileDialog1.ShowDialog();&lt;br /&gt;&lt;br /&gt;    // pega o caminho escolhido&lt;br /&gt;    this.tbx_caminho.Text = this.openFileDialog1.FileName;&lt;br /&gt; }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Feito isso, você já consegue selecionar o arquivo e pegar seu caminho.&lt;br /&gt;Agora vamos para a parte principal, gravar essa informação no registro do Windows.&lt;br /&gt;&lt;br /&gt;Vamos utilizar o namespace Microsoft.Win3, então acrescente ele ao programa:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;using Microsoft.Win32;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;De dois clique no botão Gravar Caminho e o insira o código abaixo:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;   // cria uma referêcnia para a chave de registro Software&lt;br /&gt;   RegistryKey rk = Registry.LocalMachine.OpenSubKey("Software",  true);&lt;br /&gt;   // cria um Subchave como o nome GravaRegistro&lt;br /&gt;   rk = rk.CreateSubKey("GravaRegistro");&lt;br /&gt;   // grava o caminho na SubChave GravaRegistro&lt;br /&gt;   rk.SetValue("CAMINHO_TXT", tbx_caminho.Text);&lt;br /&gt;   // fecha a Chave de Restistro registro&lt;br /&gt;   rk.Close();&lt;br /&gt;   MessageBox.Show("Caminho gravado com Sucesso!");&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;catch (Exception erro)&lt;br /&gt;{&lt;br /&gt;   MessageBox.Show("Erro no gravação do Registro: " + erro.Message);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Pronto, agora já temos nosso caminho gravado do Registro do Windows.&lt;br /&gt;Para verificar o caminho gravado, basta acessar o Registro do Windows com o comando &lt;span style="font-style:italic;"&gt;regedit&lt;span style="font-weight:bold;"&gt;&lt;/span&gt;&lt;/span&gt;, e verificar que na chave de registro &lt;span style="font-weight:bold;"&gt;HKEY_LOCAL_MACHINE\Software&lt;/span&gt; terá um basta com o nome &lt;span style="font-weight:bold;"&gt;GravaRegistro&lt;/span&gt; e dentro dela um arquivo com o nome &lt;span style="font-weight:bold;"&gt;CAMINHO_TXT&lt;/span&gt; onde tera o caminho que você escolheu.&lt;br /&gt;&lt;br /&gt;Agora precisamos realizar a leitura desse caminho gravado.&lt;br /&gt;De dois clique no botão &lt;span style="font-weight:bold;"&gt;Caminho Gravado&lt;/span&gt; e insira o codigo abaixo:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;   // cria uma referêcnia para a chave de registro Software&lt;br /&gt;   RegistryKey rk = Registry.LocalMachine.OpenSubKey("Software", true);&lt;br /&gt;   // realiza a leitura do registro&lt;br /&gt;   tbx_caminhoGravado.Text = &lt;br /&gt;     rk.OpenSubKey("GravaRegistro", true).GetValue("CAMINHO_TXT").ToString();&lt;br /&gt;}&lt;br /&gt;catch (Exception erro)&lt;br /&gt;{&lt;br /&gt;   MessageBox.Show("Erro na leitura do Registro: " + erro.Message);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Finalizada então a codificação, execute o programa e realize a leitura do registro gravado.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Conclusão&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Podemos ver que exitem outras formas que auxiliam nas gravações de  informações, não só utilizando os arquivos .txt ou .ini. E que para utilizar o registro do Windows é muito simples, bastando algumas linhas de programação e você não irá precisar usar mais arquivos de texto para quardar informações como caminho do banco de dados.&lt;br /&gt;Mas utilize com cuidado, pois se alterar o registro de ulgum outro programa, poderá tem sérios problemas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Referências&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/brasil/security/guidance/topics/devsec/secmod25.mspx"&gt;http://www.microsoft.com/brasil/security/guidance/topics/devsec/secmod25.mspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.infowester.com/tutregistrowin.php"&gt;http://www.infowester.com/tutregistrowin.php&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/pt-br/library/system.windows.forms.openfiledialog(vs.80).aspx)."&gt;http://msdn2.microsoft.com/pt-br/library/system.windows.forms.openfiledialog(vs.80).aspx).&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3476309669807478533-1085514587375212377?l=desenvolvendodotnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desenvolvendodotnet.blogspot.com/feeds/1085514587375212377/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3476309669807478533&amp;postID=1085514587375212377' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476309669807478533/posts/default/1085514587375212377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476309669807478533/posts/default/1085514587375212377'/><link rel='alternate' type='text/html' href='http://desenvolvendodotnet.blogspot.com/2007/05/utilizando-o-registro-do-windows-para.html' title='Utilizando o Registro do Windows para gravar informações com C#.Net'/><author><name>Wilker Silva</name><uri>http://www.blogger.com/profile/09923643753104645084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_x9N98vEZwrk/RkcMJJIqbEI/AAAAAAAAAB8/g49xiK4Ll9M/s72-c/imagem_1.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3476309669807478533.post-8687236040022636787</id><published>2007-03-31T04:51:00.000-07:00</published><updated>2008-12-10T05:18:28.734-08:00</updated><title type='text'>Preenchendo um DataGridView de forma desvinculada</title><content type='html'>Por: &lt;span style="font-weight:bold;"&gt;Wilker Silva de Oliveira&lt;/span&gt;&lt;br /&gt;e-mail: &lt;span style="font-weight:bold;"&gt;wilker.oliveira@gmail.com&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;No artigo &lt;a href="http://www.desenvolvendodotnet.blogspot.com/"&gt;Utilizando SGBD FireBird 2.0 com ADO.NET&lt;/a&gt;, demonstrei de forma rápida, como podemos popular um DataGridView através de consultas do banco de dados.&lt;br /&gt;Nesse artigo, demonstrarei uma outra forma que temos para preencher esse componente desvinculado do banco de dados.&lt;br /&gt;&lt;br /&gt;O DataGridView é uma poderosa forma de exibir dados no formato de tabela, tendo a possibilidade de adicionar, apagar dados entre outros recursos.&lt;br /&gt;Para maiores informações sobre esse componente, acesse &lt;a href="http://msdnwiki.microsoft.com/pt-br/mtpswiki/e0ywh3cz%28VS.80%29.aspx"&gt;http://msdnwiki.microsoft.com/pt-br/mtpswiki/e0ywh3cz(VS.80).aspx&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Para demonstrar o preenchimento, criei um formulário conforme &lt;span style="font-weight: bold;"&gt;Figura 1&lt;/span&gt; abaixo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_x9N98vEZwrk/Rg5MedQhduI/AAAAAAAAABE/V9SC67j6grk/s1600-h/layout_1.gif"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_x9N98vEZwrk/Rg5MedQhduI/AAAAAAAAABE/V9SC67j6grk/s320/layout_1.gif" alt="" id="BLOGGER_PHOTO_ID_5048056318462621410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para construir o formulário, utilizei os componentes &lt;span style="font-weight: bold;"&gt;DataGridView, GroupBox, TextBox, Button e MaskedTextBox&lt;/span&gt;, formatando sua máscara para o formato de &lt;span style="font-style: italic;"&gt;Phone number&lt;/span&gt; - para poder fazer essa formatação, basta selecionar o componente MaskedTextBox e clicar na opção &lt;span style="font-style: italic;"&gt;Mask&lt;/span&gt;, na janela de Propriedades (&lt;span style="font-style: italic;"&gt;Properties Window&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Para adicionar as colunas, selecione o componente DataGridView, e clique na seta que aparece logo em cima, conforme &lt;span style="font-weight: bold;"&gt;Figura 2&lt;/span&gt; abaixo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_x9N98vEZwrk/Rg5NKtQhdvI/AAAAAAAAABM/Y73WXA2f7i4/s1600-h/add_colunas.gif"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_x9N98vEZwrk/Rg5NKtQhdvI/AAAAAAAAABM/Y73WXA2f7i4/s320/add_colunas.gif" alt="" id="BLOGGER_PHOTO_ID_5048057078671832818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Clique em &lt;span style="font-style: italic;"&gt;Add Column....&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Basta agora informar o &lt;span style="font-style: italic;"&gt;nome para a coluna&lt;/span&gt;, qual o &lt;span style="font-style: italic;"&gt;tipo&lt;/span&gt; e o &lt;span style="font-style: italic;"&gt;nome de cabeçalho&lt;/span&gt; da coluna conforme Figura 3. Para o tipo da coluna, deixe o padrão: DataGridViewTextBoxColumn.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_x9N98vEZwrk/Rg5NotQhdwI/AAAAAAAAABU/DyY7RJ70Ofo/s1600-h/add_colunas_2.gif"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_x9N98vEZwrk/Rg5NotQhdwI/AAAAAAAAABU/DyY7RJ70Ofo/s320/add_colunas_2.gif" alt="" id="BLOGGER_PHOTO_ID_5048057594067908354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Faça o mesmo procedimento para os outros campos.&lt;br /&gt;Após o preenchimento das colunas, o formulário ficará conforme &lt;span style="font-weight: bold;"&gt;Figura 4&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_x9N98vEZwrk/Rg5N6tQhdxI/AAAAAAAAABc/WAAnKo1C82k/s1600-h/layout_2.gif"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_x9N98vEZwrk/Rg5N6tQhdxI/AAAAAAAAABc/WAAnKo1C82k/s320/layout_2.gif" alt="" id="BLOGGER_PHOTO_ID_5048057903305553682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pronto, podemos então começar a colocar os eventos para cada botão.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Adicionando os dados&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;De dois clique no botão &lt;span style="font-weight: bold;"&gt;Adicionar &lt;/span&gt;e informe o código conforme abaixo:&lt;br /&gt;&lt;pre&gt;   /// &lt;summary&gt;&lt;br /&gt;  /// Adiciona os dados no DataGridView&lt;br /&gt;  /// &lt;/summary&gt;&lt;br /&gt; private void bt_adicionar_Click(object sender, EventArgs e)&lt;br /&gt; {       &lt;br /&gt;      // array de string com os dados informados&lt;br /&gt;      string[] dados = { tx_nome.Text, tx_fone.Text, tx_celular.Text };&lt;br /&gt;&lt;br /&gt;      // preenche o datagridview com os dados informados&lt;br /&gt;      // cada possição do array de string corresponde a uma&lt;br /&gt;      // coluna do nosso datagridview&lt;br /&gt;      this.dgv_dados.Rows.Add( dados );&lt;br /&gt;&lt;br /&gt;      // limpa os dados após o preenchimento&lt;br /&gt;      limpa_dados();&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;Verifique que foi chamado um método &lt;span style="font-style: italic;"&gt;limpa_dados(&lt;/span&gt;), o mesmo serve para limpar os dados após seu preenchimento no DataGridView:&lt;br /&gt;&lt;pre&gt;   /// &lt;summary&gt;&lt;br /&gt;  /// Limpa os dados após o preenchimento&lt;br /&gt;  /// &lt;/summary&gt;&lt;br /&gt;  private void limpa_dados()&lt;br /&gt;  {&lt;br /&gt;        tx_nome.ResetText();// limpa o nome&lt;br /&gt;        tx_fone.ResetText();// limpa o telefone&lt;br /&gt;        tx_celular.ResetText();// limpa o celular&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;Pronto, conseguimos então preencher um DataGridView sem necessidade de uma conexão com o banco de dados.&lt;br /&gt;&lt;br /&gt;Como mais uma opção do nosso formulário, iremos excluir uma linha selecionada do nosso DataGridView, para isso, no evento do botão &lt;span style="font-weight: bold;"&gt;Excluir&lt;/span&gt;, coloque o seguinte código:&lt;br /&gt;&lt;pre&gt;   /// &lt;summary&gt;&lt;br /&gt;  /// Exclui do DataGridView a linha selecionada&lt;br /&gt;  /// &lt;/summary&gt;&lt;br /&gt;  private void bt_excluir_Click(object sender, EventArgs e)&lt;br /&gt;  {&lt;br /&gt;        // tenta pegar o index da linha selecionada&lt;br /&gt;        try&lt;br /&gt;        {&lt;br /&gt;            // pega o index da linha selecioanada&lt;br /&gt;            int index = dgv_dados.CurrentRow.Index;&lt;br /&gt;&lt;br /&gt;            // conforme o index, ele remove a linha do&lt;br /&gt;            // datagridview&lt;br /&gt;            dgv_dados.Rows.RemoveAt(index);&lt;br /&gt;        }&lt;br /&gt;        // caso a linha não esteje selecionada, ocorrerá um erro&lt;br /&gt;        catch&lt;br /&gt;        {&lt;br /&gt;            MessageBox.Show("Selecione uma linha!",&lt;br /&gt;              "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;Conclusão&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Popular um componente DataGridView, é muito simples, vinculado ou não ao banco de dados.&lt;br /&gt;Esse componente fornece várias outras funcionalidades que não foram vistas aqui. Cabe ao leitor se aprofundar mais sobre essas funcionalidaes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Referências&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdnwiki.microsoft.com/pt-br/mtpswiki/e0ywh3cz%28VS.80%29.aspx"&gt;http://msdnwiki.microsoft.com/pt-br/mtpswiki/e0ywh3cz(VS.80).aspx&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3476309669807478533-8687236040022636787?l=desenvolvendodotnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desenvolvendodotnet.blogspot.com/feeds/8687236040022636787/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3476309669807478533&amp;postID=8687236040022636787' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476309669807478533/posts/default/8687236040022636787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476309669807478533/posts/default/8687236040022636787'/><link rel='alternate' type='text/html' href='http://desenvolvendodotnet.blogspot.com/2007/03/preenchendo-um-datagridview-de-forma.html' title='Preenchendo um DataGridView de forma desvinculada'/><author><name>Wilker Silva</name><uri>http://www.blogger.com/profile/09923643753104645084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x9N98vEZwrk/Rg5MedQhduI/AAAAAAAAABE/V9SC67j6grk/s72-c/layout_1.gif' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3476309669807478533.post-3746485955326625983</id><published>2007-03-27T04:24:00.000-07:00</published><updated>2008-12-10T05:18:30.223-08:00</updated><title type='text'>Utilizando SGBD FireBird 2.0 com ADO.NET</title><content type='html'>Por:&lt;span style="font-weight:bold;"&gt; Wilker Silva de Oliveira&lt;/span&gt;&lt;br /&gt;e-mail:&lt;span style="font-weight:bold;"&gt; wilker.oliveira@gmail.com&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;De forma básica, irei falar um pouco do ADO.NET antes de exemplificar a utilização com o FireBird 2.0.&lt;br /&gt;&lt;br /&gt;ADO.NET é uma “reconstrução”, do antigo ADO, sendo completamente integrado com o .NET Framework, disponibilizando um grande número de classes e possibilitando em uma comunicação bem mais fácil com os SGBD’s.&lt;br /&gt;Ou seja, ele nada mais é que um conjunto de classes definidas pelo .NET Framework, que auxilia na comunicação com os SGBD’s.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Vantagens de Usar o ADO.NET &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Algumas das vantagens em utilizar o ADO.NET é que você contará com uma alta escalabilidade, desempenho, segurança, performance em seu sistema e maior produtividade.&lt;br /&gt;&lt;br /&gt;Agora com o ADO.NET, ao utilizar um DataSet, o mesmo, por padrão, trabalha desconectado. Os dados ficam armazenados em um cachê local, assim a conexão pode ser fechada e o cliente pode trabalhar desconectado, e caso seja necessário uma atualização dos dados, basta efetuar uma nova conexão.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Arquitetura&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_x9N98vEZwrk/Rgj_7OGAOWI/AAAAAAAAAAM/W356SHVihd4/s1600-h/arquitetura.gif"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_x9N98vEZwrk/Rgj_7OGAOWI/AAAAAAAAAAM/W356SHVihd4/s320/arquitetura.gif" alt="" id="BLOGGER_PHOTO_ID_5046564775329282402" border="0" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;fig. 1: Arquitetura .Net&lt;/b&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Os componentes que formam a arquitetura do ADO.NET são: Data Source, Data Provider e o DataSet.&lt;br /&gt;• Data Source: representa um banco de dados físico ou um arquivo XML;&lt;br /&gt;• Data Provider: se encarrega de criar as conexões e processar comandos;&lt;br /&gt;• DataSet: representa um ou mais data source na memória.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Componentes do ADO.NET&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_x9N98vEZwrk/RgkAP-GAOXI/AAAAAAAAAAU/02La0Aicc2M/s1600-h/componentes.gif"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_x9N98vEZwrk/RgkAP-GAOXI/AAAAAAAAAAU/02La0Aicc2M/s320/componentes.gif" alt="" id="BLOGGER_PHOTO_ID_5046565131811567986" border="0" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;fig. 2: Arquitetura .Net&lt;/b&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;As classes do ADO.NET estão divididas em dois grupos: Managed Providers e DataClasses.&lt;br /&gt;&lt;br /&gt;• Managed providers: objetos que não armazenam dados e são usados para ler e escrever em banco de dados: Connection, DataAdapter, Command e DataReader. Para cada SGBD, existe uma classe para fazer a comunicação com o banco de dados.&lt;br /&gt;&lt;br /&gt;• DataClasses: são os objetos que podem armazenar e manipular dados: DataSets, DataTables, DataRows, DataColumns, DataRelations, Constraints e DataView.&lt;br /&gt;&lt;br /&gt;Detalhando um pouco os objetos do grupo Managed Providers e DataClasses, temos:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Managed providers:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;• &lt;i&gt;Connection:&lt;/i&gt; é através dessa classe, que será feita a comunicação com o banco de dados. Ela recebe uma string de conexão, onde serão informados os dados para acesso ao banco.&lt;br /&gt;&lt;br /&gt;• &lt;i&gt;Command:&lt;/i&gt; recebe uma string com o comando SQL;&lt;br /&gt;&lt;br /&gt;• &lt;i&gt;DataAdapter:&lt;/i&gt; um repositório para o Command. Dependendo da string passada para o Command, ele será preenchido com os dados resultantes do processamento.  Através dos comandos informados, ele realizará junto ao banco de dados, algumas tarefas, como: pesquisar (SelectCommand), inserir (InsertCommand), alterar (UpdateCommand) ou excluir (DeleteCommand). Dependendo do comando, será usado para executar o DataAdapter um desses objetos: ExecuteNonQuery() - usado para INSERT, UPDATE e DELETE, retorna o número de registros afetados; ExcuteEscalar() – usado em consultas, quando deseja-se retornar apenas uma linha e uma coluna, ex.: verificar o saldo total da conta, código do cliente com o cpf XXX, mesmo que a consulta retorne mais de uma linha, ele irá pegar apenas a primeira linha e a primeira coluna; ExecuteReader() – utilizado quando a consulta irá retornar mais de um valor, após a execução, ele preenche o DataReader com os resultados.&lt;br /&gt;&lt;br /&gt;• &lt;i&gt;DataReader:&lt;/i&gt; utilizado para fazer leituras dos registros no banco de dados. Após a execução de uma consulta, o DataReader será preenchido com os resultados das consultas, para posterior leitura e preenchimentos de alguns objetos,&lt;br /&gt;como por exemplo um TextBox.&lt;br /&gt;&lt;br /&gt;Para cada SGBD, existe um provider específico, porém, mudando apenas o seu prefixo. Ex: para SGBD Sql Server, possui o prefixo SqlXXX (SqlConnection), para SGBD Oracle, possui o prefixo OracleXXX (OracleCommand), para SGBD FireBird, possui um prefixo FbXXX (FbDataAdapter).&lt;br /&gt;&lt;br /&gt;Para poder usar um SGBD através do ADO.NET e com acesso direto ao banco, é necessário verificar se existe um provider para o banco que será utilizado, caso exista, será necessária à instalação do mesmo.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;DataClasses:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;• &lt;i&gt;DataSet:&lt;/i&gt; objeto que armazena os dados, uma copia exata ou parcial do banco de dados, possibilitando o trabalho com o banco desconectado. Funciona como um banco de dados em memória, possuindo coleções de tabelas (DataTables), campos (DataColumns), registros (DataRows), constraints (Constraints) e relacionamentos (DataRelations). Os dados que armazenam são manipulados em XML por padrão. Podendo ser passado entre camadas sem nenhum problema.&lt;br /&gt;&lt;br /&gt;• &lt;i&gt;DataTable:&lt;/i&gt; esse objeto representa uma tabela de dados na memória, usado por diversos outros objetos, como o DataSet. Possui alguns métodos que auxiliam na criação de DataTables: DataColumn, DataRow dentre outros. Esse objeto pode tanto ser criado independente como usados por outros objetos.&lt;br /&gt;&lt;br /&gt;Existem outros componentes do DataClasses que não serão vistos aqui.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Exemplo de utilização do ADO.NET com Visual Studio 2005&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Compreendido o básico do ADO.NET, irei demonstrar como é fácil a utilização do ADO.NET com qualquer banco de dados.&lt;br /&gt;&lt;br /&gt;Nesse exemplo, será mostrada a utilização com o SGBD FireBird 2.0.&lt;br /&gt;&lt;br /&gt;Lembrando, para que o mesmo possa ser utilizado, é necessária a instalação do provider referente a esse SGBD, que pode ser encontado no link:&lt;br /&gt;&lt;a href="http://www.firebirdsql.org/index.php?op=files&amp;id=netprovider"&gt;http://www.firebirdsql.org/index.php?op=files&amp;amp;id=netprovider&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;Para baixar o SGBD FireBird 2.0, utilize o link:&lt;br /&gt;&lt;a href="http://prdownloads.sourceforge.net/firebird/Firebird-2.0.0.12748-0-Win32.exe?Download"&gt;http://prdownloads.sourceforge.net/firebird/Firebird-2.0.0.12748-0-Win32.exe?Download &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A instalação do SGB FireBird 2.0 é muito simples, basta ir clicando em avançar, seguindo as informações.&lt;br /&gt;&lt;br /&gt;Feita a instalação do SGBD FireBird, instale o provider, seguindo as informações passadas pelo assistente de instalação.&lt;br /&gt;&lt;br /&gt;Exemplificaremos através da tabela abaixo, a utilização dos principais comandos para trabalhar com banco de dados no ADO.NET, através de uma aplicação simples - cadastro de cliente - utilizando os comandos SQL INSERT, UPDATE, DELETE E SELECT.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_x9N98vEZwrk/RgkAu-GAOYI/AAAAAAAAAAc/Kw3g8CHn5ek/s1600-h/tabela.gif"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_x9N98vEZwrk/RgkAu-GAOYI/AAAAAAAAAAc/Kw3g8CHn5ek/s320/tabela.gif" alt="" id="BLOGGER_PHOTO_ID_5046565664387512706" border="0" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;fig. 3: Tabela&lt;/b&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Após ter criado a tabela no banco de dados, conforme &lt;b&gt;figura 3&lt;/b&gt;, podemos iniciar o processo de construção de nossa aplicação.&lt;br /&gt;&lt;br /&gt;Nesse Artigo, utilizaremos o Visual Studio 2005.&lt;br /&gt;&lt;br /&gt;Primeiramente iremos criar uma classe para a conexão com o banco de dados:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Dica:&lt;/b&gt; Para poder usar essa conexão em qualquer projeto futuro, aconselha-se criar uma DLL (Class Library).&lt;br /&gt;&lt;br /&gt;No Visual Studio 2005, clique em File - New - Project. Será aberta a janela de New Project, clique em Visual C# - Windows. Na parte de Templates clique em Class Library e escolha o nome do seu projeto. No nosso caso, o nome escolhido foi Conexao_FireBird.&lt;br /&gt;&lt;br /&gt;Para que possamos ter acesso ao provider do FireBird, temos que criar um referência ao mesmo. No Solution Explorer, clique com o botão direito do mouse em cima do nome do projeto, &lt;b&gt;Conexao_FireBird&lt;/b&gt;, e escolha &lt;b&gt;Add Reference&lt;/b&gt;, aparecerá a janela conforme Figura 4:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_x9N98vEZwrk/RgkBAuGAOZI/AAAAAAAAAAk/MY9mbAgiu-g/s1600-h/add_reference.gif"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_x9N98vEZwrk/RgkBAuGAOZI/AAAAAAAAAAk/MY9mbAgiu-g/s320/add_reference.gif" alt="" id="BLOGGER_PHOTO_ID_5046565969330190738" border="0" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;fig. 4: Add Reference&lt;/b&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Na aba .Net, procure por &lt;i&gt;FireBirdClient – ADO.NET 2.0 Data Provider&lt;/i&gt;, e clique no botão OK.&lt;br /&gt;&lt;br /&gt;Agora basta escrever seu código conforme o exemplo abaixo:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Text;&lt;br /&gt;&lt;br /&gt;using FirebirdSql.Data.FirebirdClient;//provider do SGBD FireBird&lt;br /&gt;&lt;br /&gt;// Conexao_FireBird&lt;br /&gt;// Classe: classe_ConexaoFB&lt;br /&gt;&lt;br /&gt;namespace classe_conexao&lt;br /&gt;{&lt;br /&gt;   public class classe_ConexaoFB&lt;br /&gt;   {     &lt;br /&gt;          &lt;br /&gt;       private string strConexao;//STRING PARA CONEXÃO&lt;br /&gt;       private FbConnection conexao;//OBJETO CONEXÃO&lt;br /&gt;&lt;br /&gt;       /// &lt;summary&gt;&lt;br /&gt;       /// Construtor Padrão&lt;br /&gt;       /// &lt;/summary&gt;&lt;br /&gt;       public classe_ConexaoFB() { }&lt;br /&gt;&lt;br /&gt;       /// &lt;summary&gt;&lt;br /&gt;       /// Construtor&lt;br /&gt;       ///  Recebe como parametro os dados para conexão&lt;br /&gt;       /// &lt;/summary&gt;&lt;br /&gt;       public classe_ConexaoFB(string strConexao)&lt;br /&gt;       {&lt;br /&gt;           //seta a string de conexão&lt;br /&gt;           set_strConexao(strConexao);&lt;br /&gt;&lt;br /&gt;           // configura a conexão&lt;br /&gt;           faz_Conexao();&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       /// &lt;summary&gt;&lt;br /&gt;       /// Configura a Conexão&lt;br /&gt;       ///  Passa para o construtor da classe FbConnection&lt;br /&gt;       ///  os dados para conexão&lt;br /&gt;       /// &lt;/summary&gt;&lt;br /&gt;       private void faz_Conexao()&lt;br /&gt;       {&lt;br /&gt;           this.conexao = new FbConnection(get_strConexao());&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       /// &lt;summary&gt;&lt;br /&gt;       /// Abre a conexão com o banco de dados&lt;br /&gt;       /// &lt;/summary&gt;&lt;br /&gt;       public void abre_Conexao()&lt;br /&gt;       {&lt;br /&gt;           this.conexao.Open();&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       /// &lt;summary&gt;&lt;br /&gt;       /// Fecha a conexão com o banco de dados&lt;br /&gt;       /// &lt;/summary&gt;&lt;br /&gt;       public void fecha_Conexao()&lt;br /&gt;       {&lt;br /&gt;           this.conexao.Close();&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       /// &lt;summary&gt;&lt;br /&gt;       /// Retorna uma conexao com o banco de dados&lt;br /&gt;       /// &lt;/summary&gt;&lt;br /&gt;       /// &lt;returns&gt;Conexão com o banco de dados&lt;/returns&gt;&lt;br /&gt;       public FbConnection get_Conexao()&lt;br /&gt;       {&lt;br /&gt;           return this.conexao;&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       /// &lt;summary&gt;&lt;br /&gt;       /// Seta os dados da conexão recebidos&lt;br /&gt;       /// pelo construtor&lt;br /&gt;       /// &lt;/summary&gt;      &lt;br /&gt;       public void set_strConexao(string strConexao)&lt;br /&gt;       {&lt;br /&gt;           this.strConexao = strConexao;&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       /// &lt;summary&gt;&lt;br /&gt;       /// Retorna a string com os dados&lt;br /&gt;       /// para conexao&lt;br /&gt;       /// &lt;/summary&gt;&lt;br /&gt;       /// &lt;returns&gt;String com os dados&lt;/returns&gt;&lt;br /&gt;       public string get_strConexao()&lt;br /&gt;       {&lt;br /&gt;           return this.strConexao;&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Salve as alterações e clique em Build - Build Solution.&lt;br /&gt;&lt;br /&gt;Feito isso, você poderá notar que dentro da pasta &lt;i&gt;Bin/Debug&lt;/i&gt;, localizada dentro da pasta de seu projeto, foi criado nossa dll para conexão com o banco FireBird.&lt;br /&gt;&lt;br /&gt;Para poder utilizar essa dll com os programas criados, basta adicionar a mesma ao projeto.&lt;br /&gt;&lt;br /&gt;Vamos então criar um novo projeto para podermos testar essa conexão e os comandos SQL.&lt;br /&gt;&lt;br /&gt;No Visual Studio 2005, clique em File - New - Project. Será aberta a janela de New Project, clique em Visual C# - Windows. Na parte de Templates clique em Windows Application e escolha o nome do seu projeto. No nosso caso, o nome escolhido foi Comunicacao_Banco.&lt;br /&gt;&lt;br /&gt;Crie novamente a referência do provider FireBird para esse novo projeto, conforme orientações acima&lt;br /&gt;&lt;br /&gt;Crie um formulário conforme a imagem da Figura 5:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_x9N98vEZwrk/RgkBU-GAOaI/AAAAAAAAAAs/1dhwvWHRdlA/s1600-h/layout.gif"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_x9N98vEZwrk/RgkBU-GAOaI/AAAAAAAAAAs/1dhwvWHRdlA/s320/layout.gif" alt="" id="BLOGGER_PHOTO_ID_5046566317222541730" border="0" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;fig. 5: Layout&lt;/b&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Teste a aplicação clicando em Debug - Start Debugging ou apertando a tecla F5.&lt;br /&gt;&lt;br /&gt;Após ter testado nosso novo projeto, temos que adicionar a DLL criada ao nosso projeto.&lt;br /&gt;&lt;br /&gt;No Solution Explorer, clique com o botão direito do mouse no nome do nosso projeto, &lt;b&gt;Comunicacao_Banco&lt;/b&gt;, na aba &lt;i&gt;Browse&lt;/i&gt;, conforme Figura 6.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_x9N98vEZwrk/RgkBc-GAObI/AAAAAAAAAA0/Igw8fa7S62c/s1600-h/add_reference_2.gif"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_x9N98vEZwrk/RgkBc-GAObI/AAAAAAAAAA0/Igw8fa7S62c/s320/add_reference_2.gif" alt="" id="BLOGGER_PHOTO_ID_5046566454661495218" border="0" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;fig. 6: Add Reference&lt;/b&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;Clique em Examinar, e procure pela &lt;b&gt;classe_conexao.dll&lt;/b&gt;, na pasta do nosso projeto criado anteriormente.&lt;br /&gt;&lt;br /&gt;Clique no botão OK para incluir a DLL ao nosso projeto.&lt;br /&gt;&lt;br /&gt;Pronto, agora podemos trabalhar com o acesso a dados através do ADO.NET e com o SGBD FireBird 2.0.&lt;br /&gt;&lt;br /&gt;Após a criação do formulário conforme a Figura 1, vá até o código fonte do seu projeto e coloque os seguintes namespaces:&lt;br /&gt;&lt;pre&gt; using classe_conexao;&lt;br /&gt;using FirebirdSql.Data.FirebirdClient;&lt;br /&gt;&lt;/pre&gt;para poder trabalhar com a DLL que nos criamos e o provider do FireBird.&lt;br /&gt;&lt;br /&gt;Para esse projeto, criei algumas variáveis conforme abaixo:&lt;br /&gt;&lt;pre&gt;       //caminho para o banco de dados&lt;br /&gt;       private string caminho;&lt;br /&gt;       //string com os dados para conexão&lt;br /&gt;       private string strConexao;&lt;br /&gt;       //objeto do tipo classe_ConexaoFB&lt;br /&gt;       private classe_ConexaoFB conexao_FB;&lt;br /&gt;       //objeto FbDataAdapter para poder trabalhar com SQL&lt;br /&gt;       private FbDataAdapter adapt;&lt;br /&gt;       //objto FbDataReader para poder trabalhar com as consultas&lt;br /&gt;       private FbDataReader reader;&lt;br /&gt;&lt;/pre&gt;Criei também um método inicialize() para poder inicializar minhas variáveis.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;        /// &lt;summary&gt;&lt;br /&gt;       /// Inicializa os dados&lt;br /&gt;       /// &lt;/summary&gt;&lt;br /&gt;       private void inicialize()&lt;br /&gt;       {&lt;br /&gt;          this.caminho = @"D:\Artigo\Codigo Fonte\Banco\" +&lt;br /&gt;                         "BANCOFB.FDB";&lt;br /&gt;          this.strConexao = "User=SYSDBA;" +&lt;br /&gt;                            "Password=masterkey;" +&lt;br /&gt;                            "DataBase=" + caminho + ";Dialect=3";&lt;br /&gt;          this.reader = null;&lt;br /&gt;          this.adapt = new FbDataAdapter();&lt;br /&gt;          this.conexao_FB = new classe_ConexaoFB();&lt;br /&gt;&lt;br /&gt;       }&lt;br /&gt;&lt;/pre&gt;Uma observação para as varíáveis this.caminho e this.strConexao, pois são elas as responsáveis para a conexão com o banco de dados, onde: this.caminho esta recebendo a string com o caminho para o banco de dados e this.strConexao recebe os dados necessário para fazer a conexão com o banco, como usuário e senha, qual o banco de dados, que no caso esta em this.caminho e o dialeto do banco.&lt;br /&gt;&lt;br /&gt;Mude as informações do caminho e usuário e senha conforme necessário.&lt;br /&gt;&lt;br /&gt;No botão Cadastrar, de dois clique em cima dele, e informe o código conforme abaixo:&lt;br /&gt;&lt;pre&gt;/// &lt;summary&gt;&lt;br /&gt;/// Cadastra o cliente no banco de dados    &lt;br /&gt;/// &lt;/summary&gt; &lt;br /&gt;private void bt_cadastrar_Click(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;  //cria uma string com o comando SQL para inserir os dados&lt;br /&gt;  string sql_Insert = "insert into tb_cliente values( " +&lt;br /&gt;                      "@codigo, @nome_cliente, @fone_cliente, @cel_cliente)";&lt;br /&gt;          &lt;br /&gt;   //tenta fazer o insert no banco&lt;br /&gt;   try&lt;br /&gt;   {&lt;br /&gt;       //abre a conexão com o banco de dados&lt;br /&gt;       this.conexao_FB.abre_Conexao();&lt;br /&gt;&lt;br /&gt;      //cria uma nova instancia para FbDataAdapter passando como&lt;br /&gt;      //parâmetos a string com o comando SQL e a conexão com o banco de dados&lt;br /&gt;       this.adapt = new FbDataAdapter(sql_Insert, this.conexao_FB.get_Conexao());&lt;br /&gt;&lt;br /&gt;       //limpa os parâmetros caso exista&lt;br /&gt;       this.adapt.SelectCommand.Parameters.Clear();&lt;br /&gt;&lt;br /&gt;       // informa para o FbDataAdapter quais são os conteudos de cada&lt;br /&gt;//parâmetro&lt;br /&gt;       // obs: o código esta como null devido que o banco de dados&lt;br /&gt;//está configurado para auto incremento&lt;br /&gt;       this.adapt.SelectCommand.Parameters.Add("@codigo", null);&lt;br /&gt;       this.adapt.SelectCommand.Parameters.Add("@nome_cliente", tx_nome_cliente.Text);&lt;br /&gt;       this.adapt.SelectCommand.Parameters.Add("@fone_cliente", tx_fone_cliente.Text);&lt;br /&gt;       this.adapt.SelectCommand.Parameters.Add("@cel_cliente", tx_celular_cliente.Text);&lt;br /&gt;&lt;br /&gt;       // executa o FbDataAdapter com o comando ExecuteNonQuery&lt;br /&gt;       this.adapt.SelectCommand.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;       //mensagem para cadastro OK&lt;br /&gt;       MessageBox.Show("Cadastro ok", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information);&lt;br /&gt;              &lt;br /&gt;  }&lt;br /&gt;  // caso de algum erro&lt;br /&gt;  catch (Exception er)&lt;br /&gt;  {&lt;br /&gt;       // mensagem de erro&lt;br /&gt;       MessageBox.Show("Erro ao fazer inclusão: " + er.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);&lt;br /&gt;  }&lt;br /&gt;  //fecha a conexao com o banco de dados&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;        this.conexao_FB.fecha_Conexao();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Uma observação sobre o comando this.adapt.SelectCommand.Parameters.Add(), a forma como foi apresentada é apenas uma das maneiras de se utilizar esse comando para fazer uma comunicação com o banco de dados, existem várias outras formas como o exemplo abaixo:&lt;br /&gt;&lt;pre&gt;this.adapt.SelectCommand.Parameters.Add("@codigo", FbDbType.Integer);&lt;br /&gt;this.adapt.SelectCommand.Parameters[0].Value = null;&lt;br /&gt;&lt;/pre&gt;Dessa forma, você está informando que o parâmetro "@codigo", é do tipo Integer. Na segunda linha é informado que na possição 0 do, digamos assim, “array de parametros”, o valor é null.&lt;br /&gt;&lt;br /&gt;Bom, agora que já temos como cadastrar os dados no banco, podemos partir para a parte de Atualização dos Dados.&lt;br /&gt;Para não estender muito, vamos fazer uma atualização de acordo com o Nome do Cliente.&lt;br /&gt;&lt;br /&gt;No botão Atualizar, de dois clique, e informe o código conforme abaixo:&lt;br /&gt;&lt;pre&gt; /// &lt;summary&gt;&lt;br /&gt;/// Atualiza os dados do Cliente&lt;br /&gt;///  A atualização será feita através do nome do cliente&lt;br /&gt;/// &lt;/summary&gt;&lt;br /&gt;private void bt_atualizar_Click(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;      string sql_Update = "update tb_cliente set " +&lt;br /&gt;            "nome_cliente = @nome, fone_cliente = @fone, celular_cliente = @cel " +&lt;br /&gt;            "where nome_cliente = @nome";&lt;br /&gt;&lt;br /&gt;      //tenta fazer o insert no banco&lt;br /&gt;      try&lt;br /&gt;      {&lt;br /&gt;          //abre a conexão com o banco de dados&lt;br /&gt;          this.conexao_FB.abre_Conexao();&lt;br /&gt;&lt;br /&gt;         //cria uma nova instancia para FbDataAdapter passando como&lt;br /&gt;  //parâmetro a string com o comando SQL e a conexão com o banco de dados&lt;br /&gt;         this.adapt = new FbDataAdapter(sql_Update, this.conexao_FB.get_Conexao());&lt;br /&gt;&lt;br /&gt;         //limpa os parâmetros caso exista algum&lt;br /&gt;         this.adapt.SelectCommand.Parameters.Clear();&lt;br /&gt;&lt;br /&gt;         // informa para o FbDataAdapter quais são os conteudos de cada parâmetro&lt;br /&gt;         this.adapt.SelectCommand.Parameters.Add("@nome", tx_nome_cliente.Text);&lt;br /&gt;         this.adapt.SelectCommand.Parameters.Add("@fone", tx_fone_cliente.Text);&lt;br /&gt;         this.adapt.SelectCommand.Parameters.Add("@cel", tx_celular_cliente.Text);             &lt;br /&gt;&lt;br /&gt;         // executa o FbDataAdapter com o comando ExecuteNonQuery e retorna o total  de linhas afetadas&lt;br /&gt;         int numero = this.adapt.SelectCommand.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;         //mensagem&lt;br /&gt;         MessageBox.Show("Atualização ok: " + numero.ToString(), "Atenção",  MessageBoxButtons.OK, MessageBoxIcon.Information);&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;      // caso de algum erro&lt;br /&gt;      catch (Exception er)&lt;br /&gt;      {&lt;br /&gt;            // mensagem de erro&lt;br /&gt;            MessageBox.Show("Erro ao fazer atualização: " + er.Message, "Atenção",&lt;br /&gt;            MessageBoxButtons.OK, MessageBoxIcon.Error);&lt;br /&gt;      }&lt;br /&gt;      //fecha a conexão com o banco de dados&lt;br /&gt;      finally&lt;br /&gt;      {&lt;br /&gt;           this.conexao_FB.fecha_Conexao();&lt;br /&gt;      }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Não existe muita diferença dos comando de inserir para o atualizar. E novamente repetido que existem outras formas de se fazer essa comunicação com o banco, e que o exemplo da outra forma citado acima, também vale para essa  atualização, bastando fazer os ajustes necessários.&lt;br /&gt;&lt;br /&gt;No botão Deletar, de dois clique, e informe o código conforme abaixo:&lt;br /&gt;&lt;pre&gt;/// &lt;summary&gt;&lt;br /&gt;/// Exclui Cliente&lt;br /&gt;///  Exclui um cliente conforme o nome informado&lt;br /&gt;/// &lt;/summary&gt;&lt;br /&gt;private void bt_deletar_Click(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;    string sql_Delete = "delete from tb_cliente where nome_cliente = @nome";&lt;br /&gt;&lt;br /&gt;    //tenta fazer o insert no banco&lt;br /&gt;    try&lt;br /&gt;    {&lt;br /&gt;         //abre a conexão com o banco de dados&lt;br /&gt;         this.conexao_FB.abre_Conexao();&lt;br /&gt;&lt;br /&gt;         //cria uma nova instancia para FbDataAdapter passando como&lt;br /&gt;  //parâmetro a string com o comando SQL e a conexão com o banco de dados&lt;br /&gt;         this.adapt = new FbDataAdapter(sql_Delete, this.conexao_FB.get_Conexao());&lt;br /&gt;&lt;br /&gt;         //limpa os parâmetros caso exista algum&lt;br /&gt;         this.adapt.SelectCommand.Parameters.Clear();&lt;br /&gt;&lt;br /&gt;         // informa para o FbDataAdapter quais são os conteudos de cada parâmetro&lt;br /&gt;         this.adapt.SelectCommand.Parameters.Add("@nome", tx_nome_cliente.Text);              &lt;br /&gt;&lt;br /&gt;         // executa o FbDataAdapter com o comando ExecuteNonQuery e retorna o total de  linhas afetadas&lt;br /&gt;         int numero = this.adapt.SelectCommand.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;       //mensagem&lt;br /&gt;       MessageBox.Show("Clientes Excluídos: " + numero.ToString(), "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information);&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;    // caso de algum erro&lt;br /&gt;    catch (Exception er)&lt;br /&gt;    {&lt;br /&gt;          // mensagem de erro&lt;br /&gt;          MessageBox.Show("Erro ao fazer exclusão: " + er.Message, "Atenção",&lt;br /&gt;                       MessageBoxButtons.OK, MessageBoxIcon.Error);&lt;br /&gt;    }&lt;br /&gt;    //fecha a conexao com o banco de dados&lt;br /&gt;    finally&lt;br /&gt;    {&lt;br /&gt;         this.conexao_FB.fecha_Conexao();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Novamente a mesma observação feita para a Inserção e Atualização.&lt;br /&gt;&lt;br /&gt;Agora, após ter cadastrado, atualizado e apagado um cliente, podemos partir para a consulta de clientes.&lt;br /&gt;&lt;br /&gt;Nessa parte será introduzido o objeto DataReader, conforme explicado nos tópicos anteriores, é nele que ficará os resultados da consulta.&lt;br /&gt;&lt;br /&gt;A consulta será feita também pelo nome do cliente, usando a clausula Like do SQL.&lt;br /&gt;&lt;br /&gt;No botão Consultar, de dois clique, e informe o código conforme abaixo:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/// &lt;summary&gt;&lt;br /&gt;/// Realiza a busca pelos dados do cliente&lt;br /&gt;/// através do nome&lt;br /&gt;/// &lt;/summary&gt;&lt;br /&gt;private void bt_consultar_Click(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;    string sql_Select = "select nome_cliente, fone_cliente, celular_cliente " +&lt;br /&gt;                         "from tb_cliente " +&lt;br /&gt;                          "where nome_cliente like @nome";&lt;br /&gt;&lt;br /&gt;    //tenta fazer o insert no banco&lt;br /&gt;    try&lt;br /&gt;    {&lt;br /&gt;        //abre a conexão com o banco de dados&lt;br /&gt;        this.conexao_FB.abre_Conexao();&lt;br /&gt;&lt;br /&gt;       //cria uma novo instancia pra FbDataAdapter passando como&lt;br /&gt;//parâmetro a string com o comando SQL e a conexão com o banco de dados&lt;br /&gt;       this.adapt = new FbDataAdapter(sql_Select, this.conexao_FB.get_Conexao());&lt;br /&gt;&lt;br /&gt;       //limpa os parâmetros caso exista algum&lt;br /&gt;       this.adapt.SelectCommand.Parameters.Clear();&lt;br /&gt;&lt;br /&gt;       // informa para o FbDataAdapter quais são os conteudos de cada parâmetro      &lt;br /&gt;      this.adapt.SelectCommand.Parameters.Add("@nome", "%" + tx_nome_cliente.Text + "%" );&lt;br /&gt;&lt;br /&gt;// executa o FbDataAdapter com o comando ExecuteReader e  retorna os dados para dentro do FbDataReader&lt;br /&gt;      this.reader = this.adapt.SelectCommand.ExecuteReader();&lt;br /&gt;&lt;br /&gt;      //realiza a leitura dos dados&lt;br /&gt;      while (this.reader.Read())&lt;br /&gt;      {&lt;br /&gt;            tx_nome_cliente.Text    = this.reader[0].ToString();&lt;br /&gt;            tx_fone_cliente.Text = this.reader[1].ToString();&lt;br /&gt;            tx_celular_cliente.Text = this.reader[2].ToString();&lt;br /&gt;      }&lt;br /&gt;      //Importante: sempre feche o FbDataReader após fazer leituras&lt;br /&gt;      this.reader.Close();&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;    // caso de algum erro&lt;br /&gt;    catch (Exception er)&lt;br /&gt;    {&lt;br /&gt;          // mensagem de erro&lt;br /&gt;          MessageBox.Show("Erro ao fazer leitura dos dados: " + er.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);&lt;br /&gt;    }&lt;br /&gt;    //fecha a conexao com o banco de dados&lt;br /&gt;    finally&lt;br /&gt;    {&lt;br /&gt;         this.conexao_FB.fecha_Conexao();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Caso seja uma consulta que irá retornar apenas um dado, como por exemplo o nome do cliente, aconselho utilizar ExecuteScalar, pois é mais rápido do que um ExecuteReader.&lt;br /&gt;&lt;br /&gt;Para se realizar uma consulta que retorne mais de um dado, deve-se utilizar ExecuteReader conforme o código acima.&lt;br /&gt;&lt;br /&gt;Para realizar a leitura dos dados, utilizo o comando que todo programador conhece, WHILE, que enquanto tiver dados dentro do this.reader, ele continuará passando as informações para os campos. Mas observe que, da forma que foi feito, caso exista mais de um cliente com o mesmo nome, os dados serão sobrepostos.&lt;br /&gt;&lt;br /&gt;Deve-se tomar muito cuidado ao utilziar esse componente, pois caso você não o feche, irá ocorrer um erro, então, sempre que utilizar, feche com o comando &lt;b&gt;this.reader.Close()&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Conforme demostrei acima, temos várias formas para interagir com os dados dentro de um banco.&lt;br /&gt;&lt;br /&gt;Os exemplos são apenas para mostrar uma das maneiras de utilização dos comandos, e nesse caso, não nos importamos com a regra de negócios e nem a validação dos campos.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Um exemplo adicional&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Irei demonstrar agora, de forma rápida, como podemos trabalhar com um componente DataGridView, mas lembrando que é apenas um exemplo rápido, para poder saber como iniciar um trabalho com esse componente.&lt;br /&gt;&lt;br /&gt;Acrescentei ao formulário um componente DataGridView, e dei o nome de dg_dados, acrescentei também um botão para que assim que for clicado, ira carregar o DataGridView com os dados da consulta.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_x9N98vEZwrk/RgkBwuGAOcI/AAAAAAAAAA8/HmQTE8mqNQw/s1600-h/layout_2.gif"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_x9N98vEZwrk/RgkBwuGAOcI/AAAAAAAAAA8/HmQTE8mqNQw/s320/layout_2.gif" alt="" id="BLOGGER_PHOTO_ID_5046566793963911618" border="0" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;fig. 7: Layout 2&lt;/b&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;Veja:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/// &lt;summary&gt;&lt;br /&gt;/// Carrega os dados no DataGridView&lt;br /&gt;/// &lt;/summary&gt;&lt;br /&gt;private void bt_dataSet_Click(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;   //cria um DataTable para carregar os dados da consulta&lt;br /&gt;   DataTable dataTable = new DataTable();&lt;br /&gt;&lt;br /&gt;   string sql_Select = "select * " +&lt;br /&gt;                       "from tb_cliente ";                               &lt;br /&gt;&lt;br /&gt;   //tenta fazer o insert no banco&lt;br /&gt;   try&lt;br /&gt;   {&lt;br /&gt;        //abre a conexão com o banco de dados&lt;br /&gt;        this.conexao_FB.abre_Conexao();&lt;br /&gt;&lt;br /&gt;        //cria uma nova instancia pra FbDataAdapter passando como&lt;br /&gt; //parâmetro&lt;br /&gt;        // a string com o comando SQL e a conexão com o banco de&lt;br /&gt; //dados&lt;br /&gt;        this.adapt = new FbDataAdapter(sql_Select,this.conexao_FB.get_Conexao());&lt;br /&gt;&lt;br /&gt;        //limpa os parâmetros caso exista algum&lt;br /&gt;        this.adapt.SelectCommand.Parameters.Clear();&lt;br /&gt;&lt;br /&gt;        //executa a consulta&lt;br /&gt;        this.adapt.SelectCommand.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;   //preenche o dataTable com os dados da consulta&lt;br /&gt;        this.adapt.Fill(dataTable);&lt;br /&gt;&lt;br /&gt;       &lt;br /&gt;       // preenche o DataGridView com os dados&lt;br /&gt;        this.dg_dados.DataSource = dataTable;&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;   // caso de algum erro&lt;br /&gt;   catch (Exception er)&lt;br /&gt;   {&lt;br /&gt;        // mensagem de erro&lt;br /&gt;        MessageBox.Show("Erro ao fazer leitura dos dados: " + er.Message, "Atenção",&lt;br /&gt;                       MessageBoxButtons.OK, MessageBoxIcon.Error);&lt;br /&gt;   }&lt;br /&gt;   //fecha a conexao com o banco de dados&lt;br /&gt;   finally&lt;br /&gt;   {&lt;br /&gt;          this.conexao_FB.fecha_Conexao();&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Conclusão&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Chegamos então ao final desse Artigo sobre Utilização do SGBD FireBird 2.0 com o ADO.NET, onde podemos ver de forma básica, como fazer para comunicar e trocar informações com o banco de dados, além de conhecer um pouco da parte teórica, que é muito importante para o desenvolvimento correto de uma aplicação.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Referências&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.linhadecodigo.com.br/artigos.asp?id_ac=296&amp;pag=1"&gt;&lt;br /&gt;http://www.linhadecodigo.com.br/artigos.asp?id_ac=296&amp;amp;pag=1&lt;/a&gt;&lt;a href="http://www.linhadecodigo.com.br/artigos.asp?id_ac=435&amp;sub=0"&gt;&lt;br /&gt;http://www.linhadecodigo.com.br/artigos.asp?id_ac=435⊂=0&lt;/a&gt;&lt;a href="http://www.linhadecodigo.com.br/artigos.asp?id_ac=216"&gt;&lt;br /&gt;http://www.linhadecodigo.com.br/artigos.asp?id_ac=216&lt;/a&gt;&lt;a href="http://linhadecodigo.com.br/artigos.asp?id_ac=1254&amp;amp;pag=1"&gt;&lt;br /&gt;http://linhadecodigo.com.br/artigos.asp?id_ac=1254&amp;amp;pag=1&lt;/a&gt;&lt;a href="http://www.microsoft.com/brasil/msdn/adonet/default.mspx"&gt;&lt;br /&gt;http://www.microsoft.com/brasil/msdn/adonet/default.mspx&lt;/a&gt;&lt;a href="http://msdn2.microsoft.com/pt-br/default.aspx"&gt;&lt;br /&gt;http://msdn2.microsoft.com/pt-br/default.aspx&lt;/a&gt;&lt;a href="http://www.devmedia.com.br/curso/ecommerce2005/pdfs/modulo2.pdf"&gt;&lt;br /&gt;http://www.devmedia.com.br/curso/ecommerce2005/pdfs/modulo2.pdf&lt;/a&gt;&lt;a href="http://www.macoratti.net/vbn_fb2.htm"&gt;&lt;br /&gt;http://www.macoratti.net/vbn_fb2.htm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3476309669807478533-3746485955326625983?l=desenvolvendodotnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desenvolvendodotnet.blogspot.com/feeds/3746485955326625983/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3476309669807478533&amp;postID=3746485955326625983' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476309669807478533/posts/default/3746485955326625983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476309669807478533/posts/default/3746485955326625983'/><link rel='alternate' type='text/html' href='http://desenvolvendodotnet.blogspot.com/2007/03/utilizando-sgbd-firebird-20-com-adonet.html' title='Utilizando SGBD FireBird 2.0 com ADO.NET'/><author><name>Wilker Silva</name><uri>http://www.blogger.com/profile/09923643753104645084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x9N98vEZwrk/Rgj_7OGAOWI/AAAAAAAAAAM/W356SHVihd4/s72-c/arquitetura.gif' height='72' width='72'/><thr:total>2</thr:total></entry></feed>
