Cadastro de clientes em c#

  • Published on
    13-Jun-2015

  • View
    13.778

  • Download
    1

Embed Size (px)

Transcript

<ul><li> 1. Cadastro de Clientes em C# usando conceitos deADO.NET Parte 1ABR 3Posted by programatorOl pessoal, devido a vrios pedidos, irei criar neste artigo um Cadastro simples de Clientes em Windows Forms usando C# eos conceitos de ADO.NET, como SqlConnection e SqlCommand. Com exceo da criao do banco e das tabelas, todo o restoser via cdigo, desde a criao dos mtodos de acesso aos dados at os mtodos de incluso, excluso, consulta eatualizao dos dados. Acompanhem:Comece criando um novo projeto do tipo Windows Forms em C#. D o nome de CadastrodeClientes e clique em OK.Agora abra o Server Explorer (CTRL + W + L), clique com o boto direito em cima de Data Connections e clique em CreateNew SQL Server Database.Em Server Name, escolha o nome do seu servidor do SQL, em Log on the Server, deixe como Use Windows Authentication,d o nome de Clientes ao seu DataBase e clique em OK.</li></ul><p> 2. Voc ver que o database foi criado. Expanda-o, clique com o boto direito em Table e clique em Add New Table. Vamoscriar a tabela de clientes como exemplo.Crie as tabelas como mostra a imagem acima, e lembre-se de deixar a coluna IDCliente como Primary Key, clicando em SetPrimary Key no menu acima. Salve a tabela com o nome tbClientes. Lembre-se tambm de especificar que a colunaIDCliente Identity, ou seja identada, ter um nmero prprio, assim no precisaremos especific-lo na hora da inserodos dados. S alterar a opo, Is Identity, como mostra a imagem abaixo:Vamos criar esses 8 campos como exemplo, permitindo valores nulos apenas nas duas ltimas colunas.Para entender os conceitos de ADO.NET, de incio vamos criar no formulrio apenas 3 botes, Inserir, Excluir e Atualizar efazer as instrues SQL via cdigo. Mais a frente faremos a consulta aos dados inseridos por meio do controle DataGridView,do Visual Studio. Dito isto, crie 3 botes no formulrio, como mostra a imagem a seguir:Nas propriedades d os nomes, em Name, de btnInserir, btnExcluir e btnAtualizar. Dentro do cdigo do boto Inserir, sernecessrio passar a string de conexo do banco de dados. Dica: para no ter que digitar a string na mo, abra o ServerExplorer, clique com o boto direito no Database Clientes e clique em Properties. Na opo Connection String, copie e colea string de conexo para o parmetro do SqlConnection, como a imagem nos mostra: 3. Segue abaixo todo o cdigo comentado do boto Inserir:O cdigo foi inteiramente comentado, mais de qualquer forma vou explicar os pontos importantes. Dentro do boto Inserircoloquei um try/catch para capturar algum erro que possa acontecer. Comecei instanciando o SqlConnection, passando a elea string de conexo, depois instanciei o SqlCommand, atribuindo a ele o SqlConnection. Depois, usei o mtodoCommandText, do SqlCommand, para fazer a instruo SQL, s que ao invs de passar diretamente os valores dentro dele,eu passei apenas os parmetros, como uma forma de segurana dos dados. Assim minha instruo SQL fica parametrizada,pelo uso do arroba (@) + o nome da coluna da tabela.Logo aps, passei os valores por meio do mtodo AddWithValue, pertencente ao mtodo Parameters, do SqlCommand.Nele, que espera dois parmetros, que so os parmetros declarados no INSERT e os valores em si, foram passados os valoresdas colunas, com exceo da coluna ID, que como Primary Key no precisa ser passado nenhum valor.Aps isso, abro minha conexo por meio do mtodo Open, uso o ExecuteNonQuery, que perfeito para insero no banco,j que a mesma no nos retorna dados(a usamos tambm para fazer Update e Delete) e fecho a conexo.Apenas para fins didticos uma breve explicao dos 4 tipos de execues que tenho no SqlCommand:ExecuteNonQuery() executa uma instruo que no retorna dados, por exemplo um INSERT ou UPDATE.ExecuteReader() usado para fazemos um SELECT que retorne um DataReader. 4. ExecuteScalar() usada quando a consulta retorna apenas um valor, que obrigatoriamente a primeira linha da primeiracoluna.ExecuteXmlReader() usada para nos retornar um objeto do tipo XmlReader.Finalizando nosso cdigo, coloquei um MessageBox para informar ao usurio que a insero funcionou. Salve seu projeto e,antes de compilar, coloque um Breakpoint no comeo do cdigo, como mostra a imagem a seguir:Agora compile e teste linha a linha nosso cdigo. Se tudo foi feito como no exemplo, aparecer a mensagem dizendo que aincluso foi realizada com sucesso.Para ter certeza, abra o Server Explorer, v ao seu Database, v na Tabela de Clientes, clique com o boto direito em cimadela e clique em Show Table Data. Dever aparecer uma tela como essa:Agora vamos codificar o boto de Excluir. Os conceitos de ADO.NET, so praticamente os mesmos, s vai mudar a instruoSQL. Faa o cdigo como abaixo: 5. Como voc pode perceber, muda pouca coisa em relao aos cdigos do boto de Inserir. Antes de rod-lo, insira mais algunsdados na tabela, para que a mesma no fique sem dados. Salve, compile e teste para ver se tudo saiu Ok.Finalizando, vamos fazer o mtodo referente ao boto Update, que tambm s ser alterado a instruo SQL, j que vamosatualizar os dados j existentes. D dois cliques nele e insira o seguinte cdigo:Neste exemplo alteramos somente o Endereo, Telefone e Email, mais voc pode alterar todos os campos se assim acharnecessrio. Salve, compile e veja o resultado na sua tabela.Antes do Update: 6. Depois do Update:Com isso, termino aqui a 1 parte de nosso artigo que explora o uso dos conceitos de ADO.NET com C#. Na prxima parte denosso artigo, iremos usar o controle DataGridView em nosso projeto.Para quem se interessar, disponibilizo o cdigo fonte desse projeto aqui.Lembrando que esse projeto foi feito usando o Visual Studio 2008 Professional SP1.Cadastro de Clientes em C# usando conceitos deADO.NET Parte 2ABR 11Posted by programatorOl pessoal, volto com a srie de artigos usando os conceitos bsicos de ADO.NET. Nesta parte iremos customizar nossoformulrio de Cadastro de Clientes, adicionaremos textbox e usaremos o controle DataGridView, do Visual Studio. Confiram:Abra seu projeto no VS. Vamos customizar nosso formulrio. Adicione alguns textboxes relativos aos campos de nossa tabelade Clientes e altere os botes j existentes no form, como mostra a imagem abaixo:Assim nosso form ficar com um visual mais apresentvel e intuitivo. Como vocs podem perceber, coloquei os camposreferentes as colunas de nossa tabela, com exceo da coluna ID, que Identity (tem uma contagem pr-definida) e noprecisa ser informada. Uma coisa muito importante: sempre ao atribuir nomes aos controles, uma boa prtica seguir umcerto padro, como por exemplo para Labels uso as trs letras iniciais do controle + o que ele representa ao formulrio. Porexemplo no label de Nome, uso lblNome, no textbox de Nome, uso txtNome e assim por diante.Abaixo descrevo, na ordem em que foram inseridos no form, os nomes dos controles usados na propriedade (Name), quesero identificados mais tarde em nosso cdigo (por isso a importncia de nomes intuitivos e fceis de serem lembrados):Labels lblMensagem, lblNome, lblEndereco, lblBairro, lblEstado, lblTelefone, lblCelular e lblEmail 7. TextBoxes txtMensagem, txtNome, txtEndereco, txtBairro, txtTelefone, txtCelular e txtEmailComboBox (tambm chamado de DropDownList) ddlEstadoBotes btnGravar, btnNovo e btnVerCadastrosPara dicas do tipo das nomenclaturas utilizadas ao criar Classes, Interfaces, Campos, Propriedades, Mtodos, Parmetros eVariveis, acesse este post.Voltando ao formulrio, voc pode perceber que alterei tambm os 3 botes que antes eram Inserir, Excluir e Atualizar eque agora passam a se chamar Gravar Cadastro, Novo Cadastro e Ver Cadastros. Os dois primeiros so referentes ao prpriocadastro e o terceiro irei explicar mais tarde.Como nossos campos tem um limite de caracteres, temos que fazer o mesmo nos textboxes que recebero os dados. Porexemplo, na coluna Nome, foi atribudo o valor mximo de 50 caracteres.Para que faamos o mesmo no txtNome, devemos alterar a propriedade MaxLength (que est com o valor padro, que 32767) para 50.Faa isso com os demais controles, com exceo do ComboBox de Estado que j ter os valores atribudos a ele e o usurios precisar escolher um valor. Dica: para no permitir que seja digitado texto no ComboBox, altere a propriedadeDropDownStyle para DropDownList. Na propriedade Items do ComboBox, clique nos trs pontinhos ao lado e insira os 27estados brasileiros (isso mesmo fiote, na mo!). Para facilitar, listo abaixo os 27 estados:01 Amazonas, 02 Par, 03 Mato Grosso, 04 Minas Gerais, 05 Bahia, 06 Mato Grosso do Sul, 07 Gois, 08 Maranho,09 Rio Grande do Sul, 10 Tocantins, 11 Piau, 12 So Paulo, 13 Rondnia, 14 Roraima, 15 Paran, 16 Acre, 17 Cear, 18 Amap, 19 Pernambuco, 20 Santa Catarina, 21 Paraba, 22 Rio Grande do Norte, 23 Esprito Santo, 24 Riode Janeiro, 25 Alagoas, 26 Sergipe, 27 Distrito Federal.Lembrando que se quiser voc pode adicionar muito menos estados, s estou adicionando todos ao exemplo para dar um tomde realismo ao projeto!Ok, vamos finalmente aos cdigos. D dois cliques no boto de Gravar. O cdigo usado ser praticamente o mesmo do cdigode Inserir, feito na parte anterior de nosso artigo. Faa como na imagem a seguir: 8. Como voc pode perceber, a nica coisa que mudou em relao ao cdigo da parte anterior do artigo foi na hora de passar osparmetros, j que agora no passo mais os valores no hardcode, ou seja, direto no cdigo. Desta forma, atribudo osvalores digitados pelo usurio no campo de texto e inseridos no banco. S tome cuidado, pois na minha tabela s deixeipermitido valor nulo nos campos Email e Celular. Se em mais algum destes campos voc digitar um valor nulo, ser disparadoum erro em seu cdigo. Para que seja informado ao usurio uma mensagem amigvel quando isso acontecer, faa o seguinte:Logo acima de nosso cdigo, dentro do Try/Catch, coloque este If, que verifica se os controles esto diferentes destring.Empty (que significa que no h valores inseridos). Se esto, o processamento normal de gravao continua. Seno,eles entram no Else abaixo, que exibe uma mensagem de erro ao usurio: 9. Desta forma capturamos os possveis erros ao sistema. Lembrando que essa uma forma simplista de se fazer isso,poderamos muito bem criar um mtodo que Valida esses campos (como bem apontou meu amigo Emerson) e cham-lo nolugar deste If enorme que foi feito.Ok, agora vamos criar o mtodo do boto Novo, que ir limpar os dados dos campos para o usurio fazer um novo cadastro.Insira o seguinte cdigo:Fiz um simples If perguntando ao usurio se ele deseja limpar os campos e criar um novo cadastro.Agora vamos ao mtodo do boto Ver Cadastros, que nos vai mostrar um DataGridView com todos os cadastros criados.Antes disso, temos que criar um novo form. Para isso, abra a Solution Explorer (CTRL + W + S), clique com o boto direito noprojeto, clique em Add &gt; Windows Form e d o nome de VerCadastros. Agora abra a ToolBox (CTRL + W + X), v aosubmenu Data e arraste ao seu form o controle DataGridView. Precisamos adicionar um DataSource ao nosso Grid. Para isso,clique na seta ao lado do Grid e clique em Choose Data Source &gt; Add Project Data Source, como mostra a imagem:Na tela que aparece, escolha Database como fonte de dados e clique em Next. Na prxima tela, selecione o Databasereferente a sua tabela de Clientes, clique para ver a string de conexo e clique em Next. 10. Na prxima tela, deixe selecionado a opo para salvar sua string de conexo, troque o nome dela se desejar e clique emNext. Na prxima tela escolha os objetos do banco que voc deseja importar para seu Grid, d um nome a seu DataSet eclique em Finish.Pronto, nosso Grid agora est com as informaes provenientes de nossa tabela de Clientes. Se voc ver as opes do Grid,ver que tem algumas em particular muito interessantes, que te permitem alterar, adicionar e excluir os dados do grid, eposteriormente da tabela. Nesse exemplo, deixei as 3 opes selecionadas. Salve seu form e volte ao form de Cadastro. 11. D dois cliques no boto Ver Cadastros e apenas insira o cdigo abaixo para ver o form que criamos com o grid:Agora compile o projeto, clique no boto Ver Cadastros e veja nosso Grid preenchido, como mostra a imagem:Na prxima parte de nosso artigo, iremos usar DataSet em nosso projeto. Se tiverem dvidas ou pedidos para que use outroscontroles relacionados ao acesso a dados no projeto, postem nos comentrios ou mandem emails parawellingtonbalbo@gmail.com.Cadastro de Clientes em C# usando conceitos deADO.NET Parte 3ABR 28Posted by programatorOl pessoal, volto com a srie de artigos usando os conceitos bsicos de ADO.NET. Nesta parte vou mostrar uma breveintroduo ao DataSet e depois criarei um exemplo em um novo projeto Windows Forms. Confiram:No artigo anterior, j usamos o DataSet no projeto, s que o usamos para alimentar os dados no DataGridView. Vamos aosconceitos bsicos dele:DataSet o ADO.NET desenhado para permitir o desenvolvimento de aplicaes grandes e altamente escalveis, e um dosmaiores obstculos para a escalabilidade o limite de conectividade dos bancos de dados, j que eles normalmentetrabalham com um nmero limite de conexes ativas disponveis simultaneamente. Isto significa que, se uma parte do cdigotentar fazer a conexo e todas as conexes disponveis estiverem sendo utilizadas, ele precisar aguardar at que uma delasesteja livre. Este problema est ligado ao nmero de conexes disponveis, as possibilidades de a performance ser afetadaso grandes; se este nmero for prximo ou igual ao nmero de conexes disponveis, o risco menor.Para minimizar esse problema, alm da interface IDataReader, o ADO.NET tambm suporta o conceito de manipulao doregistro desconectado, atravs da classe DataSet. Esta classe desenhada para permitir uma viso geral fcil e navegvel do 12. banco de dados da aplicao. A idia por trs disso conectar e desconectar rapidamente do banco de dados, saindo comuma cpia dos dados.Na classe DataSet, os objetos normalmente so construdos com a utilizao de um DataAdapter. A DataSet inclui um arrayDataTable (um para cada sentena de seleo na query). Toda vez que o DataAdapter voltar com os dados do DataSet,teremos a viso geral mais recente do banco de dados na memria. O DataSet possui uma coleo DataTable e cria umelemento DataTable para cada sentena (instruo SQL) SELECT na pesquisa.Conceitos sobre ADO.NET retirados da Apostila de ASP.NET 2005 Captulo 4, do curso feito na Impacta Tecnologia.Aps os conceitos, vamos prtica: Crie um novo projeto em Windows Forms com o nome ExemploDataSet.Agora abra a Solution Explorer (CTRL + W + S), clique com o boto direito no projeto e clique em Add &gt; New Item, emCategories selecione Data, escolha o template DataSet, d o nome DataSetCliente e clique em OK. 13. Agora abra o Server Explorer (CTRL + W + L), expanda um Database qualquer e arraste a tabela para o DataSet (nesteexemplo arrastei a tabela Clientes, usada nos artigos de SQL Server).Ok, nossa tabela foi arrastada para nosso DataSet. Perceba que foi criado automaticamente um TableAdapter, responsvelpor preencher os dados do DataTable. Agora v ao form criado pelo VS, e adicione um DataGridView, da...</p>