整理sqlserver 级联更新和删除 c#调用存储过程返回值

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
简介:

整理一下级联更新和删除 c#调用返回值

use master 
go 
IF exists( select  1 from  sysdatabases where  name= 'temp' )
BEGIN  
     DROP DATABASE temp
END
create database temp
go
use temp
go
--drop table  ProductInfo
create table ProductInfo
(
     ProductId int   primary key ,
     ProductName varchar(20),   
)
  
create table ProductDetails
(
     id int  identity(1,1) primary key,
     num varchar(100) ,
     ProductId int ,
     foreign key (ProductId) references ProductInfo(ProductId) on  delete cascade on  update cascade
)
  
insert ProductInfo values (1, 'Think' )
insert ProductInfo values(2, 'TCL' )
insert ProductInfo values(3, 'HTC' )
  
insert ProductDetails values( 'T420' ,1)
insert ProductDetails values( 'Xo1' ,1)
insert ProductDetails values( 'TVoo1' ,2)
insert ProductDetails values( 'TPhone' ,2)
insert ProductDetails values( 'One' ,3)
insert ProductDetails values( 'Buffer' ,3)
 
  
 
 
alter table 表名
add constraint 外键名
foreign key(字段名) references 主表名(字段名)
on  delete cascade --删除
on  update cascade --更新
 
--查看现有数据
select  * from  ProductInfo
select  * from  ProductDetails
 
--更改
update ProductInfo set  ProductId=5  where  ProductName= 'Think'
select  * from  ProductInfo
select  * from  ProductDetails
 
--删除
delete from  ProductInfo where  ProductId=5
select  * from  ProductInfo
select  * from  ProductDetails

  

第一种方法:
C#代码:
protected  void  btnBack_Click( object  sender, EventArgs e)
{
         //调用存储过程
         stringconStr=ConfigurationManager.ConnectionStrings[ "NorthwindConnectionString" ].ToString();
         SqlConnection conn = new  SqlConnection(conStr);
         SqlCommand cmd = new  SqlCommand();
         cmd.CommandText = "MyProc" ;
         cmd.CommandType = CommandType.StoredProcedure;
         cmd.Connection=conn;
         conn.Open();
         SqlParameter sp = new  SqlParameter( "@ID" , SqlDbType.Int);
         sp.Value = int .Parse( "3" );
         cmd.Parameters.Add(sp);
  
         //定义输出参数
         SqlParameter returnValue = new  SqlParameter( "@returnValue" , SqlDbType.Int);
         returnValue.Direction = ParameterDirection.ReturnValue;
         cmd.Parameters.Add(returnValue);
         cmd.ExecuteNonQuery();       
         conn.Close();
  
}
存储过程如下:
create procedure MyProc
(
      @ID int
)
as
  
  return  1
  
 
go
注意,( return )这种方式 只能返加数值类型
  
第二种方法:
protected  void  btnBack_Click( object  sender, EventArgs e)
{
         //调用存储过程
         string  conStr = System.Configuration.ConfigurationManager.ConnectionStrings[ "NorthwindConnectionString" ].ToString();
         SqlConnection conn = new  SqlConnection(conStr);
         SqlCommand cmd = new  SqlCommand();
         cmd.CommandText = "MyProc" ;
         cmd.CommandType = CommandType.StoredProcedure;
         cmd.Connection=conn;
         conn.Open();
         SqlParameter sp = new  SqlParameter( "@ID" , SqlDbType.Int);
         sp.Value = int .Parse( "3" );
         cmd.Parameters.Add(sp);
  
         //定义输出参数
         sp = new  SqlParameter( "@outputValue" , SqlDbType.NVarChar,50);
         sp.Direction = ParameterDirection.Output;
         cmd.Parameters.Add(sp);
         cmd.ExecuteNonQuery();
         
         conn.Close();
  
     }
  
存储过程如下:
alter procedure MyProc
(
      @ID int ,
      @outputValue nvarchar(50) output
  
)
as
  Select @outputValue= 'aa'
go

本文转自lpxxn博客园博客,原文链接:http://www.cnblogs.com/li-peng/p/3254982.html ,如需转载请自行联系原作者
相关文章
|
7月前
|
存储 SQL 数据库连接
C#程序调用Sql Server存储过程异常处理:调用存储过程后不返回、不抛异常的解决方案
本文分析了C#程序操作Sql Server数据库时偶发的不返回、不抛异常问题,并提出了解决思路。首先解析了一个执行存储过程的函数`ExecuteProcedure`,其功能是调用存储过程并返回影响行数。针对代码执行被阻塞但无异常的情况,文章总结了可能原因,如死锁、无限循环或网络问题等。随后提供了多种解决方案:1) 增加日志定位问题;2) 使用异步操作提升响应性;3) 设置超时机制避免阻塞;4) 利用线程池分离主线程;5) 通过信号量同步线程;6) 监控数据库连接状态确保可用性。这些方法可有效应对数据库操作中的潜在问题,保障程序稳定性。
548 11
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第18天】SQL Server 存储过程具有提高性能、增强安全性、代码复用和易于维护等优点。它可以减少编译时间和网络传输开销,通过权限控制和参数验证提升安全性,支持代码共享和复用,并且便于维护和版本管理。然而,存储过程也存在可移植性差、开发和调试复杂、版本管理问题、性能调优困难和依赖数据库服务器等缺点。使用时需根据具体需求权衡利弊。
300 1
|
存储 SQL 缓存
SQL Server存储过程的优缺点
【10月更文挑战第22天】存储过程具有代码复用性高、性能优化、增强数据安全性、提高可维护性和减少网络流量等优点,但也存在调试困难、移植性差、增加数据库服务器负载和版本控制复杂等缺点。
475 1
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第17天】SQL Server 存储过程是预编译的 SQL 语句集,存于数据库中,可重复调用。它能提高性能、增强安全性和可维护性,但也有可移植性差、开发调试复杂及可能影响数据库性能等缺点。使用时需权衡利弊。
249 3
|
存储 SQL 数据库
Sql Server 存储过程怎么找 存储过程内容
Sql Server 存储过程怎么找 存储过程内容
681 1
|
存储 SQL 数据库
SQL Server 临时存储过程及示例
SQL Server 临时存储过程及示例
186 3
|
3月前
|
XML 前端开发 C#
C#编程实践:解析HTML文档并执行元素匹配
通过上述步骤,可以在C#中有效地解析HTML文档并执行元素匹配。HtmlAgilityPack提供了一个强大而灵活的工具集,可以处理各种HTML解析任务。
192 19
|
4月前
|
监控 算法 C#
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
570 0
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
258 3
|
12月前
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
857 12

热门文章

最新文章