去MS server数据库插入一条记录并返回这条记录的ID

往MS server数据库插入一条记录并返回这条记录的ID
去MS server数据库插入一条记录并返回这条记录的ID
去MS server数据库插入一条记录并返回这条记录的ID
CREATE procedure pr_AddProduct
去MS server数据库插入一条记录并返回这条记录的ID(
去MS server数据库插入一条记录并返回这条记录的ID    
@ChineseName nvarchar(50),
去MS server数据库插入一条记录并返回这条记录的ID    
@EnglishName nvarchar(50),
去MS server数据库插入一条记录并返回这条记录的ID    
@Supplier text,
去MS server数据库插入一条记录并返回这条记录的ID    
@MOQ float,
去MS server数据库插入一条记录并返回这条记录的ID    
@Material nvarchar(50),
去MS server数据库插入一条记录并返回这条记录的ID    
@Size        float    ,
去MS server数据库插入一条记录并返回这条记录的ID    
@SGW        nvarchar(50),
去MS server数据库插入一条记录并返回这条记录的ID    
@CategoryID    int    ,
去MS server数据库插入一条记录并返回这条记录的ID    
@TPI        text    ,
去MS server数据库插入一条记录并返回这条记录的ID    
@RSC decimal
去MS server数据库插入一条记录并返回这条记录的ID)
去MS server数据库插入一条记录并返回这条记录的ID
as
去MS server数据库插入一条记录并返回这条记录的ID  
Declare @ProductId int
去MS server数据库插入一条记录并返回这条记录的ID
begin transaction
去MS server数据库插入一条记录并返回这条记录的ID
insert into
去MS server数据库插入一条记录并返回这条记录的IDProduct
去MS server数据库插入一条记录并返回这条记录的ID(
去MS server数据库插入一条记录并返回这条记录的IDChineseName,
去MS server数据库插入一条记录并返回这条记录的IDEnglishName,
去MS server数据库插入一条记录并返回这条记录的IDSupplier,
去MS server数据库插入一条记录并返回这条记录的IDMOQ,
去MS server数据库插入一条记录并返回这条记录的IDMaterial,
去MS server数据库插入一条记录并返回这条记录的IDsize,
去MS server数据库插入一条记录并返回这条记录的IDSGW,
去MS server数据库插入一条记录并返回这条记录的IDCategoryID,
去MS server数据库插入一条记录并返回这条记录的IDTPI,
去MS server数据库插入一条记录并返回这条记录的IDRSC
去MS server数据库插入一条记录并返回这条记录的ID)
去MS server数据库插入一条记录并返回这条记录的ID
VALUES
去MS server数据库插入一条记录并返回这条记录的ID(
去MS server数据库插入一条记录并返回这条记录的ID    
@ChineseName ,
去MS server数据库插入一条记录并返回这条记录的ID    
@EnglishName,
去MS server数据库插入一条记录并返回这条记录的ID    
@Supplier ,
去MS server数据库插入一条记录并返回这条记录的ID    
@MOQ,
去MS server数据库插入一条记录并返回这条记录的ID    
@Material ,
去MS server数据库插入一条记录并返回这条记录的ID    
@Size        ,
去MS server数据库插入一条记录并返回这条记录的ID    
@SGW        ,
去MS server数据库插入一条记录并返回这条记录的ID    
@CategoryID    ,
去MS server数据库插入一条记录并返回这条记录的ID    
@TPI        ,
去MS server数据库插入一条记录并返回这条记录的ID    
@RSC
去MS server数据库插入一条记录并返回这条记录的ID)
去MS server数据库插入一条记录并返回这条记录的ID
Select @ProductId=@@IDENTITY
去MS server数据库插入一条记录并返回这条记录的ID
commit transaction
去MS server数据库插入一条记录并返回这条记录的ID
return @ProductId
去MS server数据库插入一条记录并返回这条记录的ID
GO
去MS server数据库插入一条记录并返回这条记录的ID
去MS server数据库插入一条记录并返回这条记录的ID
去MS server数据库插入一条记录并返回这条记录的ID
去MS server数据库插入一条记录并返回这条记录的ID
去MS server数据库插入一条记录并返回这条记录的ID
去MS server数据库插入一条记录并返回这条记录的ID
去MS server数据库插入一条记录并返回这条记录的ID     
public int AddProduct(Product prtd)
去MS server数据库插入一条记录并返回这条记录的ID去MS server数据库插入一条记录并返回这条记录的ID        
...{
去MS server数据库插入一条记录并返回这条记录的ID            
try
去MS server数据库插入一条记录并返回这条记录的ID去MS server数据库插入一条记录并返回这条记录的ID            
...{
去MS server数据库插入一条记录并返回这条记录的ID                
string strsql = "pr_AddProduct";
去MS server数据库插入一条记录并返回这条记录的ID                SqlParameter[] sqlParam 
=
去MS server数据库插入一条记录并返回这条记录的ID去MS server数据库插入一条记录并返回这条记录的ID                
...{
去MS server数据库插入一条记录并返回这条记录的ID                    
new SqlParameter("@ChineseName",SqlDbType.NVarChar),
去MS server数据库插入一条记录并返回这条记录的ID                    
new SqlParameter("@EnglishName",SqlDbType.NVarChar),
去MS server数据库插入一条记录并返回这条记录的ID                    
new SqlParameter("@Supplier",SqlDbType.Text),
去MS server数据库插入一条记录并返回这条记录的ID                    
new SqlParameter("@MOQ",SqlDbType.Float),
去MS server数据库插入一条记录并返回这条记录的ID                    
new SqlParameter("@Material",SqlDbType.NVarChar),
去MS server数据库插入一条记录并返回这条记录的ID                    
new SqlParameter("@size",SqlDbType.Float),
去MS server数据库插入一条记录并返回这条记录的ID                    
new SqlParameter("@SGW",SqlDbType.NVarChar),
去MS server数据库插入一条记录并返回这条记录的ID                    
new SqlParameter("@CategoryID",SqlDbType.Int),
去MS server数据库插入一条记录并返回这条记录的ID                    
new SqlParameter("@TPI",SqlDbType.Text),
去MS server数据库插入一条记录并返回这条记录的ID                    
new SqlParameter("@RSC",SqlDbType.NVarChar),
去MS server数据库插入一条记录并返回这条记录的ID                    
new SqlParameter("@ReturnValue",SqlDbType.Int)
去MS server数据库插入一条记录并返回这条记录的ID                }
;
去MS server数据库插入一条记录并返回这条记录的ID                sqlParam[
0].Value = prtd.ChineseName;
去MS server数据库插入一条记录并返回这条记录的ID                sqlParam[
1].Value = prtd.EnglishName;
去MS server数据库插入一条记录并返回这条记录的ID                sqlParam[
2].Value = prtd.Supplier;
去MS server数据库插入一条记录并返回这条记录的ID                sqlParam[
3].Value = prtd.MOQ;
去MS server数据库插入一条记录并返回这条记录的ID                sqlParam[
4].Value =prtd.Material;
去MS server数据库插入一条记录并返回这条记录的ID                sqlParam[
5].Value=prtd.Size;
去MS server数据库插入一条记录并返回这条记录的ID                sqlParam[
6].Value=prtd.Sgw;
去MS server数据库插入一条记录并返回这条记录的ID                sqlParam[
7].Value=prtd.CategoryID;
去MS server数据库插入一条记录并返回这条记录的ID                sqlParam[
8].Value = prtd.Tpi;
去MS server数据库插入一条记录并返回这条记录的ID                sqlParam[
9].Value = prtd.Rsc;
去MS server数据库插入一条记录并返回这条记录的ID        sqlParam[
10].Direction=System.Data.ParameterDirection.ReturnValue;
去MS server数据库插入一条记录并返回这条记录的ID                
去MS server数据库插入一条记录并返回这条记录的ID        SqlHelper.ExecuteNonQuery(SqlHelper.CONNSTR, CommandType.StoredProcedure, strsql, sqlParam);
去MS server数据库插入一条记录并返回这条记录的ID        
return Convert.ToInt32(sqlParam[10].Value);
去MS server数据库插入一条记录并返回这条记录的ID            }

去MS server数据库插入一条记录并返回这条记录的ID            
catch(Exception ex)
去MS server数据库插入一条记录并返回这条记录的ID去MS server数据库插入一条记录并返回这条记录的ID            
...{
去MS server数据库插入一条记录并返回这条记录的ID                
throw ex;
去MS server数据库插入一条记录并返回这条记录的ID            }

去MS server数据库插入一条记录并返回这条记录的ID        }

受启示于上面的代码:

在 public sealed class SqlHelper
    {

 

 

  public static int ExecuteNonQuery(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
        {
            int id;
            using (SqlConnection conn = new SqlConnection(_connString))
            {
                using (SqlCommand cmd = new SqlCommand(cmdText, conn))
                {
                    try
                    {
                        // PrepareCommand(cmd, conn,cmdType, cmdText, commandParameters);
                        int res;
                        if (conn.State != ConnectionState.Open)
                            conn.Open();
                        cmd.CommandType = cmdType;
                        if (commandParameters != null)
                        {
                            cmd.Parameters.AddRange(commandParameters);
                        }
                        res = cmd.ExecuteNonQuery();
                        conn.Close();
                        if (res >= 1)
                        {
                                                    
                            id = Convert.ToInt32(cmd.Parameters[5].Value);
                                                                            }
                        else
                        {

                           // MainID = -1;
                            id = -1;
                            return -1;
                        }

                    }
                    catch (SqlException)
                    {
                        throw;
                    }

                }
            }

 

 

        }

 

 

}

 

PROCEDURE:

 

CREATE PROCEDURE [dbo].[cor_InsertServerConfig]
 (
 @ServerName varchar(20),
 @ServerIP varchar(20),
 @ServerCategory varchar(25),
 @ServerState  char(1),
 @ServerAbility int
 --@ID  int output
  
 )

AS
 DECLARE @ID INT

BEGIN transaction

 
 
 SET NOCOUNT ON;

    IF EXISTS  (  SELECT 1 FROM [ServerConfig] WHERE ServerName =  @ServerName)
    BEGIN
     --return 0
 SELECT @ID = 0
 END
   
 ELSE
 BEGIN

 

 INSERT INTO [ServerConfig](ServerName,ServerIP,ServerCategory,ServerState,ServerAbility)
 VALUES (@ServerName,@ServerIP,@ServerCategory,@ServerState,@ServerAbility)
 


 --SELECT ID FROM INSERTED  --C#里'INSERTED'对象名无效
  --SELECT SCOPE_IDENTITY()
 
  set @ID = @@identity

  commit transaction

  ---select @ID 非Output,而是return,用select 即使成功插入返回的也为0 


  return @ID 
 
   
 
END

 

 

DAC:

 

 public static int AddServerConfig(string serverName, string serverIP, string serverCategory, string serverState, int serverAbility)
        {
           
          SqlCommand comm = new SqlCommand("cor_InsertServerConfig");

          comm.CommandType = CommandType.StoredProcedure;
         
           
             SqlParameter [] para = new SqlParameter[6];

            para[0] = new SqlParameter("@ServerName",SqlDbType.NVarChar,20);
            para[0].Value = serverName;
            para[1] = new SqlParameter ("@ServerIP",SqlDbType.VarChar,20);
            para[1].Value = serverIP; 
            para[2] = new SqlParameter("@ServerCategory",SqlDbType.NVarChar,25);
            para[2].Value = serverCategory;
            para[3] = new SqlParameter("@ServerState",SqlDbType.Char,1);
            para[3].Value =   serverState;
            para[4] = new SqlParameter("@ServerAbility",SqlDbType.Int);
            para[4].Value =  serverAbility;

           // para[5] = new SqlParameter("@ID ",SqlDbType.Int);

          
           // para[5].Direction=ParameterDirection.Output;  注非Output输出的值,而是return的值

            para[5] = new SqlParameter("@ReturnValue", SqlDbType.Int);

          //  para[5].Direction = ParameterDirection.ReturnValue;
           
            //para[5].Value = Convert.ToInt32(ID);
            para[5].Direction = System.Data.ParameterDirection.ReturnValue;

 

 

          
               SqlHelper.ExecuteNonQuery(CommandType.StoredProcedure, "cor_InsertServerConfig", para);
               return Convert.ToInt32(para[5].Value);


          

        }