Ciao ,
Mi sono avvicinato a C# da qualche giorno ed ho installato anche MariaDB.
Questo codice funzionante estrae una colonna dalla tabella e la visualizza tramite datagrid.
Mi sono aiutato con una guida iniziando allo stesso tempo ad approfondire l'argomento che riporto qui sotto
Dopo vari studi di XAML e MySQL non mi è chiaro un punto mentre spero che il resto sia giusto.
Il codice di sotto esegue secondo me questi passi:
- APERTURA: Impostiamo la string di connessione leggendola da ConnecionStrings.Tenta di aprire la connessione.
- COMANDO: Definiamo una query per estrarre la colonna Codifica dalla tabella tb1
- INTERFACCIA: Il DataAdapter che interfaccia il db mysql con il dataset eseguendo comandi. Fa da ponte (Bridge)
- MEMORIA: Il dataset un'area di memoria dove sono memorizzati i dati di uno o piu tabelle pronta per essere letta o scritta.
public partial class MainWindow : Window
{
#region MySqlConnection Connection
MySqlConnection connection = new MySqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
public MainWindow()
{
InitializeComponent();
testDB();
}
#endregion
private void testDB()
{
try
{
connection.Open();
MySqlCommand cmd = new MySqlCommand("SELECT Codifica FROM tb1;", connection);
MySqlDataAdapter adp = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
adp.Fill(ds, "LoadDataBinding");
dataGridCustomers.DataContext = ds;
}
catch (MySqlException ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
connection.Close();
}
}
}
Nel codice XAML
<Grid HorizontalAlignment="Left" Height="310" VerticalAlignment="Top" Width="625">
<DataGrid AutoGenerateColumns="False" HorizontalAlignment="Left" Margin="14,55,0,46" Name="dataGridCustomers" Width="575" itemsSource="{Binding Path=LoadDataBinding}" CanUserResizeRows="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Codifica}" Header="Codifica" Width="100" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
</Grid>
Il dataGrid assume come nome DataGridCustomers e viene popolato con i dati del DataSet ds.
Il loadDataBinding immagino sia necessario per "copiare" i dati dal dataset al datagrid.
Nell'help di MSDN la sintassi FILL è Fill( Dataset, String) dove string è una tabella
Non ho capito cos'è LoadDataBinding, non credo sia una tabella
Credo che "da li passano i dati verso la parte grafica" , ma non ho capito