Boa noite,
Então cá vai, primeiro o código em C# para a app, e depois o SQL separado para veres como se faz. Porque eu já sei fazer, fazer mais uma vez, menos uma vez, não faz grande diferença, mas para quem está a aprender todas as tentativas, são um passo na "jornada de mil milhas".
private void DataGridDoMysql()
{
MySql.Data.MySqlClient.MySqlConnection conn;
string myConnectionString;
myConnectionString = "server=127.0.0.1;uid=root;" + "pwd=12345;database=test;";
try
{
conn = new MySql.Data.MySqlClient.MySqlConnection();
conn.ConnectionString = myConnectionString;
conn.Open();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
MessageBox.Show(ex.Message);
}
MySqlDataAdapter MyDataAdapter = new MySqlDataAdapter();
string sqlSelectAll = "Select euro2016.jogo.data as Data , euro2016.tipo_jogo.tipo_jogo as Fase , euro2016.estadio.nome as Estadio , euro2016.selecao.nome as Seleção_1, euro2016.jogo.golos_selecao_1 as Golos_1, euro2016.selecao.nome as Seleção_1 as selecao_2, euro2016.jogo.golos_selecao_2 as Golos_2 from euro2016.jogo left join euro2016.estadio on (euro2016.jogo.cod_estadio = euro2016.estadio.cod_estadio) left join euro2016.tipo_jogo on (euro2016.jogo.cod_tipo_jogo = euro2016.tipo_jogo.cod_tipo_jogo) left join euro2016.selecao on (euro2016.jogo.cod_selecao_1 = euro2016.selecao.cod_selecao)";
MyDA.SelectCommand = new MySqlCommand(sqlSelectAll, conn);
DataTable table = new DataTable();
MyDataAdapter.Fill(table);
BindingSource bSource = new BindingSource();
bSource.DataSource = table;
dataGridView1.DataSource = bSource;
//altera aos cabeçalhos da dataGrid
//como na tropa e na programação o zero também é numero
dataGridView1.Columns[3].HeaderText = "1ª Selecção";
dataGridView1.Columns[5].HeaderText = "2ª Selecção";
//altera a formatação da data na datagrid:
dataGrid.Columns[0].DefaultCellStyle.Format = "MM/dd/yyyy HH:MM:ss";
}
Update usando bindingDataSource:
private void ActualizarButton_Click(object sender, System.EventArgs e)
{
// Actualiza a base de dados com a informação que o utilizador colocou na datagridview
dataAdapter.Update((DataTable)bSource.DataSource);
}
SQL
Select
euro2016.jogo.data as Data ,
euro2016.tipo_jogo.tipo_jogo as Fase ,
euro2016.estadio.nome as Estadio ,
euro2016.selecao.nome as Seleção_1,
euro2016.jogo.golos_selecao_1 as Golos_1,
euro2016.selecao.nome as Seleção_1 as selecao_2,
euro2016.jogo.golos_selecao_2 as Golos_2
from euro2016.jogo
left join euro2016.estadio on (euro2016.jogo.cod_estadio = euro2016.estadio.cod_estadio)
left join euro2016.tipo_jogo on (euro2016.jogo.cod_tipo_jogo = euro2016.tipo_jogo.cod_tipo_jogo)
left join euro2016.selecao on (euro2016.jogo.cod_selecao_1 = euro2016.selecao.cod_selecao)
Adicionar informação como estas a usar bindingdatasource, tens tudo facilitado, caso contrario acabarias tendo de escrever um insert ou um update conforme fosse o caso.
E antes que me esqueça a questão dos códigos de selecção, foi de certeza distracção! Olha bem para o meu SQL e para o teu! Repara no nome dos campos!
Cordiais cumprimentos,
Apocsantos
↧