日期:2014-05-18  浏览次数:21021 次

问一个关于executesql在c#中应用的问题
在sql   server的查询分析器中可以这样定,以得到插入数据的主键

DECLARE   @sql   NVARCHAR(4000)
DECLARE   @Result   INT
SET   @sql   =   'INSERT   INTO   Spec_Friends(f_Title,   Spec_ID)   VALUES   ( ' 'abc ' ',0)   SET   @Return   =   @@Identity '
exec   sp_executesql   @sql,   '@Return   INT   OUTPUT ',@Result   OUTPUT
PRINT     @Result

但在c#怎么得到这个结果呢?我试过多种方法,但还是不行,贴个代码

                        SqlParameter[]   sqlParams   =   new   SqlParameter[3];
                        sqlParams[0]   =   new   SqlParameter( "@statement ",   SqlDbType.NVarChar);
                        sqlParams[0].Value   =   sql;

                        sqlParams[1]   =   new   SqlParameter( "@parameters ",   SqlDbType.NVarChar,   1000);
                        sqlParams[1].Value   =   "@Return   INT   OUTPUT ";

                        sqlParams[2]   =   new   SqlParameter( "@Return ",   returnType);
                        sqlParams[2].Direction   =   ParameterDirection.Output;

                        new   SQLOperator(this._SqlConn).ExecuteProcedure( "sp_executesql ",   ref   sqlParams);     //执行存储过程并返回参数
                        return   sqlParams[2].Value;

------解决方案--------------------
没有指定p2为输出参数,用存储过程吧.