Bug #4658 MySqlCommandBuilder
Description:
Bug with DataAdapter Property of MySqlCommandBuilder class.
Using:
-----------------------
MySqlCommandBuilder cb=new MySqlCommandBuilder();
cb.DataAdapter=myDataAdapter1;
...
myDataAdapter.Update(dataSet1, "TableName");
-----------------------
gives an error :
A atualização requer um UpdateCommand válido para transmitir coleção DataRow com linhas modificadas.
"The Updating requery a valid UpdateCommand to transmit DataRow collection with modified lines."
How to repeat:
using System;
using System.Windows.Forms;
using System.Data;
using ByteFX.Data.MySqlClient;
using MySQLDriverCS;
namespace DefaultNamespace
{
public class MainForm : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
private System.Windows.Forms.DataGrid dataGrid1;
private System.Windows.Forms.Button button2;
private MySqlDataAdapter da;
private DataSet ds;
private MySqlConnection conn;
public MainForm()
{
InitializeComponent();
}
[STAThread]
public static void Main(string[] args)
{
Application.Run(new MainForm());
}
#region Windows Forms Designer generated code
private void InitializeComponent() {
this.button2 = new System.Windows.Forms.Button();
this.dataGrid1 = new System.Windows.Forms.DataGrid();
this.button1 = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
this.SuspendLayout();
//
// button2
//
this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.button2.Location = new System.Drawing.Point(128, 232);
this.button2.Name = "button2";
this.button2.TabIndex = 2;
this.button2.Text = "Update";
this.button2.Click += new System.EventHandler(this.Button2Click);
//
// dataGrid1
//
this.dataGrid1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.dataGrid1.DataMember = "";
this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
this.dataGrid1.Location = new System.Drawing.Point(8, 8);
this.dataGrid1.Name = "dataGrid1";
this.dataGrid1.Size = new System.Drawing.Size(280, 208);
this.dataGrid1.TabIndex = 0;
//
// button1
//
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.button1.Location = new System.Drawing.Point(216, 232);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(72, 24);
this.button1.TabIndex = 1;
this.button1.Text = "Retrieve";
this.button1.Click += new System.EventHandler(this.Button1Click);
//
// MainForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.Controls.Add(this.dataGrid1);
this.Name = "MainForm";
this.Text = "MainForm";
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
this.ResumeLayout(false);
}
#endregion
void Button1Click(object sender, System.EventArgs e)
{
conn=new MySqlConnection("Database=cahti;Data Source=netserver;User Id=root;Password=xxx");
conn.Open();
da=new MySqlDataAdapter("SELECT * FROM cob_clientesaparthotel",conn);
MySqlCommandBuilder cb=new MySqlCommandBuilder();
-----------------------------------------------------------------------------
cb.DataAdapter=da; //does not work properly
-----------------------------------------------------------------------------
ds=new DataSet();
da.Fill(ds,"Clientes");
dataGrid1.SetDataBinding(ds,"Clientes");
}
void Button2Click(object sender, System.EventArgs e)
{
da.Update(ds, "Clientes");
}
}
}
Suggested fix:
Using:
-----------------------
MySqlCommandBuilder cb=new MySqlCommandBuilder(myDataAdapter1);
//cb.DataAdapter=myDataAdapter1;
...
myDataAdapter.Update(dataSet1, "TableName");
-----------------------
solve the problem.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.050 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.
Description: Bug with DataAdapter Property of MySqlCommandBuilder class. Using: ----------------------- MySqlCommandBuilder cb=new MySqlCommandBuilder(); cb.DataAdapter=myDataAdapter1; ... myDataAdapter.Update(dataSet1, "TableName"); ----------------------- gives an error : A atualização requer um UpdateCommand válido para transmitir coleção DataRow com linhas modificadas. "The Updating requery a valid UpdateCommand to transmit DataRow collection with modified lines." How to repeat: using System; using System.Windows.Forms; using System.Data; using ByteFX.Data.MySqlClient; using MySQLDriverCS; namespace DefaultNamespace { public class MainForm : System.Windows.Forms.Form { private System.Windows.Forms.Button button1; private System.Windows.Forms.DataGrid dataGrid1; private System.Windows.Forms.Button button2; private MySqlDataAdapter da; private DataSet ds; private MySqlConnection conn; public MainForm() { InitializeComponent(); } [STAThread] public static void Main(string[] args) { Application.Run(new MainForm()); } #region Windows Forms Designer generated code private void InitializeComponent() { this.button2 = new System.Windows.Forms.Button(); this.dataGrid1 = new System.Windows.Forms.DataGrid(); this.button1 = new System.Windows.Forms.Button(); ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit(); this.SuspendLayout(); // // button2 // this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.button2.Location = new System.Drawing.Point(128, 232); this.button2.Name = "button2"; this.button2.TabIndex = 2; this.button2.Text = "Update"; this.button2.Click += new System.EventHandler(this.Button2Click); // // dataGrid1 // this.dataGrid1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.dataGrid1.DataMember = ""; this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText; this.dataGrid1.Location = new System.Drawing.Point(8, 8); this.dataGrid1.Name = "dataGrid1"; this.dataGrid1.Size = new System.Drawing.Size(280, 208); this.dataGrid1.TabIndex = 0; // // button1 // this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.button1.Location = new System.Drawing.Point(216, 232); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(72, 24); this.button1.TabIndex = 1; this.button1.Text = "Retrieve"; this.button1.Click += new System.EventHandler(this.Button1Click); // // MainForm // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 266); this.Controls.Add(this.button2); this.Controls.Add(this.button1); this.Controls.Add(this.dataGrid1); this.Name = "MainForm"; this.Text = "MainForm"; ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit(); this.ResumeLayout(false); } #endregion void Button1Click(object sender, System.EventArgs e) { conn=new MySqlConnection("Database=cahti;Data Source=netserver;User Id=root;Password=xxx"); conn.Open(); da=new MySqlDataAdapter("SELECT * FROM cob_clientesaparthotel",conn); MySqlCommandBuilder cb=new MySqlCommandBuilder(); ----------------------------------------------------------------------------- cb.DataAdapter=da; //does not work properly ----------------------------------------------------------------------------- ds=new DataSet(); da.Fill(ds,"Clientes"); dataGrid1.SetDataBinding(ds,"Clientes"); } void Button2Click(object sender, System.EventArgs e) { da.Update(ds, "Clientes"); } } } Suggested fix: Using: ----------------------- MySqlCommandBuilder cb=new MySqlCommandBuilder(myDataAdapter1); //cb.DataAdapter=myDataAdapter1; ... myDataAdapter.Update(dataSet1, "TableName"); ----------------------- solve the problem.