在使用带有MySQL的C#重新启动应用程序之前,不会加载新记录

时间:2015-03-26 18:52:49

标签: c# mysql database

我正在使用带有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();

1 个答案:

答案 0 :(得分:0)

好的,我发现了问题。在重新填充数据适配器之前,需要重置数据集。更改了更新方法以包括:

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

现在它正在显示新记录。