Mysql 如何将在我的DataGridView中所做的更改应用回DataTable而不是数据库?

Mysql 如何将在我的DataGridView中所做的更改应用回DataTable而不是数据库?,mysql,winforms,datagrid,datagridview,Mysql,Winforms,Datagrid,Datagridview,让我具体地说: 我的项目中包含以下组件: 1) 形式 2) 文本框 3) 钮扣 4) DataGridView 5) 一个名为Database的类-它拥有与数据库交互的所有代码,这意味着它可以插入、更新、删除等 我在文本框中键入所需的名称,按下按钮,然后通过数据库函数进行查询,以检索所需的数据。我的数据库类总是在“DATATABLE”中返回“SELECT”查询结果 我收到一个名为DATATABLE DT variable的变量中的“DATATABLE”。然后,我只编写dgv.datasource

让我具体地说:

我的项目中包含以下组件: 1) 形式 2) 文本框 3) 钮扣 4) DataGridView 5) 一个名为Database的类-它拥有与数据库交互的所有代码,这意味着它可以插入、更新、删除等

我在文本框中键入所需的名称,按下按钮,然后通过数据库函数进行查询,以检索所需的数据。我的数据库类总是在“DATATABLE”中返回“SELECT”查询结果

我收到一个名为DATATABLE DT variable的变量中的“DATATABLE”。然后,我只编写dgv.datasource.DT代码,然后所有数据都显示在DataGridView中

现在的问题是,在dgv中所做的更改将如何反映在datatable中,这样我就可以将更新后的datatable传递回数据库

这是我的数据库代码:

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 System.Data.SqlClient;
using MySql.Data.MySqlClient;


namespace GSK.DBLayer
{
    class Database
    {
        //Declarations
        MySqlConnection conn;
        MySqlCommand cmd;
        MySqlDataAdapter da;
        MySqlCommandBuilder cb;
        DataTable DT;

        int pCount;
        string connectionString = "SERVER=localhost; DATABASE=gsk; UID=root;";
        //string connectionString = "Data Source=localhost; Initial Catalog=GSK; Integrated Security=True";

        //Execute Queries
        public void AccessDB(string sqlQuery)
        {
            try
            {
                conn = new MySqlConnection(connectionString);
                cmd = new MySqlCommand(sqlQuery, conn);

                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
                MessageBox.Show("Your request served successfully!", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

            catch (MySqlException ex)
            {
                MessageBox.Show("Unable to serve your request!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        //Search Multiple Work
        public DataTable Search(string sqlQuery)
        {
            try
            {
                conn = new MySqlConnection(connectionString);

                conn.Open();

                da = new MySqlDataAdapter(sqlQuery, conn);
                cb = new MySqlCommandBuilder(da);
                DT = new DataTable();
                da.Fill(DT);

                conn.Close();
                da.Dispose(); //Memory Free...
            }

            catch (MySqlException ex)
            {
                MessageBox.Show("Unable to access data!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            return DT;
        }


        //---------------------------------------------------------------------------



       //-----------------------------------------------------------------------


        //Get Max Product Count
        public int GetMaxPdCount(string sqlQuery)
        {
            try
            {
                conn = new MySqlConnection(connectionString);
                cmd = new MySqlCommand(sqlQuery, conn);

                conn.Open();
                pCount = Convert.ToInt32(cmd.ExecuteScalar());
                conn.Close();
            }

            catch (MySqlException ex)
            {
                MessageBox.Show("Cannot Get Max Product Count!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            return pCount;
        }
    }
}

希望你明白我的问题。。。还有一件事,是否需要使用适配器填充方法仅填充数据集而不是数据表?

这可能会帮助您……

public DataTable returnTable(GridView gvName)
{ 
    DataTable dt=null;

    try
    {
        dt=(DataTable)gvName.DataSource;
    }
    catch (Exception ex)
    {
        throw ex;
    }

    return dt;
}

好的,让我考虑一下我的更改现在在DATABATE中。现在,如何将此datatable传递给我的数据库类,以便我也可以更新MYSQL数据库?我没有您的确切代码…但我觉得本文可能会对您有所帮助…使用dataadapter的Updatecommand在数据库中反映更改的数据。。。。