gpt4 book ai didi

c# - MySql 更改DataGridView 信息

转载 作者:行者123 更新时间:2023-11-28 23:21:35 24 4
gpt4 key购买 nike

我写了一个简单的程序,从 MySQL 填充数据网格。

在我的一个专栏中,我有一个 bool 值(0 或 1)

一旦 Datagrid 填充了查询,我就有了 bool 值的复选框。

有谁知道当您选中 bool 值的复选框时如何使用函数? (这是为了仅发送列 bool 值的更新。)

总而言之,当复选框被选中时,它会将 MySQL 数据库中的 bool 值从 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 - 实际上是倍数:

要重用的一级对象:

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 中创建所有需要的列并用行填充它。你知道的那部分。单击 2-3 个复选框以更改值,然后在按钮上按添加:

int rows = myDA.Update(myDT);

在调试下,如果您检查 rows 的值,它将与您更改的复选框的数量一样多。它还会在需要该操作的地方插入、删除或更新任意数量的行。

  • 无需创建连接。使用 MySqlDataAdapter(string, string) 构造函数重载,您传递连接字符串,它会创建一个供自己使用的连接。
  • 同样,它为 SELECT 命令创建一个 DBCommand 对象
  • MySQLCommandBuilder 然后使用 SelectCommand 创建更新、删除等 DataAdapter 将使用的命令。这允许您发出 1(一)次 Update 方法调用以更新 1、10 或 1000 行。
  • 处理单个表时,您的应用程序中可能不需要任何其他 SQL
  • DataAdapter 具有连接字符串,因此它打开和关闭自己的连接。

如果您为 DataTable 定义了 PrimaryKey,DA 也可以刷新数据 - 如果在应用程序外部对表进行了更改,例如其他用户,然后你可以选择那些新行。使用您自己的更改进行更新后:

var rows = myDA.Fill(myDT);

这是一个实际的刷新 - 它只会加载新行和对任何现有行的任何更改。请注意,原始 SQL 中的 WHERE 子句仍然适用。

如您所见,DataAdapter 的功能远不止填充DataTables;如果这就是您需要做的全部,您可以使用 DbCommandDataReader:

myDt.Load(cmd.ExecuteReader()):

关于c# - MySql 更改DataGridView 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41385959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com