Olá pessoal, devido a vários pedidos, irei criar neste artigo um Cadastro simples de Clientes em Windows Forms usando C# e os conceitos de ADO.NET, como SqlConnection e SqlCommand. Com exceção da criação do banco e das tabelas, todo o resto será via código, desde a criação dos métodos de acesso aos dados até os métodos de inclusão, exclusão, consulta e atualização 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 botão direito em cima de Data Connections e clique em Create New 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.
Você verá que o database foi criado. Expanda-o, clique com o botão direito em Table e clique em Add New Table. Vamos criar 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 Set Primary Key no menu acima. Salve a tabela com o nome tbClientes. Lembre-se também de especificar que a coluna IDCliente é Identity, ou seja é identada, terá um número próprio, assim não precisaremos especificá-lo na hora da inserção dos dados. Só alterar a opção, 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 início vamos criar no formulário apenas 3 botões, Inserir, Excluir e Atualizar e fazer as instruções SQL via código. Mais a frente faremos a consulta aos dados inseridos por meio do controle DataGridView, do Visual Studio. Dito isto, crie 3 botões no formulário, como mostra a imagem a seguir:
Nas propriedades dê os nomes, em Name, de btnInserir, btnExcluir e btnAtualizar. Dentro do código do botão Inserir, será necessário passar a string de conexão do banco de dados. Dica: para não ter que digitar a string na mão, abra o Server Explorer, clique com o botão direito no Database Clientes e clique em Properties. Na opção Connection String, copie e cole a string de conexão para o parâmetro do SqlConnection, como a imagem nos mostra:
Segue abaixo todo o código comentado do botão Inserir:
O código foi inteiramente comentado, mais de qualquer forma vou explicar os pontos importantes. Dentro do botão Inserir coloquei um try/catch para capturar algum erro que possa acontecer. Comecei instanciando o SqlConnection, passando a ele a string de conexão, depois instanciei o SqlCommand, atribuindo a ele o SqlConnection. Depois, usei o método CommandText, do SqlCommand, para fazer a instrução SQL, só que ao invés de passar diretamente os valores dentro dele, eu passei apenas os parâmetros, como uma forma de segurança dos dados. Assim minha instrução SQL fica parametrizada, pelo uso do arroba (@) + o nome da coluna da tabela.
Logo após, passei os valores por meio do método AddWithValue, pertencente ao método Parameters, do SqlCommand. Nele, que espera dois parâmetros, que são os parâmetros declarados no INSERT e os valores em si, foram passados os valores das colunas, com exceção da coluna ID, que como é Primary Key não precisa ser passado nenhum valor.
Após isso, abro minha conexão por meio do método Open, uso o ExecuteNonQuery, que é perfeito para inserção no banco, já que a mesma não nos retorna dados(a usamos também para fazer Update e Delete) e fecho a conexão.
Apenas para fins didáticos uma breve explicação dos 4 tipos de execuções que tenho no SqlCommand:
ExecuteNonQuery() – executa uma instrução que não retorna dados, por exemplo um INSERT ou UPDATE.
ExecuteReader() – usado para fazemos um SELECT que retorne um DataReader.
ExecuteScalar() – usada quando a consulta retorna apenas um valor, que é obrigatoriamente a primeira linha da primeira coluna.
ExecuteXmlReader() – usada para nos retornar um objeto do tipo XmlReader.
Finalizando nosso código, coloquei um MessageBox para informar ao usuário que a inserção funcionou. Salve seu projeto e, antes de compilar, coloque um Breakpoint no começo do código, como mostra a imagem a seguir:
Agora compile e teste linha a linha nosso código. Se tudo foi feito como no exemplo, aparecerá a mensagem dizendo que a inclusão foi realizada com sucesso.
Para ter certeza, abra o Server Explorer, vá ao seu Database, vá na Tabela de Clientes, clique com o botão direito em cima dela e clique em Show Table Data. Deverá aparecer uma tela como essa:
Agora vamos codificar o botão de Excluir. Os conceitos de ADO.NET, são praticamente os mesmos, só vai mudar a instrução SQL. Faça o código como abaixo:
Como você pode perceber, muda pouca coisa em relação aos códigos do botão de Inserir. Antes de rodá-lo, insira mais alguns dados na tabela, para que a mesma não fique sem dados. Salve, compile e teste para ver se tudo saiu Ok.
Finalizando, vamos fazer o método referente ao botão Update, que também só será alterado a instrução SQL, já que vamos atualizar os dados já existentes. Dê dois cliques nele e insira o seguinte código:
Neste exemplo alteramos somente o Endereço, Telefone e Email, mais você pode alterar todos os campos se assim achar necessário. Salve, compile e veja o resultado na sua tabela.
Antes do Update:
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 próxima parte de nosso artigo, iremos usar o controle DataGridView em nosso projeto.
Para quem se interessar, disponibilizo o código fonte desse projeto aqui.
Lembrando que esse projeto foi feito usando o Visual Studio 2008 Professional SP1.
Abraços.
Até o próximo artigo!
Parabéns pelo artigo!
Estou iniciando agora e esta ajudando mtooo!
Mas nao consegui abrir o link com o codigo fonte =s
CurtirCurtir
Eu uso o visual studio 2010 e o banco sql 2008 r2
CurtirCurtir
Parabéns wellington vc está ajudando muita gente inclusive eu, sou iniciante em c# muito obg., vlw.!!!
CurtirCurtir
Obrigado se todos artigos na net fosse assim simples e objetivo você esta de parabéns!!
você tem aulas de java?
CurtirCurtir
Obrigado Fernando!
Infelizmente não, só .NET/SQL mesmo.
Abraço
CurtirCurtir
istanciaaa*
CurtirCurtir
puts cara vlw.. to conseguindoo sim.. to usandoo CHECKLISTBOX .. da hora.. porém to indo na raça tenho que aprende mais sobre o conceito , herança, classe instancia essas coisas. seus artigos são legais cara aborda o assunto em uma linguagem mais facil .. sem perder o conceito tecnico.. vlw cara !!
CurtirCurtir
Beleza cara, valeu.
Se você tá conseguindo tá valendo.
Pesquise no próprio blog, tem assuntos variados relacionados à Programação Orientada a Objetos e a Estrutura da Linguagem C#, pesquisa por essas categorias.
Fica de olho que desde Sábado estou publicando 1 post por dia no blog, assim ele sempre fica atualizado =)
Abraços.
CurtirCurtir
puts cara e como seria um select ? .. não consegui fazer aqui kkk
CurtirCurtir
Cara, sugiro que veja o seguinte artigo:
https://programandodotnet.wordpress.com/2010/03/17/cadastro-de-um-consultorio-em-windows-forms-com-c-e-sql-server-%E2%80%93-parte-6/
Ou melhor, se tiver com tempo veja a série de artigos do Consultório no link abaixo:
https://programandodotnet.wordpress.com/tag/consultorio
Se mesmo assim não conseguir manda seu projeto pra mim.
Abraços.
CurtirCurtir
eaew cara muito bom teu artigo.. estou começando agora tem uns 2 meses .. suahusa ai estou fazendo uma aplicação aqui que e o seguinte. ultiliza o CRUD select ,insert,update,delete ..para 2 tabelas — cad_aluno e cad_disciplina.. so que não consigo fazer o DELETE estou meio confuso.. pq o delete depende do que o usuario digitar e quizer deletar pode me dar uma ajuda ai cara ?
vlw
att Franz
CurtirCurtir
Cara, obrigado pelo elogio.
Não entendi sua dúvida, manda seu projeto zipado pra mim, para o email wellingtonbalbo@gmail.com que assim que possível vejo pra você.
Abraços.
CurtirCurtir
wellington,
Inicialmenten Parabéns pelo post, sou visitante e gostei da forma que você colocou este material. Estou tentando aprender c# na tora, abro uma pagina aqui outra alí, vou olhando analizando e quero aprender programar com c#. Você mim indicaria algum livro, apostila alguma coisa para dar o ponta pé inicial.
CurtirCurtir
Erildo, obrigado pelos elogios.
Segue link de um excelente livro chamado Use a Cabeça C#, em português:
http://www.4shared.com/file/wc9jLZlZ/Use_a_Cabea_C.html?
Excelente material de estudo, aproveite!
Abraços.
CurtirCurtir
Otimo exemplo, estou começando agora com c#, queria saber o seguinte, criando os botões, Adicionar, Exclui, eos textBox, com faço para jogar no banco SqlServer 2008″, pois o seu post, e direto em comandos sql, gostaria se coo se fosse normal!
Abraços!
CurtirCurtir
Como assim Emerson, não entendi sua dúvida.
Da forma que estou fazendo é da forma usada para gravar os dados no banco, de que forma você está pensando?
Abraços.
CurtirCurtir
Olá Welligton.,meu nome é adriano, Queria que vc me ajudasse com um problema que estou enfrentando com meu banco de dados sql server, pois quanto tento criar uma aplicação que liga os dados, não consigo fazer a conexão, pois ele exibe um erro dizendo que o sql server não pode se conectar, porque não esta configurado para fazer conexões remotas. queria saber como resolver esse problema!
ate mais.
CurtirCurtir
Adriano, erro estranho cara. Como você está tentando se conectar ao SQL Server?
Se quiser manda seu projeto pro meu email, tento dar uma olhada: wellingtonbalbo@gmail.com.
Abraços.
CurtirCurtir
cara ja mandei vc viu?
CurtirCurtir
Não cara, não chegou nada pra mim.
Você mandou pra wellingtonbalbo@gmail.com certo?
Abraços.
CurtirCurtir
cara Segue dando esse erro
http://imageshack.us/photo/my-images/163/erroe.jpg/
vo manda meu projeto por email pra vc
CurtirCurtir
Manda Rangel, mais esse erro parece ser erro de conexão com o banco, verifique como está configurado sua conexão.
Abraços.
CurtirCurtir
Cara, você precisa usar o namespace System.Data e o System.Data.SqlClient.
Abraços.
CurtirCurtir
Cara Nao ta Reconhecendo nenhum Comando Sql, Todos Eles estao dando erro
e ainda fala que ta esperando um “{“
CurtirCurtir
Cara, você precisa usar o namespace System.Data e o System.Data.SqlClient.
Veja se é isso, se continuar a dar erro me mande seu projeto por email pra wellingtonbalbo@gmail.com pra eu tentar te ajudar.
Abraços.
CurtirCurtir
Cara primeiramente parabens pelo material!!!
Preciso da sua ajuda, o meu update nao funcionou e nao consegui achar o erro, p codigo esta igual ao seu olha so:
private void btnAtualizar_Click(object sender, EventArgs e)
{
SqlConnection conn= new SqlConnection (@”Data Source=.\SQLEXPRESS;AttachDbFilename=C:\clientes.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True”);
// sql command instrucoes do sql
SqlCommand comm = new SqlCommand();
comm.Connection = conn;
//commmando para alterar dados
comm.CommandText = “UPDATE tbClientes SET ENDERECOCLIENTE=@ENDERECOCLIENTE,” +
“TELEFONECLIENTE=@TELEFONECLIENTE,EMAILCLIENTE=@EMAILCLIENTE” +
“WHERE IDCLIENTE=@IDCLIENTE”;
comm.Parameters.AddWithValue(“@IDCLIENTE”,19 );
comm.Parameters.AddWithValue(“@ENDERECOCLIENTE”,”RUA DAS FLORES”);
comm.Parameters.AddWithValue(“@TELEFONECLIENTE”, 1140333333);
comm.Parameters.AddWithValue(“@EMAILCLIENTE”, “ramlede@hotmail.com”);
//ABRE E FECHA CONEXAO
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
E nao aparece nenhum erro no codigo, mas quando mando executar e clico no botao ATUALIZAR apara a mensagem: http://www.4shared.com/photo/sBZu0fTu/erro_sql.html
Se vc puder ajudar agradeco!!!!
CurtirCurtir
Edelmar, pelo que o erro aponta, ele está reconhecendo a variável @EMAILCLIENTE como @EMAILCLIENTEWHERE, ou seja, experimente dar um espaço na linha do @EMAILCLIENTE, e outro espaço na linha abaixo, do WHERE, e vê se isso resolve.
Note que no meu artigo fiz tudo com espaços, para “dizer” exatamente ao SQL Server o que é variável e o que é uma cláusula.
Se tiver mais dúvidas, comenta aê, abraços.
CurtirCurtir
Wellington, parabéns!
Realmente ajudando muitas pessoas, continue, por favor!
…em relação ao problema dos colegas em estar inativo, basta, ao invés de clicar em “CREATE NEW SQL CONNECTION SERVER DATABASE” clicar em “ADD CONNECTION”, e direcionar para o banco de dados!
vlw, abraço.
CurtirCurtir
Beleza Bruno, obrigado pelos elogios cara!
Valeu pela dica e por ajudar os amigos.
Abraços.
CurtirCurtir
Cara parabens pelo site, você está fazendo um trabalho muito bom mesmo.
Mas eu estou com o mesmo problema que o Paulo relatou no seu comentario, a opção Create New SQL Server Database tambem se encontra inativa aqui comigo. Eu tenho instalado SQL Server Management Studio no PC. A versão que estou usando e o visual C# 2010. Se você podesse me ajudar ficaria muito grato.
Parabens pelo site continue assim e conto com sua ajuda nesse problema.
Um Abraço!!!
CurtirCurtir
Cesar, valeu pelos elogios.
Cara, que estranho, não deveria ficar inativa a opção para criar Database.
Você pode fazer de outra forma, abrindo direto o SQL Server e criando as tabelas que precisa.
Depois você só faz a conexão direta, pelo Server Explorer.
Qualquer coisa, me manda um email cara > wellingtonbalbo@gmail.com.
Abraços.
CurtirCurtir
Olá amigo, parabéns pelo seu artigo, de certa forma me ajudou mto em meu projeto apesar de estar usando o access e não o sql, peguei a logica e passei para o access. Como eu trabalho com VB.NET e como sou nova na área gostaría de saber se você possui material relacionado ao visual studio junto com access, quero me aprofundar mais no VB, se puder me ajudar fico grata!
CurtirCurtir
Carol, obrigado pelo elogio.
Então, não tenho nenhum artigo em VB.NET (não gosto muito dessa linguagem, sou + C#!), mais posso te indicar um dos melhores (pra não dizer O melhor!) sites de VB.NET do Brasil > http://www.macoratti.net.
Aqui você encontra os artigos dele sobre VB.NET especificamente:
http://www.macoratti.net/pageview.aspx?catid=1
Tenho em casa um sistema de cadastro de clientes pronto com banco Access, se quiser te passo por email (só que está em C#), só pedir no wellingtonbalbo@gmail.com.
Abraços e bons estudos!
CurtirCurtir
Muito bom seus artigos Mas se fosse preciso normalizar esta tabela cliente: por exemplo, Tera tb_cliente,tb_log,tb_bairro,tb_cidade,tb_uf.
Como que seria?
Obrigado
CurtirCurtir
Da mesma forma cara, só aumentaria o número de campos no form, e consequentemente na codificação.
Abraços.
CurtirCurtir
Parabéns pelo teu trabalho. Ando a iniciar-me no C# 2008, e ao tentar fazer este exemplo deparei-me com uma dificuldade logo no início:
Ao fazer com o botão direito em cima de Data Connections, a opção Create New SQL Server Database, aparece-me inactiva, e portanto não seleccionável. Como resolvo o problema?
Obrigado
-Podes indicar-me bons livros sobre ADO.NET com C# e sobre Ficheiros em WindowsForm?
CurtirCurtir
Paulo, obrigado por acessar meu blog!
Cara, erro estranho, você tem instalado o SQL Server Management Studio em seu pc?
Faz o seguinte: baixa o projeto do artigo e tenta criar a conexão.
Se o erro persistir, envie um email para wellingtonbalbo@gmail.com que ficarei feliz em te ajudar.
Abraços.
CurtirCurtir
Fala Wellington.
Blz?
Cara, seu site está arrebentando hein. Muito bom mesmo!!!
Pode teria algum material de Lógica de programação?
Grande abraço amigo!
CurtirCurtir
Fala cara, beleza! Valeu pelos elogios. Tenho algum material de Lógica em casa. Vou subir pra um servidor e mais tarde disponibilizo a você o link para download.
Abraços.
CurtirCurtir
Cara, com um pouco de atraso, subi o pdf de Lógica de Programação que eu tenho. Pode ser acessado por este link > http://uploaddearquivos.com.br/download/Lgica-de-Programao.pdf.
Em breve farei uma página no blog somente a downloads de documentos de estudo em .NET, aguarde!
Abraços.
CurtirCurtir
Obrigado Greyson, mais artigos deste tipo surgirão. Aguarde!
CurtirCurtir
Cara, muito bom o seu artigo, com muita clareza nos comentários.
Valeu mesmo essa iniciativa.
CurtirCurtir
Parabéns pela artigo, muito didático, simples e direto.
Vou utilizar nas minhas aulas de C# na Uninove de São Roque.
CurtirCurtir
Obrigado Galvão, tento ser o mais simples e direto em meus artigos para que não haja nenhum dúvida em relação a eles. Bom uso nas suas aulas.
Abraços.
CurtirCurtir