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;如果这就是您需要做的全部,您可以使用 DbCommandDataReader:

myDt.Load(cmd.ExecuteReader()):