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