首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据集在更新后为空行

问数据集在更新后为空行
EN

Stack Overflow用户
提问于 2013-06-01 08:20:06
回答 1查看 719关注 0票数 0

我正在从mysql表中填充网格视图

代码语言:javascript
复制
   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表

代码语言:javascript
复制
    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()将返回具有右侧列的dataset,但没有行!(dataset.tables.Rows.count= 0)。重新启动后,程序填充将工作正确,但再次更新将具有相同的效果

EN

回答 1

Stack Overflow用户

发布于 2014-03-10 23:09:30

在升级MySQL数据库版本后,我开始面临您在这里发布的相同问题。

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

当我开始测试应用程序时,我开始遇到完全相同的问题:每当通过datagrid对数据进行任何更改时,数据库都会正确更新,但在那之后,应用程序中查询数据库的任何datagrid都会返回0行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16867782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档