C# Listbox para Datagridview

NightShade

Power Member
Boas pessoal..
Preciso de uma ajuda, já estou farto de procurar e não consigo resolver...

tenho este programa:



do lado esquerdo uma listbox que vai buscar os dados a uma Base de dados, neste caso a tabela País.
Do lado direito uma datagridview onde quero mostrar os nomes dos jogadores do país que está selecionado na listbox.

o codigo que tenho no form é este:

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string selectedIte = listBox1.SelectedItem.ToString();
string q = "SELECT * FROM Equipa WHERE ColumnName = @nome'" + selectedIte + "'";
SqlDataAdapter da = new SqlDataAdapter(q, "connString");
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
}

o que estou a fazer de mal?

Cumprimentos
 
Esse SQL está um pouco estranho. Por exemplo, se escolheres "Brazil", o teu SQL fica assim:
Código:
SELECT * FROM Equipa WHERE ColumnName = @nome'Brazil'

Outra coisa que acho estranho é teres um parâmetro logo no SQL. Nunca usei os parâmetros de SQL assim, logo não sei se funciona ou não.
Se funcionar dessa forma, tens que adicionar o valor desse parâmetro depois de especificares o SQL:
Código:
rivate void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selectedIte = listBox1.SelectedItem.ToString();
            [B]string q = "SELECT * FROM Equipa WHERE ColumnName = @nome'";[/B]
            SqlDataAdapter da = new SqlDataAdapter(q, "connString");

[B]da.SelectCommand.Parameters.Add("@nome'", SqlDbType.VarChar, 255) // Substitui o 255 pelo comprimento que tens na tua DB para o campo
da.SelectCommand.Parameters["@nome"].value = selectedIt;
[/B]
            DataTable dt = new DataTable();
            da.Fill(dt);
            dataGridView1.DataSource = dt;
        }

Como disse antes, não sei se te deixam usar parâmetros quando fazes o código SQL em RunTime. Como alternativa, ou crias um "Stored Procedure" e chamas-o a partir do código ou então constróis a tua query em RunTime.
 
Back
Topo