求助,在C#中利用数据库视图同时修改多张表
[size=12px]Sqlconnection ction;SqldataAdapter da;
SqlcommandBuilder db;
DataSet ds;
private void button4_Click(object sender, EventArgs e)
{
ction = New Sqlconnection("链接SQL语句");
da = New SqldataAdapter("select * from gra_stu",ction); [color=#FF0000]gra_stu 是基于多张表的视图;
db = New SqlcommandBuilder(da);
ds = New DataSet();
da.Fill(ds,"ntable");
dataGridView.DataSource = ds;
dataGridView.DataMember = "ntable";
}
private void button2_Click(object sender, EventArgs e)
{
da.Update(ds, "ntable"); 这个按钮的事件是:更新 dataGridView 里的内容;
}[/size][/color]
我的问题是;这样可以查询到记录并且绑定到 dataGridView ,
但是只要执行 button2 就会出错, 错误内容大概是: 不支持基于多表的动态 SQL 生成
求高手给支个招吧!!! --------------------编程问答-------------------- 视图是只读滴吧?! --------------------编程问答-------------------- 首先要明确一点:不是所有视图中的数据都是可更新的.
基本判断原则:
视图中的每一列都必须和一个基本表中的一个源列对应
视图中的每一行都必须和一个基本表中的一个源行对应
所有的数据修改都必须遵守在待更新基本表(甚至包括相关表)上设置的完整性约束条件
所以阁下好好看看你要更新的数据是否满足以上标准就应该能解决问题了. --------------------编程问答-------------------- 视图怎么能做修改能,它是只读的,
建议写一存储过程带上事物去处理多表的联动修改............. --------------------编程问答-------------------- 不支持基于多表的动态 SQL 生成 --------------------编程问答-------------------- 什么都不是万能的,我看你还不如写个存储过程呢 --------------------编程问答-------------------- 回帖是一种美德!每天回帖即可获得 10 分可用分! --------------------编程问答-------------------- 那要怎样建立存储过程,存储过程调用的时候,必须要给以 @ 开头的变量赋值吗?可是我想查询所有记录,并作修改(修改时可能只修改某一记录) --------------------编程问答-------------------- SQL2000 用分区视图 参考:http://www.cnblogs.com/edobnet/archive/2005/12/23/303613.html
SQL2005 用分区表,参考:http://msdn.microsoft.com/zh-cn/library/ms345146(SQL.90).aspx --------------------编程问答-------------------- 用存储过程吧 --------------------编程问答-------------------- 我也有疑问,上次面试有人问如何用一条SQL语句更新2张表的数据,我不知道。。。后来乱说了个可以变相使用触发器来实现,BS下自己!
补充:.NET技术 , C#