更新后的数据集空行

本文关键字:数据集 更新 | 更新日期: 2023-09-27 18:16:33

我正在从mysql表中填充gridview

   public void Init()
   {    
       DataSet dataset = new DataSet();
       dataset = FillGrid();
       bindingSorce.DataSource = dataset.Tables[0];
       gridControl1.DataSource = bindingSorce;
   }
      public static DataSet FillGrid()
    {
        MySqlConnection newConnection = new MySqlConnection(_connectionString);
        try
        {
            DataSet dataset = new DataSet();
            newConnection.Open();
            if (newConnection.State.ToString() == "Open")
            {
                MySqlCommand cmd = new MySqlCommand();
                cmd.Connection = newConnection;
                cmd.CommandText = "SELECT * FROM main";
                MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
                adapter.Fill(dataset);
            }
            else
            {
                return null;
            }
            newConnection.Close();
            return dataset;
        }
        catch { return null; }
      }

任何更改后,我试图更新mysql表

    private void gridView1_RowUpdated(object sender, EventArgs e)
    {
        try
        {
            BindingSource bs = (BindingSource)gridView1.DataSource;
            DataTable changes = ((DataTable)bs.DataSource).GetChanges();       
            if (changes != null)
            {
                bool asd = UpdateGrid(changes);
                ((DataTable)((BindingSource)gridView1.DataSource).DataSource).AcceptChanges();
            }
        }
        catch { }
    }
    public static bool UpdateGrid(DataTable datatable)
    {
        MySqlConnection newConnection = new MySqlConnection(_connectionString);
        //try
        {
            newConnection.Open();
            if (newConnection.State.ToString() == "Open")
            {
                MySqlCommand cmd = new MySqlCommand();
                cmd.Connection = newConnection;
                cmd.CommandText = "SELECT * FROM main";
                MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
                MySqlCommandBuilder cmb = new MySqlCommandBuilder(adapter);
                //adapter.UpdateCommand = cmb.GetUpdateCommand();
                //adapter.Update(datatable);
                cmb.GetUpdateCommand();
                adapter.Update(datatable);
            }
            else
            {
                return false;
            }
            newConnection.Close();
            return true;
        }
        // catch { return false; }
    }

和表真正更新,但如果在那之后,我将调用Init()然后FillGrid()将返回数据集与正确的列,但没有行!重新启动程序后,填充将正常工作,但再次更新将具有相同的效果

更新后的数据集空行

我在升级MySQL数据库版本后开始面临同样的问题。

我开发了一个c#应用程序,查询MySQL数据库并使用MySqlDataAdapter Fill()方法填充几个数据格。开发环境中的数据库版本为MySQL Server 5.1.38。当我在服务器上安装最终数据库时,我使用了同一版本的最新版本MySQL Server 5.1.73

当我开始测试应用程序时,我开始遇到完全相同的问题:每当通过数据网格对数据进行任何更改时,数据库都会正确更新,但此后,查询数据库的应用程序中的任何数据网格都会返回0行。在网上搜索后,我发现只有两三个帖子提到了同样的问题,但没有答案。到目前为止,摆脱它的唯一方法是卸载升级5.1.73并再次安装5.1.38版本。