Как применить изменения, сделанные в моем DataGridView обратно к DataTable, чем к базе данных? - PullRequest
0 голосов
/ 06 января 2012

Позвольте мне быть конкретным:

В моем проекте есть следующие компоненты: 1) Форма 2) Текстовое поле 3) Кнопка 4) DataGridView 5) Класс с именем Database - он имеет весь код для взаимодействия с базой данных, что означает, что он может вставлять, обновлять, удалять и т. Д.

Я набираю нужное имя в текстовом поле, нажимаю кнопку, а затем выполняется запрос функции базы данных для извлечения нужных данных. Мой класс базы данных всегда возвращает мне результаты запроса «SELECT» в виде «DATATABLE».

Я получаю «DATATABLE» в переменной с именем DataTable DT. Затем я пишу этот код просто dgv.datasource.DT, тогда все мои данные отображаются в DataGridView.

Теперь вопрос в том, как изменения, внесенные в мой dgv, будут отражены в таблице данных, чтобы потом я мог передать свой обновленный файл данных обратно в базу данных.

Это код моей базы данных:

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;
        }
    }
}

Надеюсь, вы ответите на мой вопрос ... Более того, необходимо ли использовать метод заполнения адаптера, чтобы заполнять только набор данных, а не набор данных?

1 Ответ

0 голосов
/ 06 января 2012

Пусть это вам поможет ...

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

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

    return dt;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...