Позвольте мне быть конкретным:
В моем проекте есть следующие компоненты:
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;
}
}
}
Надеюсь, вы ответите на мой вопрос ... Более того, необходимо ли использовать метод заполнения адаптера, чтобы заполнять только набор данных, а не набор данных?