【发布时间】:2021-05-04 04:37:43
【问题描述】:
我正在做一个学校项目,但遇到了问题。当我从数据库中插入/更新/删除数据时,在我重新启动应用程序之前不会显示数据。我必须关闭应用并再次打开它才能显示更改。
当我更改OleDbConnection 字符串时(当我更改源时),数据会更新,但它只会在我关闭应用程序之前显示,当我关闭应用程序时,我会丢失所有新数据。来自数据库的数据显示在dataGridView 中。当我为dataGridView 选择数据源时,代码行会自动写入表单加载事件中,并使用该代码在源更改为不保存数据的文件时更新数据。
我想知道添加新数据后是否还有其他方法可以自动刷新(或使用按钮)dataGridView。我正在使用 VS C# 2008 速成版,因为这是我们在学校使用的版本。
插入按钮的代码如下:
private void buttonInsert_Click(object sender, EventArgs e)
{
konekcija.Open();
OleDbCommand komanda = konekcija.CreateCommand();
komanda.CommandType = CommandType.Text;
komanda.CommandText = ("Insert into Sobe(Broj_sobe,Tip_sobe,Telefon,Stanje)values('"
+ textBoxBrSobe.Text + "','" + textBox2.Text +"','" + textBoxTelefon.Text + "','" + textBox1.Text + "')");
komanda.ExecuteNonQuery();
konekcija.Close();
MessageBox.Show("Uspjeli ste");
//this is written automatically in form load event
this.sobeTableAdapter1.Update(this.hotelDataSet1.Sobe);
}
这是连接字符串,这是我在学校被教导的方式。
OleDbConnection konekcija = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/Users/Pupo/Desktop/Hotel/Hotel/Hotel/Hotel.mdb;Persist Security Info=False");
当我更改连接字符串以转到 bin/debug 文件夹时,它会自动更新但不保存数据。
OleDbConnection konekcija = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Hotel.mdb;Persist Security Info=False");
【问题讨论】:
-
一个适配器有四个命令 1) 选择 2) 删除) 3) 更新 4) 插入。要使更新方法起作用,您需要所有找到的命令。 commandBuilder 采用 Select 命令并自动构建其他三个。请参阅:docs.microsoft.com/en-us/dotnet/api/…
-
当你在 bin/debug 中有 db 文件时,它可能会在每次编译时被覆盖
-
顺便说一句,通过在你的命令字符串中包含用户文本,你会遇到 sql 注入问题。甚至 Access 也可以使用参数(仅位置,但仍然...)
-
还有; VS 2008,如.. 13 年前?你的学校是故意妨碍你的教育吗?????? 13 年发生了这么多事情,就计算而言,这几乎是一生前的事了。我无法合理地看出你的学校可能有什么借口坚持使用如此古老的版本 - 有 Visual Studio 2019 的免费版本和如果您需要的东西不存在,Microsoft 的学生定价确实物有所值
-
谢谢大家,我成功了。我设法通过制作一个执行 SELECT 命令的按钮来解决问题。不是最好的解决方案,但可以解决问题。
标签: c#