各位高手帮忙看下问题出在哪里
在下感激不尽
//*************//
//**************//
int retval = cmd.ExecuteNonQuery();//执行到这里提示“过程或函数 'sp_insertTemp' 需要参数 '@OUTNUM',但未提供该参数。”
//*************//
//**************//
protected void btnSend_Click(object sender, EventArgs e)
{
DbParameter[] par ={
DbHelper.MakeInParam("@userid",(DbType)SqlDbType.Int,10,5),
DbHelper.MakeOutParam("@output",(DbType)SqlDbType.Int,10)
};
DbHelper.ExecuteNonQuery(connection, CommandType.StoredProcedure, "[dbo].[sp_insertTemp]", par);
} public static int ExecuteNonQuery(DbConnection connection, CommandType commandType, string commandText, params DbParameter[] commandParameters)
{
if (connection == null) throw new ArgumentNullException("connection"); // 创建DbCommand命令,并进行预处理
DbCommand cmd = Factory.CreateCommand();
bool mustCloseConnection = false;
PrepareCommand(cmd, connection, (DbTransaction)null, commandType, commandText, commandParameters, out mustCloseConnection);
// 执行DbCommand命令,并返回结果.
//*************//
//**************//
int retval = cmd.ExecuteNonQuery();//执行到这里提示“过程或函数 'sp_insertTemp' 需要参数 '@OUTNUM',但未提供该参数。”
//*************//
//**************//
// 清除参数,以便再次使用.
cmd.Parameters.Clear();
if (mustCloseConnection)
connection.Close();
return retval;
}
public static DbParameter MakeInParam(string ParamName, DbType DbType, int Size, object Value)
{
return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
}
public static DbParameter MakeOutParam(string ParamName, DbType DbType, int Size)
{
return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);
}
public static DbParameter MakeParam(string ParamName, DbType DbType, Int32 Size, ParameterDirection Direction, object Value)
{
DbParameter param; param = Provider.MakeParam(ParamName, DbType, Size);
param.Direction = Direction;
if (!(Direction == ParameterDirection.Output && Value == null))
param.Value = Value; return param;
} /// <summary>
/// 将DbParameter参数数组(参数值)分配给DbCommand命令.
/// 这个方法将给任何一个参数分配DBNull.Value;
/// 该操作将阻止默认值的使用.
/// </summary>
/// <param name="command">命令名 </param>
/// <param name="commandParameters">DbParameters数组 </param>
private static void AttachParameters(DbCommand command, DbParameter[] commandParameters)
{
if (command == null) throw new ArgumentNullException("command");
if (commandParameters != null)
{
foreach (DbParameter p in commandParameters)
{
if (p != null)
{
// 检查未分配值的输出参数,将其分配以DBNull.Value.
if ((p.Direction == ParameterDirection.InputOutput || p.Direction == ParameterDirection.Input) &&
(p.Value == null))
{
p.Value = DBNull.Value;
}
command.Parameters.Add(p);
}
}
}
} private static void PrepareCommand(DbCommand command, DbConnection connection, DbTransaction transaction, CommandType commandType, string commandText, DbParameter[] commandParameters, out bool mustCloseConnection)
{
if (command == null) throw new ArgumentNullException("command");
if (commandText == null || commandText.Length == 0) throw new ArgumentNullException("commandText"); //如果数据库连接状态为关闭则打开它
if (connection.State != ConnectionState.Open)
{
mustCloseConnection = true;
connection.Open();
}
else
{
mustCloseConnection = false;
} // 给命令分配一个数据库连接.
command.Connection = connection; // 设置命令文本(存储过程名或SQL语句)
command.CommandText = commandText; // 分配事务
if (transaction != null)
{
if (transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction");
command.Transaction = transaction;
} // 设置命令类型.
command.CommandType = commandType; // 分配命令参数
if (commandParameters != null)
{
AttachParameters(command, commandParameters);
}
return;
}
SQL SERVER2005存储过程 create PROC [dbo].[sp_insertTemp](@UserId nvarchar(50), @OUTNUM int OUTPUT)
AS
BEGIN TRAN
INSERT INTO [ZhangBY].[dbo].[temp]([as])
VALUES(@UserId)
IF @@error <> 0
BEGIN
ROLLBACK TRAN
SELECT @OUTNUM=0
END
ELSE
BEGIN
COMMIT TRAN
SELECT @OUTNUM=1
END
在下感激不尽
//*************//
//**************//
int retval = cmd.ExecuteNonQuery();//执行到这里提示“过程或函数 'sp_insertTemp' 需要参数 '@OUTNUM',但未提供该参数。”
//*************//
//**************//
protected void btnSend_Click(object sender, EventArgs e)
{
DbParameter[] par ={
DbHelper.MakeInParam("@userid",(DbType)SqlDbType.Int,10,5),
DbHelper.MakeOutParam("@output",(DbType)SqlDbType.Int,10)
};
DbHelper.ExecuteNonQuery(connection, CommandType.StoredProcedure, "[dbo].[sp_insertTemp]", par);
} public static int ExecuteNonQuery(DbConnection connection, CommandType commandType, string commandText, params DbParameter[] commandParameters)
{
if (connection == null) throw new ArgumentNullException("connection"); // 创建DbCommand命令,并进行预处理
DbCommand cmd = Factory.CreateCommand();
bool mustCloseConnection = false;
PrepareCommand(cmd, connection, (DbTransaction)null, commandType, commandText, commandParameters, out mustCloseConnection);
// 执行DbCommand命令,并返回结果.
//*************//
//**************//
int retval = cmd.ExecuteNonQuery();//执行到这里提示“过程或函数 'sp_insertTemp' 需要参数 '@OUTNUM',但未提供该参数。”
//*************//
//**************//
// 清除参数,以便再次使用.
cmd.Parameters.Clear();
if (mustCloseConnection)
connection.Close();
return retval;
}
public static DbParameter MakeInParam(string ParamName, DbType DbType, int Size, object Value)
{
return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
}
public static DbParameter MakeOutParam(string ParamName, DbType DbType, int Size)
{
return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);
}
public static DbParameter MakeParam(string ParamName, DbType DbType, Int32 Size, ParameterDirection Direction, object Value)
{
DbParameter param; param = Provider.MakeParam(ParamName, DbType, Size);
param.Direction = Direction;
if (!(Direction == ParameterDirection.Output && Value == null))
param.Value = Value; return param;
} /// <summary>
/// 将DbParameter参数数组(参数值)分配给DbCommand命令.
/// 这个方法将给任何一个参数分配DBNull.Value;
/// 该操作将阻止默认值的使用.
/// </summary>
/// <param name="command">命令名 </param>
/// <param name="commandParameters">DbParameters数组 </param>
private static void AttachParameters(DbCommand command, DbParameter[] commandParameters)
{
if (command == null) throw new ArgumentNullException("command");
if (commandParameters != null)
{
foreach (DbParameter p in commandParameters)
{
if (p != null)
{
// 检查未分配值的输出参数,将其分配以DBNull.Value.
if ((p.Direction == ParameterDirection.InputOutput || p.Direction == ParameterDirection.Input) &&
(p.Value == null))
{
p.Value = DBNull.Value;
}
command.Parameters.Add(p);
}
}
}
} private static void PrepareCommand(DbCommand command, DbConnection connection, DbTransaction transaction, CommandType commandType, string commandText, DbParameter[] commandParameters, out bool mustCloseConnection)
{
if (command == null) throw new ArgumentNullException("command");
if (commandText == null || commandText.Length == 0) throw new ArgumentNullException("commandText"); //如果数据库连接状态为关闭则打开它
if (connection.State != ConnectionState.Open)
{
mustCloseConnection = true;
connection.Open();
}
else
{
mustCloseConnection = false;
} // 给命令分配一个数据库连接.
command.Connection = connection; // 设置命令文本(存储过程名或SQL语句)
command.CommandText = commandText; // 分配事务
if (transaction != null)
{
if (transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction");
command.Transaction = transaction;
} // 设置命令类型.
command.CommandType = commandType; // 分配命令参数
if (commandParameters != null)
{
AttachParameters(command, commandParameters);
}
return;
}
SQL SERVER2005存储过程 create PROC [dbo].[sp_insertTemp](@UserId nvarchar(50), @OUTNUM int OUTPUT)
AS
BEGIN TRAN
INSERT INTO [ZhangBY].[dbo].[temp]([as])
VALUES(@UserId)
IF @@error <> 0
BEGIN
ROLLBACK TRAN
SELECT @OUTNUM=0
END
ELSE
BEGIN
COMMIT TRAN
SELECT @OUTNUM=1
END
DbHelper.MakeInParam("@userid",(DbType)SqlDbType.Int,10,5),
DbHelper.MakeOutParam("@OUTNUM",(DbType)SqlDbType.Int,10)
};
{
DbParameter[] par ={
DbHelper.MakeInParam("@userid",(DbType)SqlDbType.Int,10,5),
DbHelper.MakeOutParam("@OUTNUM ",(DbType)SqlDbType.Int,10)
};
DbHelper.ExecuteNonQuery(connection, CommandType.StoredProcedure, "[dbo].[sp_insertTemp]", par);
}
{
DbParameter[] par ={
DbHelper.MakeInParam("@userid",(DbType)SqlDbType.Int,10,5),
DbHelper.MakeOutParam("@OUTNUM ",(DbType)SqlDbType.Int,10)
};
DbHelper.ExecuteNonQuery(connection, CommandType.StoredProcedure, "[dbo].[sp_insertTemp]", par);
}