【问题标题】:New record isn't loading until application restarted using C# with MySQL在使用 C# 和 MySQL 重新启动应用程序之前,不会加载新记录
【发布时间】:2015-03-26 18:52:48
【问题描述】:

我正在使用带有 C# 应用程序的 MySQL 数据库。我将应用程序设置为使用表单添加新记录并显示现有记录。插入记录后,表单应该重新从数据库中抓取记录,并在表单中显示表中的最后一条记录(即新创建的记录)。

就目前而言,当单击上一个/下一个或第一个/最后一个以浏览表中的记录时,它将第一条记录显示为第一条和最后一条记录。由于某种原因,它似乎正在循环数据适配器中的第一个。我是使用 C# 使用 MySQL 的新手。有没有一种方法可以重置或更新而无需重新启动应用程序?

要填充表单,它调用与加载表单时相同的方法、连接到数据库、获取行数、填充数据适配器、填充文本框,然后关闭与数据库的连接。不知道为什么它不能第二次抓住一切,等等。

当用户点击添加添加新记录时:

//Recounts rows in table in the table
numberOfRows = GetRowCount("tblTable");

//Resets displayedRow counter and updates form data to show new record
displayedRow = numberOfRows - 1;
UpdateFormData(displayedRow);

表单上的记录数正在正确更新,所以我知道这一切正常。

然后在UpdateFormData方法中:

cmd = connection.CreateCommand();
cmd.CommandText = "SELECT * FROM `tblTable`;";
cmd.ExecuteNonQuery();

//Fill DataAdapter
using (tblTableDataAdapter = new MySqlDataAdapter(cmd))
{
   tblTableDataAdapter.Fill(tblTableDataTable);
}

tblTableDataAdapter = new MySqlDataAdapter(cmd.CommandText, connection);
       tblTableDataAdapter.Fill(tblTableDataSet);

//Displays row data in textbox
textBox1.Text = tblTableSet.Tables[0].Rows[displayedRow]["FirstName"].ToString();
       textBox2.Text = tblTablefDataSet.Tables[0].Rows[displayedRow]["LastName"].ToString();
       textBox3.Text = tblTableDataSet.Tables[0].Rows[displayedRow]["StaffAddress"].ToString();
       textBox4.Text = tblStaffDataSet.Tables[0].Rows[displayedRow]["PostalCode"].ToString();
       textBox5.Text = tblTableDataSet.Tables[0].Rows[rowNumber]["City"].ToString();
       textBox6.Text = tblTableDataSet.Tables[0].Rows[rowNumber]["Phone"].ToString();
       textBox7.Text = tblTableDataSet.Tables[0].Rows[rowNumber]["Email"].ToString();

【问题讨论】:

  • 更新值后,您必须重新填充表格
  • 我在更新方法的第 8 行有这个,显然在第 12 行。在另一行会更好吗?

标签: c# mysql database


【解决方案1】:

好的,我找到了问题所在。在重新填充数据适配器之前需要重置数据集。将更新方法更改为包括:

tblTableDataSet.Reset();
tblTableDataAdapter = new MySqlDataAdapter(cmd.CommandText, connection);
tblTableDataAdapter.Fill(tblTableDataSet);

它现在正在显示新记录。

【讨论】:

    猜你喜欢
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多