Usuário com melhor resposta
Consulta SQL jogar num TextBox

Pergunta
-
Como eu poderia colocar um resultado de uma consulta do SQL em uns textboxs de acordo com o desejado...
Obrigado ;)
- Movido C. Augusto Proiete [MVP]Moderator segunda-feira, 24 de maio de 2010 14:53 Movido para o fórum apropriado (De:C#)
Respostas
-
Cara seguinte nunca trabalhei com mySql apenas com sqlServer então vou te mostrar como eu faria no seu caso usando o sql
Bom seguinte primeiro vamos uma tabela no banco de dados para armazenar suas cidades e ufs
então roda a seguinte scrip nele
CREATE TABLE tblCidade( nome varchar(50) NOT NULL, idC bigint NOT NULL, PRIMARY KEY(idC)) CREATE TABLE tblUF( nomeUF varchar(2) NOT NULL, idU bigint NOT NULL, PRIMARY KEY(idU)) CREATE TABLE ufCIDADE( idU bigint NOT NULL, idC bigint NOT NULL, FOREIGN KEY(idU) REFERENCES tblUF, FOREIGN KEY(idC)REFERENCES tblCidade)
depois disto insera seus dados na tabela e não se esqueça que a terceira tabela que citei aki é para relacionar as cidades com suas respectivas ufs então os ID de Cidade tem que corresponder com os IDs de UF para q o select q vou te passar de certo
Depois de criadas as tabelas va a seu projeto e crie uma classe que vai baixar os valores do banco
primeiro crie um método que preencha seu combobox e não se esqça de adicionar os namespaces System.Windows.Forms e System.Data.SqlCliente em sua classe
public ComboBox preencheCombo(ComboBoc cbx)
{
SqlConnection cnx = new SqlConnection();
cnx.ConnectionString = "Data source = caminho do banco;; initial catalog = nome do banco; integrated security = true";
string cmd = "select * from tblCidade";
SqlCommand comando = new SqlCommand(cmd, cnx);
cnx.Open();
SqlDataReader dr = comando.ExecuteNonReader();
while(dr.Read())
{
cbx.Items.Add((string)dr["nome"]);
}
cbx.Close();
return cbx;
}
coloque este método dentro do load do formulário q contem seu combo e passe o mesmo como parametro para este método
Feito isso vamos criar o outro método q retornara um label
public Label mostraUf(Label lbl, string busca)
{
SqlConnection cnx = new SqlConnection();
cnx.ConnectionString = "Data source = caminho do banco;; initial catalog = nome do banco; integrated security = true";
string cmd = "SELECT nomeUF FROM ufCIDADE inner join tblUF on tblUF.idU = ufCIDADE.idU where ufCIDADE.idC = (select tblCidade.idC from tblCidade where tblCidade.nome = '"+ busca+"')";
SqlCommand comando = new SqlCommand(cmd, cnx);
cnx.Open();
SqlDataReader dr = comando.ExecuteNonReader();
while(dr.Read())
{
lbl.Text = ((string)dr["nomeUF"]);
}
cbx.Close();
return lbl;
}
este método voce adicione dentro do evento private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
da seguinte maneira
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
SuaClasse obj = new SuaClasse();
obj.mostraUF(label1, comboBox1.SelectedItem.ToString());
}
faça isto e me diga qual foi seu resultado
Att Edney qlqr coisa só me procurar pelo forum
- Sugerido como Resposta AndreAlvesLimaModerator sábado, 5 de junho de 2010 23:48
- Editado Edney Batista Silva domingo, 6 de junho de 2010 00:14
- Marcado como Resposta AndreAlvesLimaModerator segunda-feira, 7 de junho de 2010 22:14
-
Veja isto http://www.java2s.com/Tutorial/CSharp/0560__ADO.Net/ExecutingaParameterizedQuerywithSqlCommand.htm
Just Be Humble Malange!- Sugerido como Resposta AndreAlvesLimaModerator sábado, 5 de junho de 2010 23:48
- Marcado como Resposta AndreAlvesLimaModerator segunda-feira, 7 de junho de 2010 22:14
Todas as Respostas
-
Segue um exemplo amigo, da uma estudada em cima desses codigos,
no inicio coloque:
using System.Data.SqlClient;
private void button2_Click(object sender, EventArgs e) { //Abre a conexão com o banco de dados SqlConnection objConn = new SqlConnection("aqui sua string de conexão"); objConn.Open(); try{ //seleciona o campo nome da tabale "TABELA" SqlCommand cmd = new SqlCommand("SELECT NOME FROM TABELA WHERE MATRICULA=@MATRICULA",objConn); cmd.Parameters.Add("@MATRICULA", SqlDbType.Int).Value = Convert.ToInt32(this.TextBoxMatricula.Text); SqlDataReader objReader = cmd.ExecuteReader(); //se existir dados mostra no textbox TextBoxNome if (objReader.Read()) this.TextBoxNome.Text = objReader["NOME"].ToString(); objReader.Close(); }catch(Exception ex){ //se ocorrer algum erro mostra uma mensagem MessageBox.Show(ex.Message); } finally { objConn.Close(); //fecha a conexão objConn.Dispose(); //libera da memoria } }
msn: poseidonfba@hotmail.com -
Bem eu tenho um COMBOBOX(CIDADE) e um LABEL(UF)
Gostaria de realizar o seguinte quando o COMBOBOX selecionar aquela cidade do banco ele fosse jogando a UF da cidade q ta no banco no label....
Fiz esse codigo mais nao deu certo...
commS = new MySqlCommand("select idcidade,nome,uf from cidade");
#### NESSA LINHA ABAIXO ESTA DANDO ERROR DE STRING, ELE PEDE UMA STRING E NAO UM MYSQLCOMMAND....
MySqlDataAdapter da = new MySqlDataAdapter(commS, mConn);
DataTable dataresul = new DataTable();
da.Fill(dataresul);
comboBox1.DataSource = dataresul;
comboBox1.DisplayMember = "nome";
rs = commS.ExecuteReader;
if (rs.Read())
{
label13.Visible = true;
label13.Text = rs["uf"].ToString();
}
Outra pergunta hehe , nesse codigo aki comboBox1.ValueMember = "idcidade"; eu pego o id da cidade selecionada no combobox, como eu faco para armazenar esse codigo no banco na tabela de pessoa?
Qual e o evento para ser realizado aquela tarefa so quando o combo tiver selecionado ... tipo onfocus algo do tipo
Obrigado
-
Tens de realizar uma query con condicao que esta na tua Combobox. Podes usar parametro. O teu codigo nao tem "condicao" ou um campo especifico de procura, ela simplesmente carrega toda informacao da tabela.
Eu te aconselharia a usar bindingsource. Algo assim:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
commS = new MySqlCommand("select * from cidade Where uf=@uf");
commS.Parameters.AddWithValue("@uf", this.comboBox1.SelectedItem);
MySqlDataAdapter da = new MySqlDataAdapter(commS, mConn);
DataTable dataresul = new DataTable();
da.Fill(dataresul);
BindingSource bs = new BindingSource();
bs.Datasource= dataresult;
{
label13.Visible = true;
this. label13.DataBindings.Add("Text", bs, "uf", true);
}
}
Se o SelectedItem nao funcionar usa o text
Just Be Humble Malange! -
Bem esse codigo da error ,seguinte nao precisa de parametros consulta simples select * from cidade
onde eu jogo o nome da cidade no combobox,
depois jogo o uf em um label,
e por ultimo jogo o idcidade no banco.
string t = "select idcidade,nome,uf from cidade";
MySqlDataAdapter da = new MySqlDataAdapter(t, mConn);
DataTable dataresul = new DataTable();
da.Fill(dataresul);
comboBox1.DataSource = dataresul;
comboBox1.DisplayMember = "nome";
comboBox1.ValueMember = "idcidade";
if(dataresul.Rows.Count > 0 )
{
label13.Text = dataresul.Rows[0]["uf"].ToString();
}
#### OBSERVACAO########
Esse codigo acima ele joga as cidades, ele guarda o id(so que nao sei como pegar lo de volta), e o uf eu consigo jogar no label, no entanto quando muda para outra cidade ele continua com a mesma UF da cidade passada.....
Qual seria o evento do combobox onde so realizaria algo quando ele tivesse em focu, ou selecionado ?
Esse codigo acima foi oq cheguei mais proximo do resultado q quero.
Obrigado ;)
-
-
-
faz um favor, no teu formload, coloca este codigo. no form em que se encontra a tua combobox.
commS = new MySqlCommand("select * from cidade");
MySqlDataAdapter da = new MySqlDataAdapter(commS, mConn);
DataTable dataresul = new DataTable();
da.Fill(dataresul);
comboBox1.DataSource = dataresul;
comboBox1.DisplayMember = "nome";
comboBox1.ValueMember = "idcidade";
agora no teu combobox
commS = new MySqlCommand("select * from cidade Where uf=@uf");
commS.Parameters.AddWithValue("@uf", this.comboBox1.SelectedItem);
MySqlDataAdapter da = new MySqlDataAdapter(commS, mConn);
DataTable dataresul = new DataTable();
da.Fill(dataresul);
BindingSource bs = new BindingSource();
bs.Datasource= dataresult;
{
label13.Visible = true;
this. label13.DataBindings.Add("Text", bs, "uf", true);
}
Just Be Humble Malange! -
Malange segui oq vc pediu para eu realizar no entanto...
Error 1 The best overloaded method match for 'MySql.Data.MySqlClient.MySqlDataAdapter.MySqlDataAdapter(string, MySql.Data.MySqlClient.MySqlConnection)' has some invalid arguments C:\Users\user\Documents\Visual Studio 2008\Projects\PeShow\PeShow\FFabricanteNovo.cs 55 35 PeShow
Error 2 Argument '1': cannot convert from 'MySql.Data.MySqlClient.MySqlCommand' to 'string' C:\Users\user\Documents\Visual Studio 2008\Projects\PeShow\PeShow\FFabricanteNovo.cs 55 56 PeShow
Error 3 The best overloaded method match for 'MySql.Data.MySqlClient.MySqlDataAdapter.MySqlDataAdapter(string, MySql.Data.MySqlClient.MySqlConnection)' has some invalid arguments C:\Users\user\Documents\Visual Studio 2008\Projects\PeShow\PeShow\FFabricanteNovo.cs 197 35 PeShow
Error 4 Argument '1': cannot convert from 'MySql.Data.MySqlClient.MySqlCommand' to 'string' C:\Users\user\Documents\Visual Studio 2008\Projects\PeShow\PeShow\FFabricanteNovo.cs 197 56 PeShow
Error 5 'System.Windows.Forms.BindingSource' does not contain a definition for 'Datasource' and no extension method 'Datasource' accepting a first argument of type 'System.Windows.Forms.BindingSource' could be found (are you missing a using directive or an assembly reference?) C:\Users\user\Documents\Visual Studio 2008\Projects\PeShow\PeShow\FFabricanteNovo.cs 205 16 PeShow
Error 6 The name 'dataresult' does not exist in the current context C:\Users\user\Documents\Visual Studio 2008\Projects\PeShow\PeShow\FFabricanteNovo.cs 205 29 PeShow
Da esses erros...
Continuei mesmo assim e executar o projeto, e vi ele joga as cidades no combo no entanto o label continua a mesma coisa quando seleciona outra cidade ele fica o uf com a antiga selecionada....
Coloquei assim e o outro dentro do load do form (que ja estava)
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e){commS = new MySqlCommand("select * from cidade Where uf=@uf");commS.Parameters.AddWithValue("@uf", this.comboBox1.SelectedItem);
MySqlDataAdapter da = new MySqlDataAdapter(commS, mConn);
DataTable dataresul = new DataTable();
da.Fill(dataresul);
BindingSource bs = new BindingSource();
bs.Datasource= dataresult;
{
label13.Visible = true;
this. label13.DataBindings.Add("Text", bs, "uf", true);
}
} -
-
desculpe - me mais continua com o mesmo error depois dessa modificacao...
commS = new MySqlCommand("select * from cidade Where uf=@uf");
##### ERROR AKI ######
MySqlDataAdapter da = new MySqlDataAdapter(commS, mConn);
nessa linha principalmente, o error eu sei oq eh mais nao vejo outra maneira de realizar oq desejo, esta bem claro o error o MYSQLDATAadatper nao aceita mysqlcommand como parametro , SÓ aceita string.
-
Veja isto http://www.java2s.com/Tutorial/CSharp/0560__ADO.Net/ExecutingaParameterizedQuerywithSqlCommand.htm
Just Be Humble Malange!- Sugerido como Resposta AndreAlvesLimaModerator sábado, 5 de junho de 2010 23:48
- Marcado como Resposta AndreAlvesLimaModerator segunda-feira, 7 de junho de 2010 22:14
-
Henrique,
Alguma novidade quanto a essa sua dúvida?
André Alves de Lima
Visite o meu site: http://andrealveslima.spaces.live.com
Me siga no Twitter: @andrealveslima -
Cara seguinte nunca trabalhei com mySql apenas com sqlServer então vou te mostrar como eu faria no seu caso usando o sql
Bom seguinte primeiro vamos uma tabela no banco de dados para armazenar suas cidades e ufs
então roda a seguinte scrip nele
CREATE TABLE tblCidade( nome varchar(50) NOT NULL, idC bigint NOT NULL, PRIMARY KEY(idC)) CREATE TABLE tblUF( nomeUF varchar(2) NOT NULL, idU bigint NOT NULL, PRIMARY KEY(idU)) CREATE TABLE ufCIDADE( idU bigint NOT NULL, idC bigint NOT NULL, FOREIGN KEY(idU) REFERENCES tblUF, FOREIGN KEY(idC)REFERENCES tblCidade)
depois disto insera seus dados na tabela e não se esqueça que a terceira tabela que citei aki é para relacionar as cidades com suas respectivas ufs então os ID de Cidade tem que corresponder com os IDs de UF para q o select q vou te passar de certo
Depois de criadas as tabelas va a seu projeto e crie uma classe que vai baixar os valores do banco
primeiro crie um método que preencha seu combobox e não se esqça de adicionar os namespaces System.Windows.Forms e System.Data.SqlCliente em sua classe
public ComboBox preencheCombo(ComboBoc cbx)
{
SqlConnection cnx = new SqlConnection();
cnx.ConnectionString = "Data source = caminho do banco;; initial catalog = nome do banco; integrated security = true";
string cmd = "select * from tblCidade";
SqlCommand comando = new SqlCommand(cmd, cnx);
cnx.Open();
SqlDataReader dr = comando.ExecuteNonReader();
while(dr.Read())
{
cbx.Items.Add((string)dr["nome"]);
}
cbx.Close();
return cbx;
}
coloque este método dentro do load do formulário q contem seu combo e passe o mesmo como parametro para este método
Feito isso vamos criar o outro método q retornara um label
public Label mostraUf(Label lbl, string busca)
{
SqlConnection cnx = new SqlConnection();
cnx.ConnectionString = "Data source = caminho do banco;; initial catalog = nome do banco; integrated security = true";
string cmd = "SELECT nomeUF FROM ufCIDADE inner join tblUF on tblUF.idU = ufCIDADE.idU where ufCIDADE.idC = (select tblCidade.idC from tblCidade where tblCidade.nome = '"+ busca+"')";
SqlCommand comando = new SqlCommand(cmd, cnx);
cnx.Open();
SqlDataReader dr = comando.ExecuteNonReader();
while(dr.Read())
{
lbl.Text = ((string)dr["nomeUF"]);
}
cbx.Close();
return lbl;
}
este método voce adicione dentro do evento private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
da seguinte maneira
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
SuaClasse obj = new SuaClasse();
obj.mostraUF(label1, comboBox1.SelectedItem.ToString());
}
faça isto e me diga qual foi seu resultado
Att Edney qlqr coisa só me procurar pelo forum
- Sugerido como Resposta AndreAlvesLimaModerator sábado, 5 de junho de 2010 23:48
- Editado Edney Batista Silva domingo, 6 de junho de 2010 00:14
- Marcado como Resposta AndreAlvesLimaModerator segunda-feira, 7 de junho de 2010 22:14
-
conseguiu resolver seu problema?
se nao gravo um video fazendo isso para você.
Contato:albertim_brasil@hotmail.com - Se ajudei, marca como útil.
Twitter: Me siga!!
Blog:http://dotnettime.spaces.live.com/ -
-
Boas, estou com um problema, estou usando o sql server, e estou a fazer uma aplicação movel com o VS 2008 na linguagem C#
-Tenho uma base de dados criada no sql server com o nome "teste2" com a tabela "utilizador"
-estou a aceder localmente, a conexao à base de dados é bem efectuada, mas não consigo fazer o select na base de dados para me apresentar os nomes todos da tabela. Desde já agradeço qualquer resposta...
segue-se o codigo:
using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace SmartDeviceProject25
{
public partial class dgform : Form
{
string Connection;
SqlConnection comm;
public dgform()
{
InitializeComponent();
}
private void Abre_ligacao(String ip,String porta,String nomeBd, String username, String password)
{
Connection = "Data Source=" + ip + "," + porta + ";Initial Catalog=" + nomeBd + ";User ID=" + username + ";Password=" + password + ";";
comm = new SqlConnection(Connection);
try
{
comm.Open();
}
catch
{
MessageBox.Show("Erro na ligação");
}
}
private void TestaSelect(string Connection)
{
string query = "SELECT nome FROM utilizador";
SqlDataReader dr = null;
try
{
SqlCommand cmd = comm.CreateCommand();
cmd.CommandText = query;
cmd.ExecuteNonQuery();
dr = cmd.ExecuteReader();
while (dr.Read())
{
String nome = dr["nome"].ToString();
MessageBox.Show(nome);
}
}
catch
{
MessageBox.Show("Erro no select");
}
}
private void button1_Click(object sender, EventArgs e)
{
Abre_ligacao("192.168.10.3", "1433", "teste2", "sa", "jerbas");
TestaSelect(Connection);
comm.Close();
}
}
} -
bom senhor ricardo tenta fazer da seguinte maneira
SqlConnection con = new SqlConnection(); public void testaSelect() { /*como tua conexão é local não precisa de ip, geralmente a padrão é o nome da máquina mais -pc supondo que tua máquina se chame Ricardo a string de conexão vai ficar assim "Ricardo-PC" isso por padrão mas lembrando que na instalação ela pode ter sido modificada então veja ela nas propriedades da tua tabela no banco de dados em Nome do Servidor/Server Name lá terá exatamente o q vc tem q usar depois do data source*/ con.ConnectionString = "Data Source= SUACONEXÃO;; Initial Catalog = teste2; Integrated Security=true"; string comando = "SELECT nome FROM utilizador"; SqlCommand cmd = new SqlCommand(comando, con); SqlDataReader dr = cmd.ExecuteReader(); while(dr.Read()) { string nome = (string)dr["nome"]; MessageBox.Show(nome.ToString()); } }
teste isto e nos diga o resultado blz
Att Edney;
qualquer coisa estamos pelo fórum