您好我有使用MS Access数据库的桌面应用程序。一切都很好,直到在我的桌子上添加了一个外键。我有2个表,第一个
sections
section_id | name
1 | Section1
2 | Section2
Details
details_id | Name | section_id
1 |Name1 |1
2 |Name2 |2
3 |Name3 |1
section表中的 section_id
是Details表的外键。
我有一个网格,我在其中显示详细信息表中的所有数据,并允许用户编辑记录。对于section_id,我使用的是一个组合框,它允许用户只从当前的数据中选择Section表。
gridview允许我添加一行但更新会抛出错误
是的,那会是吗?我只允许用户在您无法添加或更改记录,因为表格'部分需要相关记录。
section
表的section_id
列的details
表中输入预定义值。
修改
我注意到一件事......我曾使用参数化查询进行更新。这是错误的。我用'"
将其更改为普通查询,查询开始正常运行。知道为什么吗?
EDIT2
这是我的更新代码:
//query = "UPDATE Details SET Name='" + lblName + "', section_id="+section_id;
//query += " WHERE details_id ="+details_id ;
query = "UPDATE Details SET Name =@Name, section_id=@section_id WHERE details_id = @details_id ";
cmd2.CommandText = query;
cmd2.Parameters.AddWithValue("@Name", lblName );
cmd2.Parameters.AddWithValue("@details_id ", details_id );
cmd2.Parameters.AddWithValue("@section_id", section_id);
//cmd2.Parameters.Add("@section_id", OleDbType.Integer, 12).Value = Convert.ToInt32(section_id);
cmd2.Connection = con;
cmd2.ExecuteNonQuery();
我尝试通过向参数添加数据类型来建议@GordThompson。但仍然是同样的问题。
另一次更新 我在不使用参数化查询的情况下运行代码。我注意到一种奇怪的行为。我在Details表中添加了section_id,表示section_id = 2,然后从Sections表中删除了section_id = 2。我添加了section_id的Details表中的数据也消失了。这是Ms Access的典型行为吗?