sql以及ado.net中实现更新级联
来源:互联网 发布:ios软件已过期 编辑:程序博客网 时间:2024/05/11 11:04
获得数据库中所有数据库的名字:select name From sysdatabases
获得某个数据库中所有表的名字:select name from sysobjects where type='U'
获得某个表中字段的名字:select name from syscolumns where id=object_id('表名')
use masterif exists(SELECT * From sysdatabases where name='test3')drop database test3create database test3go use test3go if exists (select * from sysobjects where type='U' and name='abc')drop table abc create table abc ( id int not null identity(20011001,1) primary key clustered, name varchar(6) not null ,class int null , time1 datetime default getdate())insert into abc select 'a',1,1 union all select 'b',2,2insert into abc values('a',null,default)
接下来我给数据表作一个外键连接,
create table a11 (id int not null primary key clustered,name varchar(6) not null ,class int null)create table b11 (id int not null primary key clustered,bbbname varchar(6) not null ,bbbid int null)alter table b11 add constraint FK_id foreign key (bbbid) references a11(id) on update cascade on delete cascadeinsert into a11 values(1,'11',111)insert into a11 values(2,'22',222)insert into a11 values(3,'33',333)insert into b11 values(1,'aa',1)insert into b11 values(2,'bb',2)insert into b11 values(3,'cc',3)
这样的话如果你要删除或者更新主表,如果子表的外键具有主表的主键信息的话,操作失败,
同样如果想要插入从表一个在主表中不存在的主键所对应的外键信息的话,同样,无法操作
但是我在表中确增加了更新与删除级联关系,那样的话,如果我主表中删除记录,此时从表外键
所对应的该删除记录的主键的信息也将随即删除,更新同样如此
那这样的操作在ado.net底下是如何操作的呢?{ string ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa ;Password=sa ;Initial Catalog=test1;Data Source=192.168.10.250"; System.Data.OleDb.OleDbConnection cn = new System.Data.OleDb.OleDbConnection(ConnectionString); cn.Open(); System.Data.DataSet ds = new System.Data.DataSet(); System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter("SELECT * From a11", cn); System.Data.OleDb.OleDbDataAdapter da1 = new System.Data.OleDb.OleDbDataAdapter("SELECT * From b11", cn); System.Data.OleDb.OleDbCommandBuilder cb = new System.Data.OleDb.OleDbCommandBuilder(da); System.Data.OleDb.OleDbCommandBuilder cb1 = new System.Data.OleDb.OleDbCommandBuilder(da1); da.Fill(ds,"table"); da1.Fill(ds, "table1"); ds.Tables[0].PrimaryKey = new DataColumn[]{ds.Tables[0].Columns["id"]}; ds.Tables[1].PrimaryKey = new DataColumn[]{ds.Tables[1].Columns["id"]}; ForeignKeyConstraint custOrderFK = new ForeignKeyConstraint("CustOrderFK",ds.Tables["table"].Columns["id"],ds.Tables["table1"].Columns["bbbid"]); custOrderFK.DeleteRule = Rule.Cascade; ds.Tables["table1"].Constraints.Add(custOrderFK); ds.Tables[0].Rows[0].Delete(); da.Update(ds,"table"); da1.Update(ds,"table1");此时大家可以看一下运行结果,与在sql中进行的更新级联效果一样, 如果你在sql中没有添加级联关系,在datatable中可以通过添加 custOrderFK.DeleteRule = Rule.Cascade;来 达到同样的效果,所以结果也就是删除了主表的第一条记录,从表所对应的记录也予以删除 同样在j2ee的hibernate中也可以实现,以后详细说明
- sql以及ado.net中实现更新级联
- .net中实现datagridview级联
- Silverlight + WCF使用Linq to SQL以及ADO.NET Entity Data Model更新数
- oracle中使用触发器实现级联更新
- ADO.net实现数据更新(一)
- 使用ADO.NET实现数据的更新
- MS SQL Server 中如何实现一对多外键的级联更新
- 级联更新SQL
- Silverlight + WCF使用Linq to SQL以及ADO.NET Entity Data Model更新数据库子表方法
- 如何在.net中实现级联删除?
- ASP.NET中实现Ajax级联DropDownList
- 常用sql----实现关联表的数据级联更新
- ADO.NET中SQL Server数据库连接池
- ADO.NET中SQL Server数据库连接池
- ADO.NET中SQL Server数据库连接池
- ADO.NET 中 SQL 语句的拼接
- SQL级联更新和级联删除
- SQL级联更新和级联删除
- C#2.0:DataSet和XML之间的操作
- Re: 一著名软件公司的java笔试算法题!
- FLEX屏蔽鼠标右键
- wince下用directx播放音频和视频
- 十年学会编程(转)
- sql以及ado.net中实现更新级联
- WPF/E解读系列(一)
- 在ASP.NET中显示XML内容(以常见的公告栏为例)
- 又是一年高考日
- JSP文件处理操作大全
- C#2.0 新特性探究(二) 委托与匿名委托
- [WinForm每日一帖] UltraGrid中实现下拉Grid(UltraDropDown)
- dwr动态装载下拉列表框选项
- ASP.NET和C#中对XML的操作,以及简单的xml与xsl !