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

  

整理sqlserver 级联更新和删除 c#调用存储过程返回值的更多相关文章

  1. SQL图形化操作设置级联更新和删除

    SQL级联操作设置   对SQL数据库的表,进行级联操作(如级联更新及删除),首先需要设置表的主外键关系,有两种方法:   第一种:   1. 选择你要进行操作的数据库   2. 为你要创建关系的两个 ...

  2. myabatis oracle 调用存储过程返回list结果集

    Mapper.xml 配置 <resultMap type="emp" id="empMap"> <id property="emp ...

  3. shell调用函数返回值深入分析

    编写shell脚本过程中,我们经常会自定义一些函数,并根据函数的返回值不同来执行相应的流程,那么我们如何来获取函数的返回值呢? 首先shell中调用函数有两种方式: 第一种:value=`functi ...

  4. PostgreSQL 调用存储过程返回结果集

    创建返回结果集类型的存储过程: CREATE OR REPLACE FUNCTION public.f_get_member_info( id integer, productname charact ...

  5. ASP.NET调用存储过程并接收存储过程返回值

    ASP.NET调用存储过程并接收存储过程返回值 2010-08-02 11:26:17|  分类: C#|字号 订阅       2010年02月27日 星期六 23:52 假设表结构Create T ...

  6. oracle学习 十二 使用.net程序调用带返回值的存储过程(持续更新)

    数据库返回的是结果集,存储过程返回的是一个或者多个值,所以不要使用while循环去读取,也不要使用datareader函数去调用.v_class_name是返回函数 使用.net调用oracle数据库 ...

  7. sqlserver,获取调用存储过程返回数据的方法。

    1,获取存储过程最后select返回的结果集.SELECT 数据集返回值. 因为select返回的结果是一个表.所以返回的结果需要用一个表接收.使用临时表接收. 被调用的存储过程最后是这样:返回了一个 ...

  8. (转载)SQLServer存储过程返回值总结

    1. 存储过程没有返回值的情况(即存储过程语句中没有return之类的语句) 用方法 int count = ExecuteNonQuery(..)执行存储过程其返回值只有两种情况 (1)假如通过查询 ...

  9. SQLServer存储过程返回值总结

    1.  存储过程没有返回值的情况(即存储过程语句中没有return之类的语句)  用方法 int count = ExecuteNonQuery(..)执行存储过程其返回值只有两种情况  (1)假如通 ...

随机推荐

  1. 高点击率的Banner设计14招

    英文原文:14 design tips for more clickable banner ads 译文:http://www.uisdc.com/banner-click-rate 虽然互联网发展迅 ...

  2. JavaScript Patterns 2.11 Writing Comments

    Document all functions, their arguments and return values, and also any interesting or unusual algor ...

  3. centos7 拨号之后添加路由

    问题:拨号主机再自动拨号(/sbin/ifdown ppp0;/sbin/ifup ppp0)之后,无法上网(没有添加路由) 思路:在拨号程序中添加路由代码 vim /sbin/ifup { slee ...

  4. cocos2d-x之加法计算器

    bool HelloWorld::init() { if ( !Layer::init() ) { return false; } Size visibleSize = Director::getIn ...

  5. 烂泥:通过vsphere给esxi添加本地硬盘

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 公司ESXi服务器的硬盘空间不够使用,现在新加了一块硬盘在ESxi服务器上.在服务器上添加完硬盘后,在Vsphere上是看不到新加硬盘的. 下面我们来通 ...

  6. Jena学习笔记(2)——利用数据库保存本体

    注明:本文档是使用Jena2.6.4,数据库为MySQL,数据库驱动版本为mysql-connector-java-5.1.13-bin.jar. 1 Jena的数据库接口 Jena提供了将RDF数据 ...

  7. 从mysql数据表中随机取出一条记录

    核心查找数据表代码: ; //此处的1就是取出数据的条数 但这样取数据网上有人说效率非常差的,那么要如何改进呢 搜索Google,网上基本上都是查询max(id) * rand()来随机获取数据. S ...

  8. [部署]CentOS配置IP地址

    环境 虚拟机:VMWare10.0.1 build-1379776 操作系统:CentOS7 64位 简介 CentOS7最小化安装(Minimal)时,是不带ifconfig指令的,该指令在net- ...

  9. 21 数据库编程 - 《Python 核心编程》

  10. CUDA入门1

      1GPUs can handle thousands of concurrent threads. 2The pieces of code running on the gpu are calle ...