C# 如何操作数据库中的两张表
例如:表Man包含字段man_ID,man_Name,man_City;表City包含字段city_Code,city_Name其中man_city与city_Code相同需要执行表的添加、删除操作,实际只修改表Man,表City只起到查询作用,屏幕显示man_ID,man_Name,city_Name
我已用sqlDataAdapter的数据适配器设置了两张表的内部链接on man_City=city_Code
并且能根据man_City查询到相应的city_Name值
执行sqlDataAdapter.Fill(myDataSet);后,myDataSet.Man中包含Man的所有字段又包含city_Name;
datagridview读取数据时显示的是正确的,但添加、修改操作却只更新man_City,未更新city_Name(空值),这是为什么?
执行sqlDataAdapter.update(myDataSet);显示,当传递具有新行的 DataRow 集合时,更新要求有效的 InsertCommand。
加上myData.AcceptChanges();虽然不出错,但依然没用更新数据,该怎么办? --------------------编程问答-------------------- 添加和修改时,只添加或修改了man_City,并没有修改city_Name,所以的Dataset那个字段为空也很正常。
要么重新查一次就有了,要么就在datagridview修改man_City后,触发一个Cell事件,在同行的city_Name自动添加城市名,这样就保持一致了
--------------------编程问答-------------------- 我建议还是直接写入SQL语句插入吧!!!!!!!!!!!!!! --------------------编程问答-------------------- 不太建议直接用datagridview直接更新数据库数据,自己习惯写SQL语句或者存储过程,datagridview在界面或者页面前端是展示层,而数据库时的数据库更新是持久层做的事,你这样用datagridview,就把两个层面做的事混淆在一块了,建议培养分层开发的习惯,即使程序不大 --------------------编程问答-------------------- 请问Cell事件如何使用?
sql语句是指插入city_Name单元格吗?
第一次学,还不是很清楚,能否给出具体代码?拜托了~ --------------------编程问答-------------------- 在定义数据集DATASET,两张表建立处键约束时,是否设置了级联删除的属性了。
例如:constraint.UpdateRule = Rule.Cascade;//constranit 是一个外键约束名 --------------------编程问答-------------------- 刚才写错了,是级联更新属性。。。呵呵 --------------------编程问答-------------------- DataSet.Relations.Add("关联名称", 父关联主键字段, 子关联外来键字段)
DataTable dt1 = new DataTable();
DataTable dt2 = new DataTable();
ds.Tables.Add(dt1);
ds.Tables.Add(dt2);
DataRelation dsdr = new DataRelation("Position", ds.Tables[0].Columns["id"], ds.Tables[1].Columns["id"]);
ds.Relations.Add(dsdr);
再使用 SqlCommandBuilder 更新 --------------------编程问答-------------------- 7楼这样的话,不是要新建一个表吗?我直接用sqlDataAdapter.Fill(myDataSet);得到的myDataSet可以吗?
当时试过新建表,可是结果datagridview里面的数据无法更新了,数据库内部到是更新的 --------------------编程问答-------------------- SqlDataAdapter的InsertCommand、DeleteCommand、UpdateCommand是怎么设置的?
多表连接起来的时候,不能SqlCommandBuilder自动生成,都得自己写~~
补充:.NET技术 , C#