我正在使用 MySQL 数据库和 C# 应用程序。我将应用程序设置为使用表单添加新记录并显示现有记录。插入记录后,表单应重新从数据库中获取记录,并在表单中显示表中的最后一条记录(即新创建的记录)。
就目前情况而言,当单击上一个/下一个或第一个/最后一个浏览表中的记录时,它会将第一条记录显示为第一条记录和最后一条记录。由于某种原因,它似乎正在循环数据适配器中的第一个。我是在 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();
最佳答案
好的,我找到问题所在了。在重新填充数据适配器之前需要重置数据集。更改了更新方法以包括:
tblTableDataSet.Reset();
tblTableDataAdapter = new MySqlDataAdapter(cmd.CommandText, connection);
tblTableDataAdapter.Fill(tblTableDataSet);
现在正在显示新记录。
关于c# - 在使用 C# 和 MySQL 重新启动应用程序之前,不会加载新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29286622/