sqlparameter输出参数赋值失败

lichking911 2014-08-20 02:48:07
ALTER PROCEDURE [dbo].[sp_GetInsertID]
-- Add the parameters for the stored procedure here
@tblName nvarchar(100), --表名
@columnName nvarchar(1000), --列名集合
@columnValue nvarchar(1000), --数值集合
@id bigint output --返回的刚插入的ID
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
declare @strSQL nvarchar(4000) -- 主语句
set @strSQL = 'INSERT INTO '+@tblName+' ('+@columnName+') VALUES ('+@columnValue+')'
exec(@strSQL)
set @id=scope_identity()


END

上面是SQL里的存储过程。
下面是C#的代码,主调用函数ExecuteProcedure是用别人开发的包。
 SqlParameter qtbl = new SqlParameter("@tblName",SqlDbType.NVarChar);
qtbl.Value = "[HTPMS].[dbo].[T_LXWZ_FenLei]";
SqlParameter cname = new SqlParameter("@columnName",SqlDbType.NVarChar);
cname.Value = "[编码],[名称],[备注],[P_ID]";
SqlParameter cvalue = new SqlParameter("@columnValue",SqlDbType.NVarChar);
cvalue.Value = String.Format("'{0}','{1}','{2}',{3}",this.tempTL.Num,this.tempTL.Name,this.tempTL.Info,this.tempTL.PId);
SqlParameter qid = new SqlParameter("@id", SqlDbType.BigInt);
qid.Direction = ParameterDirection.Output;
try
{
if (WTechSoft.DBUtility.SqlHelper.ExecuteProcedure("sp_GetInsertID", new SqlParameter[] { qtbl, cname, cvalue, qid }) > 0)
{
this.tempTL.Id = Convert.ToInt64(qid.Value.ToString());
this.DialogResult = System.Windows.Forms.DialogResult.OK;
this.Close();
}
}

然后实验了一下,存储过程执行了,数据库里插入了数据,可是应该返回的
SqlParameter qid
却是没有值。请问是我的代码的问题吗?怎么改?
...全文
62 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧