【发布时间】:2017-08-16 23:56:00
【问题描述】:
在我的程序中,当我删除一条记录时,它从数据库访问和 DataGridView 中删除,但是当我关闭窗口并再次打开它时,记录再次出现在 DataGridView 中,虽然它从数据库访问中删除,这是我的代码:
private void button1_Click(object sender, EventArgs e)
{
connection.Open();
command.Connection = connection;
string query = " delete from Hoteldb where ID= " +textBox0.Text + "";
MessageBox.Show(query);
command.CommandText = query;
command.ExecuteNonQuery();
MessageBox.Show("Guest Checked Out succesfly");
BindGridView();
}
public void BindGridView()
{
string strSQL = "SELECT * FROM Hoteldb";
OleDbCommand cmd = new OleDbCommand(strSQL, connection);
DataTable table = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
da.Fill(table);
dataGridView1.DataSource = table;
connection.Close();
}
【问题讨论】:
-
不要使用串联,除非您希望有人输入
1 or 1=1并删除整个表。这正是 SQL 注入的工作原理。使用参数化查询并且不要使用全局连接对象。您最终只会阻止您自己的应用程序。有 很多 教程展示了如何将数据绑定到网格并更新数据库以响应 UI 命令 -
至于实际问题,要么键不存在,要么文本包含意外字符,要么您的目标是错误数据库。您是否正在使用用户实例 SQL Server 数据库?还是访问文件?每次调试应用程序时,数据库文件都会被替换
-
我正在使用 Access 文件
-
那就是问题所在。 Content 文件总是在您开始调试时复制到
Debug文件夹。无论如何,您不应该将用户数据存储在程序的文件夹中。Program Files文件夹是只读的。您应该将数据存储在用户的 Documents 文件夹或特殊的%ApplicationData%文件夹中 -
我做了,同样的问题
标签: c#