Select em Csharp com banco de dados MySQL

23/10/2012

0

Ola, sou novo em programação.

Estou cirando um programa para fazer cadastro de cliente, estou usando o Visual Studio C# com MySQL.

Esta fazendo o cadastro gravando no MySQL certinho, eu consigo lista todos os dados cadastrados de todos os clientes.

Minha duvida e como posso fazer uma pesquisa(select), e mostra no dataGridView.

Ex: cadastrei o cliente NOME:Y, CPF:1, Endereco:xx, Rua:XX. quando eu escrever no textBoxCPF "1" e clicar em pesquisa, o programa mostra no dataGridView todos os dados do cliente.

segue o codigo de botão cadastro:

private void btnCadastrar_Click(object sender, EventArgs e)
{

string Nome = txtNome.Text;
string CPF = txtCpf.Text;
string RG = txtRg.Text;
string Telefone = txtTel.Text;
string Endereco = txtEndereco.Text;
string Bairro = txtBairro.Text;
string Cidade = txtCidade.Text;
string Cep = txtCep.Text;
string Estado = txtEstado.Text;
string Placa = txtPlaca.Text;

{
//string de conecxão com o mysql
string CONFIG = ("Persist Security Info=False;server=localhost;database=bdcdc;uid=root;server=localhost;database=bdcdc;uid=root;pwd=''");
MySqlConnection Conexao = new MySqlConnection(CONFIG);
MySqlCommand Query = new MySqlCommand();
Query.Connection = Conexao;
Conexao.Open();
//string de inclusão de dados no Mysql
Query.CommandText = "INSERT INTO tbcliente(Nome,CPF,RG,Telefone,Endereco,Bairro,Cidade,Cep,Estado,Placa) VALUES(@Nome, @CPF, @RG, @Telefone, @Endereco, @Bairro, @Cidade, @Cep, @Estado, @Placa)";
Query.Parameters.AddWithValue("@Nome", Nome);
Query.Parameters.AddWithValue("@CPF", CPF);
Query.Parameters.AddWithValue("@RG", RG);
Query.Parameters.AddWithValue("@Telefone", Telefone);
Query.Parameters.AddWithValue("@Endereco", Endereco);
Query.Parameters.AddWithValue("@Bairro", Bairro);
Query.Parameters.AddWithValue("@Cidade", Cidade);
Query.Parameters.AddWithValue("@Cep", Cep);
Query.Parameters.AddWithValue("@Estado", Estado);
Query.Parameters.AddWithValue("@Placa", Placa);
Query.ExecuteNonQuery();
Query.Dispose();
MessageBox.Show("Cliente cadastrado com sucesso.", "Cadastro", MessageBoxButtons.OK, MessageBoxIcon.Information);
btnLimpar.PerformClick();
Conexao.Close();
}



segue o botão lista todos os clientes cadastrados:

private void btnCadastrados_Click(object sender, EventArgs e)

{
conexaoDataset = new DataSet();
//Define string de conexão
conexao = new MySqlConnection("Persist Security Info=False;server=localhost;database=bdcdc;uid=root;server=localhost;database=bdcdc;uid=root;pwd=''");
//Abre conecção
try
{
conexao.Open();
MySqlDataAdapter conexaoAdapter = new MySqlDataAdapter("SELECT * FROM tbcliente ORDER BY nome", conexao);
conexaoAdapter.Fill(conexaoDataset, "tbcliente");
dataGridView1.DataSource = conexaoDataset;
dataGridView1.DataMember = "tbcliente";
}
catch
{
MessageBox.Show("Impossível estabelecer conexão");
conexao.Close();
}
}



segue o botão pesquisa de cliente:








private void btnPesquisa_Click(object sender, EventArgs e)

{

conexaoDataset = new DataSet();
conexao = new MySqlConnection("Persist Security Info=False;server=localhost;database=bdcdc;uid=root;server=localhost;database=bdcdc;uid=root;pwd=''");

try
{
conexao.Open();
MySqlDataAdapter conexaoAdapter = new MySqlDataAdapter("SELECT Nome,CPF,RG,Telefone,Endereco,Bairro,Cidade,CepEstado,Placa, FROM tbcliente WHERE CPF =" + txtCpf.Text, conexao);
conexaoAdapter.Fill(conexaoDataset, "tbcliente");
dataGridView1.DataSource = conexaoDataset;
dataGridView1.DataMember = "tbcliente";

}
catch
{
MessageBox.Show("Impossível estabelecer conexão");
conexao.Close();
}

}

Desde já agradeço!!!

(não tenho muita experiencia em programação)
Anderson Silva

Anderson Silva

Responder

Posts

23/10/2012

Tiago

Opa, vamos la... Para colocar no gridview é necessário alguns passos:

1-Crie um método que retorne uma lista ou um data table dos dados que você deseja mostrar no grid:

public DataTable ListarClientes(){
Datatable dt = new Datatable();

return dt

}

2- Use a propriedade DataSource do gridview para receber essas informações:

NomeDoGrid.DataSource=ListarClientes()

3-Chame o método DataBind(), ele será responsável por exibir os valores  no seu grid.

NomeDoGrid.DataBind();


Espero ter ajudado.
Responder

24/10/2012

Anderson Silva

Então eu estou fazendo (eu acho) do jeito certo!! mas quando eu clico no botão pesquisa ele não mostra no datagrid!

no textBox eu digito o CPF para fazer a pesquisa e retornar os dados do cliente, mas não esta mostrando :\ ...

codigo:
{
conexaoDataset = new DataSet();
conexao = new MySqlConnection("Persist Security Info=False;server=localhost;database=bdcdc;uid=root;server=localhost;database=bdcdc;uid=root;pwd=''");

try
{
conexao.Open();
MySqlDataAdapter conexaoAdapter = new MySqlDataAdapter("SELECT Nome,CPF,RG,Telefone,Endereco,Bairro,Cidade,CepEstado,Placa, FROM tbcliente WHERE CPF =" + txtCpf.Text, conexao);
conexaoAdapter.Fill(conexaoDataset, "tbcliente");
dataGridView1.DataSource = conexaoDataset;
dataGridView1.DataMember = "tbcliente";
Responder

24/10/2012

Joel Rodrigues

Experimente trocar o DataSet por DataTable, como foi dito acima. Com isso, não precisará de defini a propriedade DataMember.
Boa sorte.
Responder

24/10/2012

Robson Alves

Anderson Cicero Feitosa Silva, Boa Tarde,
no final do código incrementa o seguinte:

NomeDoSeuGridView.DataBind();

O 'DataBind' é resposável pelo Bound das informações encontradas no DataSource e com isso é enviada para a página.

Abraços.
Responder

24/10/2012

Anderson Silva

Eu tentei coloca de varias formas mas não consegui.. :( não sei se estou fazendo do jeito certo...
Com "DataBind e Datatable":

public DataTable pesquisaDatatable;

private void btnPesquisa_Click(object sender, EventArgs e)
{

pesquisaDatatable = new DataTable();
conexao = new MySqlConnection("Persist Security Info=False;server=localhost;database=bdcdc;uid=root;server=localhost;database=bdcdc;uid=root;pwd=''");

try
{

conexao.Open();
MySqlDataAdapter conexaoAdapter = new MySqlDataAdapter("SELECT Nome, CPF, RG, Telefone, Endereco, Bairro, Cidade, Cep, Estado, Placa, FROM * tbcliente WHERE CPF =" + txtCpf.Text, conexao);
conexaoAdapter.Fill(pesquisaDatatable);
dataGridView1.DataSource = pesquisaDatatable;
dataGridView1.DataBind();



da esse erro tbm> Error 2'System.Windows.Forms.DataGridView' does not contain a definition for 'DataBind' and no extension method 'DataBind' accepting a first argument of type 'System.Windows.Forms.DataGridView' could be found (are you missing a using directive or an assembly reference?) C:\Documents and Settings\Administrador\Meus documentos\Visual Studio 2010\Projects\Cadastro\Cadastro\Form3.cs228 27 Cadastro





Responder

24/10/2012

Tiago

Boa noite, procure depurar a aplicação assim que executar o comando e você passar as informações para um DATATABLE... Veja no debug se a propriedade Rows esta zerada. Se estiver é porquê é alguma coisa na consulta dos dados.
Responder

25/10/2012

Robson Alves

Desculpa foi erro meu, o DataBind é uma necessidade para quem cria GridView utilizando ASP.Net.

Existe um * depois do From, se isso estiver na sua Query já é um erro, mas aparentemente esta tudo certo.
Responder

25/10/2012

Valter Furtado

olhando seu código de insert e o select, o seu select tá errado...
veja que você colocou CepEstado (acredito que fosse Cep, Estado,...) e no fim antes do from tem uma virgula sobrando.
Responder

25/10/2012

Valter Furtado

olhando seu código de insert e o select, o seu select tá errado...
veja que você colocou CepEstado (acredito que fosse Cep, Estado,...) e no fim antes do from tem uma virgula sobrando.


só pra completar... cpf é uma string? se for você concatenou errado... deveria ficar...
"...WHERE CPF ='" + txtCpf.Text + "'",...
Responder

25/10/2012

Moisés Gonçalves

olhando seu código de insert e o select, o seu select tá errado...
veja que você colocou CepEstado (acredito que fosse Cep, Estado,...) e no fim antes do from tem uma virgula sobrando.


só pra completar... cpf é uma string? se for você concatenou errado... deveria ficar...
"...WHERE CPF ='" + txtCpf.Text + "'",...


Utilize parâmetros para este tipo de operação para evitar sql injection.
Responder

25/10/2012

Tiago

Moisés está certo, é uma má prática de programação utilizar o sql no c# dessa forma. ai abaixo segue um exemplo


SqlParameter [] param_sql = new SqlParameter[2];
param_sql[0]= new SqlParameter("@nomeparametro",valor_do_parametro); 
param_sql[1]= new SqlParameter("@nomeparametro",valor_do_parametro); 



Depois é só adicionar a classe SqlCommand.

Espero ter ajudado.
Responder

25/10/2012

Anderson Silva

Arrumei alguns erros que tinha, mas mesmo assim não rolo :(

Sim o CPF e uma string: eu coloquei assim,

public DataTable pesquisaDatatable;

private void btnPesquisa_Click(object sender, EventArgs e)
{

pesquisaDatatable = new DataTable();
conexao = new MySqlConnection("Persist Security Info=False;server=localhost;database=bdcdc;uid=root;server=localhost;database=bdcdc;uid=root;pwd=''");
try
{

conexao.Open();
MySqlDataAdapter conexaoAdapter = new MySqlDataAdapter("SELECT Nome, CPF, RG, Telefone, Endereco, Bairro, Cidade, Cep, Estado, Placa FROM * tbcliente WHERE CPF ="+ txtCpf.Text + "",conexao);
conexaoAdapter.Fill(pesquisaDatatable);
dataGridView1.DataSource = pesquisaDatatable;
dataGridView1.DataMember = "tbcliente";


agora não deu erro nenhum, mas não mostra no Grid os dados do cliente...
Responder

25/10/2012

Tiago



Opa, faça o seguinte coloque o debug nessa linha:
dt=conexaoAdapter.Fill(pesquisaDatatable)

logo depois aperte F10 para pular uma linha, e verifique se este DataTable está te retornando algo... se não estiver é a consulta que está montada de forma incorreta..
conexao.Open();
MySqlDataAdapter conexaoAdapter = new MySqlDataAdapter("SELECT Nome, CPF, RG, Telefone, Endereco, Bairro, Cidade, Cep, Estado, Placa FROM * tbcliente WHERE CPF ="+ txtCpf.Text + "",conexao);
DataTable dt = new DataTable();//CRie um DataTable
dt=conexaoAdapter.Fill(pesquisaDatatable);//Coloque o datatable para receber o preenchimento via dataadapter
dataGridView1.DataSource = pesquisaDatatable;
dataGridView1.DataMember = "tbcliente";

Espero que isso ajude
Responder

25/10/2012

Valter Furtado

Arrumei alguns erros que tinha, mas mesmo assim não rolo :(

Sim o CPF e uma string: eu coloquei assim,

public DataTable pesquisaDatatable;

private void btnPesquisa_Click(object sender, EventArgs e)
{

pesquisaDatatable = new DataTable();
conexao = new MySqlConnection("Persist Security Info=False;server=localhost;database=bdcdc;uid=root;server=localhost;database=bdcdc;uid=root;pwd=''");
try
{

conexao.Open();
MySqlDataAdapter conexaoAdapter = new MySqlDataAdapter("SELECT Nome, CPF, RG, Telefone, Endereco, Bairro, Cidade, Cep, Estado, Placa FROM * tbcliente WHERE CPF ="+ txtCpf.Text + "",conexao);
conexaoAdapter.Fill(pesquisaDatatable);
dataGridView1.DataSource = pesquisaDatatable;
dataGridView1.DataMember = "tbcliente";


agora não deu erro nenhum, mas não mostra no Grid os dados do cliente...


tem um FROM * tblcliente
é isso?
nao neh rs
* from...
Responder

25/10/2012

Alisson Santos

Você verificou se está abrindo a query nesse caso, pois você tem que pegar as informações que vem de um dataset aberto e jogar no grid.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar