C# MySQL Aggiornamento – Datagridview

In un C# Windows Form ho due pulsanti; e Query di Aggiornamento. In che forma è un datagridview dove ho messo la mia MySQL risultati. Con la separazione, quando faccio clic su Query ottengo correttamente i risultati. Quando si modifica un valore in datagrid e fare clic su Aggiorna, MySQL riceve gli aggiornamenti. Tuttavia, quando torno a fare clic su Query per ottenere le ultime modifiche da tabella di MySQL, il datagridview è vuoto. Devo chiudere il modulo e ri-fare clic su Query per poter finalmente apparire.

È presente una funzione di non chiamare la da.update() correttamente o si fa riferimento a qualcosa di sbagliato nella Query pulsante?

Qui è il codice da winform:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Data.Odbc;
using System.Data.SqlClient;

namespace GridAdjustments
{
    public partial class Form3 : Form
    {
        private MySqlDataAdapter da;        //Data Adapter
        private DataSet ds;                 //Dataset
        private string sTable = "Portfolio";  //Table Name

        public Form3()
        {
            InitializeComponent();
        }


        private void Query_Click(object sender, EventArgs e)
        {
            string connectionString = "SERVER=localhost;" +
                                      "UID=xxxxxx;" +
                                      "PASSWORD=xxxxx;" +
                                      "DATABASE=test";

            MySqlConnection conn = null;

            try
            {    
                conn = new MySqlConnection(connectionString);

                conn.Open();
                da = new MySqlDataAdapter("SELECT * FROM books;", conn);
                ds = new DataSet();
                da.Fill(ds, sTable);
                conn.Close(); 
            }
            catch (MySql.Data.MySqlClient.MySqlException ex)
            {
                MessageBox.Show(ex.Message);
                conn.Close();
            }
            finally
            {
                dataGridView1.Refresh();

                dataGridView1.DataSource = ds;
                dataGridView1.DataMember = sTable;

            }  
        }


        private void Update_Click(object sender, EventArgs e)
        {
            MySqlCommandBuilder cmb = new MySqlCommandBuilder(da);

            da.Update(ds, sTable);
        }
    }
}

OriginaleL’autore JAS | 2012-10-05

3 risposte

  1. 0

    Provare a modificare il codice, e verificare se funziona per voi.

    private void Query_Click(object sender, EventArgs e)
    {
        try
        {    
            MySqlConnection conn = new MySqlConnection(connectionString);
            conn.Open();
            da = new MySqlDataAdapter("SELECT * FROM books;", conn);
            ds = new DataSet();
            da.Fill(ds, sTable);
            conn.Close(); 
        }
        catch (MySql.Data.MySqlClient.MySqlException ex)
        {
            MessageBox.Show(ex.Message);            
        }
        finally
        {
            dataGridView1.Refresh();
    
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = sTable;
    
            if (conn.State == System.Data.ConnectionState.Open)
                conn.Close();
        }  
    }
    
    private void Update_Click(object sender, EventArgs e)
    {
        try
        { 
            MySqlConnection conn = new MySqlConnection(connectionString);
            conn.Open();
    
            MySqlCommandBuilder cmb = new MySqlCommandBuilder(da);
            cmb.Connection = conn;
            da.Update(ds, sTable);
        }
        catch (MySql.Data.MySqlClient.MySqlException ex)
        {
            MessageBox.Show(ex.Message);            
        }
        finally
        {           
            if (conn.State == System.Data.ConnectionState.Open)
                conn.Close();
        }  
    }
    Ero ancora in grado di farlo funzionare correttamente e ha ricominciato. Il seguente lavoro: MySqlConnection myConn = new MySqlConnection(connectionString); da = new MySqlDataAdapter(); da.SelectCommand = new MySqlCommand(mySelectQuery, myConn); MySqlCommandBuilder cb = new MySqlCommandBuilder(da); myConn.Open(); //da.Fill(ds, stabile); da.Update(ds, stabile); myConn.Close();
    Si prega di considerare aggiungendo questo codice come risposta. Di sicuro mi ha aiutato!

    OriginaleL’autore Furqan Safdar

  2. 0

    Il tuo approccio funziona per il semplice query come avete qui, ma dire che è voluto essere l’autore e l’URL nella forma:

    “SELECT libri.*, trim(autore.URL Sito DAI libri left join autore di libri.AuthorID = autore.RecordID gruppo di libri.nome;

    Ho aggiunto il Trim() e perché il MySQLConnector non supporta la modifica di più di un tavolo alla volta, e un campo calcolato opere, fino a quando si desidera aggiornare.

    Per ora è qualcosa da tenere a mente, come non ho una soluzione, ma io continuare a scavare.

    OriginaleL’autore ChicoryMan

  3. 0

    provare questo.
    riassociare l’origine dati per aggiornare il DG dopo l’aggiornamento.

       private void Update_Click(object sender, EventArgs e)
        {
            MySqlCommandBuilder cmb = new MySqlCommandBuilder(da);
    
            da.Update(ds, sTable);
    
            dataGridView1.DataSource = ds;      
    
        }

    OriginaleL’autore Justin Adrias

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *