您的位置:首页 > 数据库

SqlServer建立存储过程,方便.NET插入自增字段

2017-02-04 22:53 274 查看
首先,需要在数据库中创建一个表,以在test数据库创建tableNo表为例:

create table tablesNo
(
tableName varchar(30) not null,    --表名
num int not null --行数
)


然后在数据库中 --> 可编程性 --> 存储过程 --> 新建存储过程 ,也可以在sql中执行代码如下:

USE [test]        --数据库名
GO
/****** Object:  StoredProcedure [dbo].[usp_Id]    Script Date: 2017/2/1 星期三 下午 6:48:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create  proc [dbo].[usp_Id]        --新建一个存储过程名为usp_Id
@tableName nvarchar(50),
@id int output
as
declare @erro int
set @erro=0
begin transaction
  select @id=num+1 from tablesNo where tableName=@tableName
  set @erro=@erro+@@ERROR
  update tablesNo set num=num+1 where tableName=@tableName
  set @erro=@erro+@@ERROR
  if(@erro=0)
    begin
    commit transaction
    end
else
    begin
    rollback transaction
    end


其次在.NET中的DAL层创建一个CommonService类,代码如下:

  using System.Data;  

  using System.Data.SqlClient;

public class CommonService
{
public static int GetId(string tableName)           //存储过程ID
{
int id = 0;
string sql = "usp_Id";
SqlParameter par1 = new SqlParameter("@tableName", tableName);
par1.Direction = ParameterDirection.Input;
SqlParameter par2 = new SqlParameter("@id", SqlDbType.Int);
par2.Direction = ParameterDirection.Output;
SqlConnection con = null;
SqlCommand cmd = null;
try
{
con = SqlHelper.Open();
cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = sql;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(par1);
cmd.Parameters.Add(par2);
cmd.ExecuteNonQuery();
id = Convert.ToInt32(cmd.Parameters["@id"].Value);

}
catch (SqlException ex)
{

}
finally
{
con.Close();
}

return id;

}
}


应用方法如下:

Id = CommonService.GetId("ClickAccessAmount");  


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐