我正在使用带有C#应用程序的MySQL数据库。我将应用程序设置为使用表单添加新记录并显示现有记录。插入记录后,表单应重新从数据库中获取记录,并在表格中显示表中的最后一条记录(即新创建的记录)。
就目前而言,当点击上一个/下一个或第一个/最后一个来浏览表格中的记录时,它会显示第一条记录作为第一条记录和最后一条记录。由于某种原因,它似乎是在数据适配器中循环第一个。我刚接触使用MySQL和C#。有没有办法可以重置或更新它,而无需重新启动应用程序?
要填充表单,它调用与表单加载相同的方法,连接到数据库,获取行计数,填充数据适配器,填充文本框,然后关闭与数据库的连接。不知道为什么它不能抓住第二个等等所有时间。
当用户点击添加以添加新记录时:
//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();
答案 0 :(得分:0)
好的,我发现了问题。在重新填充数据适配器之前,需要重置数据集。更改了更新方法以包括:
tblTableDataSet.Reset();
tblTableDataAdapter = new MySqlDataAdapter(cmd.CommandText, connection);
tblTableDataAdapter.Fill(tblTableDataSet);
现在它正在显示新记录。