我传参执行之后他返回的值为什么是0呢 CREATE procedure Pro_InsertAdmin
@Aname nchar(20),
@Apwd nchar(20)
As
Begin tran
if not exists(select * from Admin where Aname =@Aname)
begin
insert into Admin
values(@Aname,@Apwd,0,0,0,0)
end
rollback
return @@error
public static int InsertAdmin(Admininfo a)
{
try
{
Database db = new Database();
SqlParameter[] prams = {
new SqlParameter("@Aname",SqlDbType.NChar,20),
new SqlParameter("@Apwd",SqlDbType.NChar,20),
}; prams[0].Value = a.Aname;
prams[1].Value = a.Apwd;
return (db.RunProc("Pro_InsertAdmin", prams));
}
catch (SqlException e)
{ throw new Exception(e.Message, e); }
}
-----------------------------------------------------------------------------------------
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="procName">存储过程名称</param>
/// <param name="prams">存储过程所需参数</param>
/// <returns>返回存储过程返回值</returns>
public int RunProc(string procName, SqlParameter[] prams)
{
SqlCommand cmd = CreateCommand(procName, prams);
cmd.ExecuteNonQuery();
this.Close();
return (int)cmd.Parameters["ReturnValue"].Value;
}
★ぉ旋あ律い(281300810) 10:52:36
private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
{
// 确认打开连接
Open();
SqlCommand cmd = new SqlCommand(procName, con);
cmd.CommandType = CommandType.StoredProcedure; // 依次把参数传入存储过程
if (prams != null)
{
foreach (SqlParameter parameter in prams)
cmd.Parameters.Add(parameter);
} // 加入返回参数
cmd.Parameters.Add(
new SqlParameter("ReturnValue", SqlDbType.Int, 4,
ParameterDirection.ReturnValue, false, 0, 0,
string.Empty, DataRowVersion.Default, null)); return cmd;
}
@Aname nchar(20),
@Apwd nchar(20)
As
Begin tran
if not exists(select * from Admin where Aname =@Aname)
begin
insert into Admin
values(@Aname,@Apwd,0,0,0,0)
end
rollback
return @@error
你这不管有没有错,都回滚了,判断下,出错了就回滚!
CREATE procedure Pro_InsertAdmin
@Aname nchar(20),
@Apwd nchar(20)
As
begin try
begin tran
if not exists(select * from Admin where Aname =@Aname)
begin
insert into Admin
values(@Aname,@Apwd,0,0,0,0)
end
commit tran
end try
begin catch
rollback tran
return @@error
end catch这样试试呢
@Aname nvarchar(50),
@Apwd nvarchar(50)
As
Begin tran
if not exists(select * from UserLogon where UserName =@Aname)
begin
insert into UserLogon
values(@Aname,@Apwd)
end
commit tran--add this
-- rollback
return @@error
@Aname nchar(20),
@Apwd nchar(20)
As
begin tran
if not exists(select * from Admin where Aname =@Aname)
begin
insert into Admin
values(@Aname,@Apwd,0,0,0,0)
commit tran
end
else
rollback tran你自己在查询分析器里面试着运行一下
你那个他会提示错误ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION。