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

简介: 整理一下级联更新和删除 c#调用返回值 use master go IF exists(select 1 from sysdatabases where name='temp') BEGIN DROP DATABASE temp END create database ...

整理一下级联更新和删除 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

  

目录
相关文章
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第18天】SQL Server 存储过程具有提高性能、增强安全性、代码复用和易于维护等优点。它可以减少编译时间和网络传输开销,通过权限控制和参数验证提升安全性,支持代码共享和复用,并且便于维护和版本管理。然而,存储过程也存在可移植性差、开发和调试复杂、版本管理问题、性能调优困难和依赖数据库服务器等缺点。使用时需根据具体需求权衡利弊。
391 1
|
10月前
|
存储 SQL 数据库连接
C#程序调用Sql Server存储过程异常处理:调用存储过程后不返回、不抛异常的解决方案
本文分析了C#程序操作Sql Server数据库时偶发的不返回、不抛异常问题,并提出了解决思路。首先解析了一个执行存储过程的函数`ExecuteProcedure`,其功能是调用存储过程并返回影响行数。针对代码执行被阻塞但无异常的情况,文章总结了可能原因,如死锁、无限循环或网络问题等。随后提供了多种解决方案:1) 增加日志定位问题;2) 使用异步操作提升响应性;3) 设置超时机制避免阻塞;4) 利用线程池分离主线程;5) 通过信号量同步线程;6) 监控数据库连接状态确保可用性。这些方法可有效应对数据库操作中的潜在问题,保障程序稳定性。
754 11
|
存储 SQL 缓存
SQL Server存储过程的优缺点
【10月更文挑战第22天】存储过程具有代码复用性高、性能优化、增强数据安全性、提高可维护性和减少网络流量等优点,但也存在调试困难、移植性差、增加数据库服务器负载和版本控制复杂等缺点。
602 1
|
存储 SQL 数据库
Sql Server 存储过程怎么找 存储过程内容
Sql Server 存储过程怎么找 存储过程内容
791 1
|
存储 Java 关系型数据库
java调用mysql存储过程
在 Java 中调用 MySQL 存储过程主要借助 JDBC(Java Database Connectivity)。其核心原理是通过 JDBC 与 MySQL 建立连接,调用存储过程并处理结果。具体步骤包括:加载 JDBC 驱动、建立数据库连接、创建 CallableStatement 对象、设置存储过程参数并执行调用。此过程实现了 Java 程序与 MySQL 数据库的高效交互。
|
12月前
|
存储 关系型数据库 MySQL
【YashanDB知识库】MySQL返回结果集的存储过程的改写方法
本文介绍了将MySQL存储过程改写至YashanDB的解决方案。由于MySQL存储过程可直接返回结果集,而YashanDB需通过返回SYS_REF_CURSOR的函数实现类似功能,因此需要对代码进行转换。示例中展示了如何将MySQL存储过程`proc1`改写为YashanDB函数,并调整JDBC应用代码以适配REF_CURSOR输出参数,从而正确获取查询结果。此方法确保了跨数据库场景下的兼容性与功能性。
|
存储 SQL NoSQL
|
存储 SQL 关系型数据库
MySql数据库---存储过程
MySql数据库---存储过程
229 5
|
存储 关系型数据库 MySQL
MySQL 存储过程返回更新前记录
MySQL 存储过程返回更新前记录
266 3
|
存储 SQL 关系型数据库
MySQL 存储过程错误信息不打印在控制台
MySQL 存储过程错误信息不打印在控制台
323 1