private void DeleteBtn_Click(object sender, EventArgs e)
        {
            Query query = new Query(con);


            if (DisplayGrid.SelectedRows.Count > 0)
            {
                try
                {
                    for (int i = 0; i < DisplayGrid.SelectedRows.Count; i++)
                    {
                        query.Delete(TableComboBox.SelectedItem.ToString(), DisplayGrid.Columns[0].Name, DisplayGrid.SelectedRows[i].Cells[0].Value.ToString());
                    }
                    MessageBox.Show("record eliminati dal database con successo");
                }
                catch
                {
                    MessageBox.Show("Errore");
                }
            }
            else
            {
                MessageBox.Show("Seleziona le righe da eliminare");
            }
        }
 //riempie la combobox coi nomi delle tabelle del database
 protected virtual void FillTableComboBox()
 {
     Query qu = new Query(con);
     List<string> Tables = qu.getTableNames();
     //aggiunge gli elementi alla combobox
     for (int i = 0; i < Tables.Count; i++)
     {
         TableComboBox.Items.Add(Tables[i]);
     }
 }
        private void AddBtn_Click(object sender, EventArgs e)
        {
            Query query = new Query(this.conn);

            try { 
             query.insertInto(TableComboBox.SelectedItem.ToString(), concatItems(), getNewValues());
               MessageBox.Show("Record aggiunto al database con successo");
            }
            catch
            {
              MessageBox.Show("errore,probabilmente non hai aggiunto l'alias");
            }

        }
        //concatena i nomi delle colonne in una stringa
        private string concatItems()
        {
            Query query = new Query(this.conn);

            string values = query.getColumnNames(TableComboBox.SelectedItem.ToString())[0] + ",";

            for (int i = 0; i < ColumnsList.Items.Count; i++)
            {
                string comma = "";
                if (i != ColumnsList.Items.Count - 1) { comma = ","; }

                values += ColumnsList.Items[i].ToString() + comma;
            }
            return values;
        }
        //quando viene selezionata una nuova tabella,cambia i nomi delle colonne nella checkedlistbox
       virtual protected void TableComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            ColumnsList.Items.Clear();
            

            Query qu = new Query(con);
            int index = TableComboBox.SelectedIndex;
            List<string> Columns = qu.getColumnNames(TableComboBox.Items[index].ToString());

            //aggiunge le colonne alla checkedlistbox
            for (int i = 1; i < Columns.Count; i++)
            {
                ColumnsList.Items.Add(Columns[i]);
            }
        }
       virtual protected void button1_Click(object sender, EventArgs e)
        {

           DisplayGrid.Columns.Clear();

           con = new ConnectionHandler();

           Query quer = new Query(con);

            if (ColumnsList.CheckedItems.Count > 0) {
                List<List<string>> lis = quer.Select(TableComboBox.SelectedItem.ToString(), concatCheckedItems(), getCheckedItems());
                FillDataGridView(lis);
            }
            else { MessageBox.Show("Seleziona degli elementi"); }
        }
        //scrive i nomi delle colonne nella datagrid
        private void InitializeDatagrid()
        {
            Query query = new Query(this.conn);
            List<string> columnNames = query.getColumnNames(TableComboBox.SelectedItem.ToString());

            newValuesGrid.Columns.Clear();

            newValuesGrid.ColumnCount = columnNames.Count;


            for (int i = 0; i < columnNames.Count; i++)
            {
                newValuesGrid.Columns[i].Name =columnNames[i];
            }

        }
 private void UpdateBtn_Click(object sender, EventArgs e)
 {
     if (DisplayGrid.SelectedRows.Count > 0)
     {
         Query query = new Query(con);
        
         try
         {   
             for (int i = 0; i < DisplayGrid.SelectedRows.Count; i++)
             {
                 query.Update(TableComboBox.SelectedItem.ToString(), concatItems(i), DisplayGrid.Columns[0].Name,DisplayGrid.SelectedRows[i].Cells[0].Value.ToString());
             }
             MessageBox.Show("record aggiornati  con successo");
         }
         catch
         {
             MessageBox.Show("Errore");
         }
     }
     else
     {
         MessageBox.Show("Seleziona il record da aggiornare");
     }
 }
        //converte la lista degli elementi selezionati in una lista di stringhe
        protected virtual List<string> getCheckedItems()
        {
            List<string> lista = new List<string>();

            Query query = new Query(this.con);

            lista.Add(query.getColumnNames(TableComboBox.SelectedItem.ToString())[0]);
            for (int i = 0; i < ColumnsList.CheckedItems.Count; i++)
            {
                lista.Add(ColumnsList.CheckedItems[i].ToString());
            }
            return lista;
        }