ALTER proc [dbo].[InsertUser]
(@userID int output ,
@userName varchar(50),
@password varchar(50),
@userAge int ,
@userAddress varchar(50),
@telephone int
)
as
insert into users values
(
@userName ,
@password,
@userAge ,
@userAddress ,
@telephone
)
set @userID =(select max(userID) from users )
return 8
public string InsertUsers(ref Users user)
{
SqlParameter[] sp = {
//第一种 new SqlParameter("@userID",SqlDbType.Int,32,ParameterDirection.Output,false,0,0,string.Empty,DataRowVersion.Default,null),
//第二种
new SqlParameter("@userID",user.UserID),
new SqlParameter("@userName",user.UserName),
new SqlParameter("@password",user.Password),
new SqlParameter("@userAge",user.UserAge),
new SqlParameter("@userAddress",user.UserAddress),
new SqlParameter("@telephone",user.Telephone),
};
//第二种
sp[0].Direction = ParameterDirection.Output;//出输出参数对应数据库中的output参数
SQLHelper.SQLHelper.ExecuteNonQuery(SQLHelper.SQLHelper.DBConnectionString, CommandType.StoredProcedure, "InsertUser", sp);
string userID = sp[0].Value.ToString();
return userID;
}
public string InsertUser(ref Users user)
{
SqlConnection con = new SqlConnection(SQLHelper.SQLHelper.DBConnectionString);
SqlCommand cmd = new SqlCommand("InsertUser", con);
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
cmd.Parameters.AddWithValue("@userID", user.UserID);
cmd.Parameters.AddWithValue("@userName", user.UserName);
cmd.Parameters.AddWithValue("@password", user.Password);
cmd.Parameters.AddWithValue("@userAge", user.UserAge);
cmd.Parameters.AddWithValue("@userAddress", user.UserAddress);
cmd.Parameters.AddWithValue("@telephone", user.Telephone);
//输出参数
cmd.Parameters[0].Direction = ParameterDirection.Output;
//返回值
SqlParameter sp = new SqlParameter("Returnvalue", SqlDbType.VarChar, 50, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null);
cmd.Parameters.Add(sp);
string count =cmd.ExecuteNonQuery().ToString();//影响行数
string outputValue = cmd.Parameters[0].Value.ToString();//输出参数 (注意是value属性)
string returnValue = cmd.Parameters["Returnvalue"].Value.ToString();//返回值参数
return outputValue;
}
第一个方法是用数组 ,里面包含两种写法,第一种 写法 只用一条语句就能实现功能,,
第二种写法需要特别指定下Direction属性
这两种方法都能实现输出参数,第二种原始写法比较灵活 可以用于返回值和输出参数同时被需要