数据库中有自增字段UID

存储过程如下:

CREATE     PROCEDURE   AddUser   
(   
@Username           nvarchar(50),   
@Email         nvarchar(100),   
@Password   nvarchar(50),   
@UserID       int   OUTPUT   
)   
AS   
INSERT   INTO   Users   
(  Username, Email, Password  )     
  VALUES   
  (  @Username,  @Email,  @Password   
  )   
  SELECT   
          @UserID   =   @@Identity   
  GO

程序如下:
SqlCommand cmd=new SqlCommand("AddUser",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@Username",Username));
cmd.Parameters.Add(new SqlParameter("@Email",Email));
cmd.Parameters.Add(new SqlParameter("@Password",Password));

SqlParameter outPara = new SqlParameter("@UserID", SqlDbType.Int);
outPara.Direction = ParameterDirection.Output;
cmd.Parameters.Add(outPara);

if (cmd.ExecuteNonQuery() > -1)
{
if (outPara.Value is int)
{
int retValue = (int)outPara.Value;
}
}
CMD执行

int UID;
UID = cmd.Parameters["@userid"];

2、
SqlParameter.Direction 属性
获取或设置一个值,该值指示参数是只可输入、只可输出、双向还是存储过程返回值参数。

属性值
ParameterDirection 值之一。默认为 Input。 
 Input 参数是输入参数。  
 InputOutput 参数既能输入,也能输出。  
 Output 参数是输出参数。  
 ReturnValue 参数表示诸如存储过程、内置函数或用户定义函数之类的操作的返回值。

3、
CREATE   PROCEDURE   [dbo].[ProgrammeDetail   Add]     
  @Beginning_Date   DateTime   ,   
  @Ending_Date   DateTime,   
  @currentID   varchar(10)     out   
    
  AS   
  BEGIN   
  begin   tran   
  insert   into   ProgrammeDetail(BeginTime,EndTime)   values(   @Beginning_Date,@Ending_Date)   
  select   @currentID=max(ProgrammeID)     from   ProgrammeDetail     
  commit   
  return   @currentID   
  END   
  GO

——————————————————————————
--------------------------------------------   
  假设有存储过程如下:   
  ---------------------------------------------   
    
  CREATE   proc   sp_uptmp   @tmpName   varchar(50),@srcPos   varchar(255)   
  as   
    
  Begin   TRAN   
            insert   into   t_template   values(@tmpName,@srcPos)   
  COMMIT       
    
  return   isnull(@@identity,0)   
  GO   
    
    
  ------------------------------------------------------------   
  在   ado.net   里面获取返回值的方法为(c#):   
  ------------------------------------------------------------   
        SqlConnection   dbconn   =   new   SqlConnection(connStr);   
        SqlCommand   cmd   =   new   SqlCommand("sp_uptmp",dbconn);   
        cmd.CommandType   =   CommandType.StoredProcedure;   
    
        SqlParameter   tmpName   =   cmd.Parameters.Add("@tmpName",SqlDbType.VarChar);   
        SqlParameter   srcPos   =   _cmd.Parameters.Add("@srcPos",SqlDbType.VarChar);   
        SqlParameter   rtnval   =   cmd.Parameters.Add("rval",SqlDbType.Int);   
    
        tmpName.Direction   =   ParameterDirection.Input;   
        srcPos.Direction   =   ParameterDirection.Input;   
        rtnval.Direction   =   ParameterDirection.ReturnValue;   
    
        tmpName.Value   =   "";   
        srcPos.Value   =   "";   
        dbconn.Open();   
        cmd.ExecuteNonQuery();   
        dbconn.Close();   
    
        tmpid   =   (int)rtnval.Value;     //此处即为返回值   
3、
存储过程:   
    
  create   procedure   AddRecord   
  (@field1   varchar(20),   
  @field2   varchar(30))   
  as   
  insert   into   mytable(field1,field2)   values(@field1,@field2)   
  select   @@identity   
  go   
    
  在asp.net程序中这样调用存储过程:   
    
  SqlConnection   conn=....//连接字符串   
  SqlCommand   cmd=new   SqlCommand("AddRecord",conn);   
  cmd.CommandType=CommandType.StoredProcedure;
  cmd.Parameters.Add("@field1","field1的值");   
  cmd.Parameters.Add("@field2","field2的值");   
  conn.Open();   
  int   iKey=(int)cmd.ExecuteScalar();   
  conn.Close();   
    
  最后的iKey就是你要的刚插入的主键值。

存储过程中得到新增数据的ID的更多相关文章

  1. ssm mysql 新增数据返回id

    描述: 在ssm项目中,新增一条数据,返回该数据的数据库id(主键) 实现方法: 1.xml 增加  useGeneratedKeys="true" keyProperty=&qu ...

  2. Thinkphp5.0 获取新增数据的ID

    // 方法1 insertGetId方法新增数据并返回主键值使用getLastInsID方法: Db::name('user')->insert($data); $userId = Db::na ...

  3. Oracle 存储过程中的临时表数据自动清空

    问题叙述: 用 EXECUTE IMMEDIATE 动态往临时表插入数据,跟踪发现插入临时表后数据会立马清空,按理说等存储过程执行完才会清空临时表才对,现在是执行插入语句后下一步验证就发现临时表就没有 ...

  4. 创建触发器在表中播入数据时ID自动增长

    ),age )) create or replace trigger gger_tt before insert on ttt for each row when (new.id is null) b ...

  5. sql server中新增一条数据后返回该数据的ID

    开发中遇到的问题:在新增一条数据后往往不需要返回该数据的ID,但是有的时候可能需要返回该数据的ID以便后面的编程使用. 在这里介绍两种方法: 其一:使用存储过程: create procedure a ...

  6. 将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据

    领导让在存储过程中批量添加数据,找出效率最高的,我看到后台代码后,发现可以将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据,知道还有其 ...

  7. 使用Hibernate框架,新增数据后如何返回新增数据的全部信息

    一.需求描述:一个修改事物(TRANSACTION)先后包括子事物修改和子事物新增,修改事物完成后返回其子事物新增的全部数据  二.实现:若实现修改对象后还需要新增一个新对象,并返回新对象的需求,保存 ...

  8. [转]SQLSERVER存储过程调用不同数据库的数据_存储过程中通过链接服务器访问远程服务器

    本文转自:http://blog.csdn.net/nnaabbcc/article/details/7967761 存储过程调用不同数据库的数据 在存储过程调用不同数据库的数据该如何做,比如在存储过 ...

  9. 代码中添加事务控制 VS(数据库存储过程+事务) 保证数据的完整性与一致性

    做人事档案的系统考虑到数据的安全性与一致性,毕竟是要对外上线.真正投入使用的项目,数据库的可靠性与安全性上我们开发人员要考虑的就很多了,记得做机房收费系统时注册新卡是自己为了简单,写成了一个存储过程( ...

随机推荐

  1. Oracle自定义函数和存储过程示例,自定义函数与存储过程区别

    参考资料:http://www.newbooks.com.cn/info/60861.html oracle自定义函数学习和连接运算符(||) 贴一段中文文档示例,应该就可以开始工作了: --过程(P ...

  2. HighCharts: 设置时间图x轴的宽度

    这个x轴宽度的设置整了好久,被老板催的要死 highcharts的api文档很难找,找了半天也没找到,网上资料少,说的试了下,也没有,我用的图里api文档里没有介绍,这个属性不知道的话,根本不好找.为 ...

  3. Hadoop Map/Reduce教程

    原文地址:http://hadoop.apache.org/docs/r1.0.4/cn/mapred_tutorial.html 目的 先决条件 概述 输入与输出 例子:WordCount v1.0 ...

  4. 在程序开发中怎样写SQL语句可以提高数据库的性能

    以下内容是公司dba总结. 1. 首先要搞明白什么叫执行计划?   执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来 ...

  5. go 学习 ---golang命令

    1.GO命令一览 GO提供了很多命令,包括打包.格式化代码.文档生成.下载第三方包等等诸多功能,我们可以通过在控制台下执行 go 来查看内置的所有命令 下面来逐个介绍,也可以详细参考 https:// ...

  6. 打开u盘时提示是否要将其格式化的提示

    早上打开电脑插入U盘后,发现U盘报以下错误:(心中一紧,昨晚写的文档还在其中呢) 修复方法: Win+R 输入cmd 打开 ,执行命令 chkdsk G: /f 其中G为损坏区域所在盘符,即U盘在电脑 ...

  7. 可重入函数、线程安全、volatile

    一. POSIX 中对可重入和线程安全这两个概念的定义: Reentrant Function:A function whose effect, when called by two or more  ...

  8. 敏捷转型中why与how的总结

    敏捷转型參考框架: 为了成功顺畅地推行敏捷开发.下面将对整个敏捷转型參考框架作个整体说明.为企业进行敏捷转型提供基本方法參考.整个敏捷转型參考框架主要包括5个步骤,前两个步骤主要是回答 Wh y的问题 ...

  9. CentOS7 安装配置DNS服务器

    一.安装 yum install bind 二.配置 1. /etc/named.conf // // named.conf // // Provided by Red Hat bind packag ...

  10. mysql 数据表的引擎 MyISAM 和 InnoDB

    需要使用锁和事务时,必须使用InnoDB模式 可以通过以下语句查看表的类型 SHOW TABLE STATUS FROM [DATABASE_NAME] 修改数据表的引擎类型: navicat: 设计 ...