Select em Csharp com banco de dados MySQL
23/10/2012
0
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
Posts
23/10/2012
Tiago
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.
24/10/2012
Anderson Silva
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";
24/10/2012
Joel Rodrigues
Boa sorte.
24/10/2012
Robson Alves
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.
24/10/2012
Anderson Silva
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
24/10/2012
Tiago
25/10/2012
Robson Alves
Existe um * depois do From, se isso estiver na sua Query já é um erro, mas aparentemente esta tudo certo.
25/10/2012
Valter Furtado
veja que você colocou CepEstado (acredito que fosse Cep, Estado,...) e no fim antes do from tem uma virgula sobrando.
25/10/2012
Valter Furtado
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 + "'",...
25/10/2012
Moisés Gonçalves
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.
25/10/2012
Tiago
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.
25/10/2012
Anderson Silva
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...
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
25/10/2012
Valter Furtado
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...
25/10/2012
Alisson Santos
Clique aqui para fazer login e interagir na Comunidade :)