MySql 更改 DataGridView 信息
MySql Change DataGridView Information
我写了一个简单的程序,从 MySQL
.
填充数据网格
在我的一个专栏中,我有一个布尔值(0 或 1)
一旦 Datagrid 填充了查询,我就有了布尔值的复选框。
有谁知道当您选中布尔值的复选框时如何使用函数? (这是为了仅发送列布尔值的更新。)
总而言之,选中复选框后,它会将 MySQL
数据库中的布尔值从 0 更改为 1。
我遇到这个问题的原因很简单,因为 Datagrid 在我 运行 应用程序之前不会填充。因此,我不知道如何在 visual studio.
中更改它
DGV 的填充方式:
MySqlConnection conn = new MySqlConnection(dbConnection);
conn.Open();
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;
MySqlDataAdapter da = new MySqlDataAdapter();
//SQL Query String
string sqlSelectAll = "SELECT * FROM `Tasks` WHERE `Completed` = 0";
da.SelectCommand = new MySqlCommand(sqlSelectAll, conn);
DataTable table = new DataTable();
da.Fill(table);
BindingSource bSource = new BindingSource();
bSource.DataSource = table;
dataGridView1.DataSource = bSource;
任何帮助将不胜感激。
注:
我试过在VS2015中使用数据配置管理器,这导致了一个与此无关的完全不同的错误。所以那是不可能的。
如果您坚持 DataAdapter
,它将为您应用对基础 DataTable
的所有更改 - 实际上是倍数:
要重复使用的第一个 class 级对象:
public partial class Form1 : Form
MySQLDataAdapter myDA;
DataTable myDT;
string dbConnStr = "server=..."
然后你初始化所有东西的地方:
string sql = "SELECT A, B, C, D... FROM `Tasks`";
// create the DT
myDT = new DataTable();
// The Adapter can create its own Connection
// and SelectCommand
myDA = new MySqlDataAdapter(sql, dbConnStr);
MySqlCommandBuilder cb = new MySqlCommandBuilder(myDA);
// "teach" the DA how to Update and Add:
myDA.UpdateCommand = cb.GetUpdateCommand();
myDA.InsertCommand = cb.GetInsertCommand();
myDA.DeleteCommand = cb.GetDeleteCommand();
myDA.Fill(myDT);
myDA.FillSchema(myDT, SchemaType.Source);
dgv1.DataSource = myDT;
这应该会在 DGV 中创建所有需要的列并用行填充它。那部分你have/know。单击 2-3 个复选框以更改值,然后在按钮上按添加:
int rows = myDA.Update(myDT);
在调试下,如果您检查 rows
的值,它将与您更改的复选框的数量一样多。它还会在需要该操作的地方插入、删除或更新任意数量的行。
- 无需创建连接。使用
MySqlDataAdapter(string, string)
构造函数重载,您传递连接字符串,它会创建一个供自己使用的连接。
- 同样,它为 SELECT 命令
创建了一个 DBCommand 对象
MySQLCommandBuilder
然后使用 SelectCommand
创建 DataAdapter
将使用的更新、删除等命令。这允许您发出 1(一个)Update
方法调用来更新 1、10 或 1000 行。
- 处理单个 table 时,您的应用程序中可能不需要任何其他 SQL
DataAdapter
有连接字符串,所以它打开和关闭自己的连接。
如果您为 DataTable
定义 PrimaryKey
,DA 也可以刷新数据 - 如果在应用程序外部对 table 进行了更改,例如由其他用户更改,然后你可以选择那些新行。使用您自己的更改进行更新后:
var rows = myDA.Fill(myDT);
这是一次实际的刷新 - 它只会加载新行和对任何现有行的任何更改。请注意,原始 SQL 中的 WHERE 子句仍然适用。
如您所见,DataAdapter
的功能远不止填充 DataTables
;如果这就是您需要做的全部,您可以使用 DbCommand
和 DataReader
:
myDt.Load(cmd.ExecuteReader()):
我写了一个简单的程序,从 MySQL
.
在我的一个专栏中,我有一个布尔值(0 或 1)
一旦 Datagrid 填充了查询,我就有了布尔值的复选框。
有谁知道当您选中布尔值的复选框时如何使用函数? (这是为了仅发送列布尔值的更新。)
总而言之,选中复选框后,它会将 MySQL
数据库中的布尔值从 0 更改为 1。
我遇到这个问题的原因很简单,因为 Datagrid 在我 运行 应用程序之前不会填充。因此,我不知道如何在 visual studio.
中更改它DGV 的填充方式:
MySqlConnection conn = new MySqlConnection(dbConnection);
conn.Open();
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;
MySqlDataAdapter da = new MySqlDataAdapter();
//SQL Query String
string sqlSelectAll = "SELECT * FROM `Tasks` WHERE `Completed` = 0";
da.SelectCommand = new MySqlCommand(sqlSelectAll, conn);
DataTable table = new DataTable();
da.Fill(table);
BindingSource bSource = new BindingSource();
bSource.DataSource = table;
dataGridView1.DataSource = bSource;
任何帮助将不胜感激。
注:
我试过在VS2015中使用数据配置管理器,这导致了一个与此无关的完全不同的错误。所以那是不可能的。
如果您坚持 DataAdapter
,它将为您应用对基础 DataTable
的所有更改 - 实际上是倍数:
要重复使用的第一个 class 级对象:
public partial class Form1 : Form
MySQLDataAdapter myDA;
DataTable myDT;
string dbConnStr = "server=..."
然后你初始化所有东西的地方:
string sql = "SELECT A, B, C, D... FROM `Tasks`";
// create the DT
myDT = new DataTable();
// The Adapter can create its own Connection
// and SelectCommand
myDA = new MySqlDataAdapter(sql, dbConnStr);
MySqlCommandBuilder cb = new MySqlCommandBuilder(myDA);
// "teach" the DA how to Update and Add:
myDA.UpdateCommand = cb.GetUpdateCommand();
myDA.InsertCommand = cb.GetInsertCommand();
myDA.DeleteCommand = cb.GetDeleteCommand();
myDA.Fill(myDT);
myDA.FillSchema(myDT, SchemaType.Source);
dgv1.DataSource = myDT;
这应该会在 DGV 中创建所有需要的列并用行填充它。那部分你have/know。单击 2-3 个复选框以更改值,然后在按钮上按添加:
int rows = myDA.Update(myDT);
在调试下,如果您检查 rows
的值,它将与您更改的复选框的数量一样多。它还会在需要该操作的地方插入、删除或更新任意数量的行。
- 无需创建连接。使用
MySqlDataAdapter(string, string)
构造函数重载,您传递连接字符串,它会创建一个供自己使用的连接。 - 同样,它为 SELECT 命令 创建了一个 DBCommand 对象
MySQLCommandBuilder
然后使用SelectCommand
创建DataAdapter
将使用的更新、删除等命令。这允许您发出 1(一个)Update
方法调用来更新 1、10 或 1000 行。- 处理单个 table 时,您的应用程序中可能不需要任何其他 SQL
DataAdapter
有连接字符串,所以它打开和关闭自己的连接。
如果您为 DataTable
定义 PrimaryKey
,DA 也可以刷新数据 - 如果在应用程序外部对 table 进行了更改,例如由其他用户更改,然后你可以选择那些新行。使用您自己的更改进行更新后:
var rows = myDA.Fill(myDT);
这是一次实际的刷新 - 它只会加载新行和对任何现有行的任何更改。请注意,原始 SQL 中的 WHERE 子句仍然适用。
如您所见,DataAdapter
的功能远不止填充 DataTables
;如果这就是您需要做的全部,您可以使用 DbCommand
和 DataReader
:
myDt.Load(cmd.ExecuteReader()):