从数据类型 decimal 转换为 numeric 时出错

从数据类型 decimal 转换为 numeric 时出错。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: 从数据类型 decimal 转换为 numeric 时出错。

源错误:


行 46:            {
行 47:                PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
行 48:                int val = cmd.ExecuteNonQuery();行 49:                cmd.Parameters.Clear();
行 50:                return val;


源文件: E:/VS 2005/统计局/WebApp/DBUtility/SQLHelper.cs    行: 48

堆栈跟踪:


[SqlException (0x80131904): 从数据类型 decimal 转换为 numeric 时出错。]
  System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +862234
  System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +739110
  System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +188
  System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1956
  System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +149
  System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +903
  System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +132
  System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +415
  System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +135
  DBUtility.SqlHelper.ExecuteNonQuery(String connectionString, CommandType cmdType, String cmdText, SqlParameter[] commandParameters) in E:/VS 2005/统计局/WebApp/DBUtility/SQLHelper.cs:48
  SQLServerDAL.Article.AddEditArticles(ArticleInfo model) in E:/VS 2005/统计局/WebApp/SQLServerDAL/Article.cs:68
  BLL.Article.AddEditArticles(ArticleInfo model) in E:/VS 2005/统计局/WebApp/BLL/Article.cs:19
  Admin_Articles_EditArticles.btnAdd_Click(Object sender, EventArgs e) in e:/VS 2005/统计局/WebApp/Web/Admin/Articles/EditArticles.aspx.cs:62
  System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
  System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
  System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
  System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
  System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102

 

 

USE [APPDB_Web]
GO
/****** 对象:  StoredProcedure [dbo].[Pap_Articles]    脚本日期: 12/19/2007 15:49:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[Pap_Articles]
(
   
@dc_Id decimal(18,0) OUTPUT,
   
@vc_Title varchar(255) ,
   
@vc_Color varchar(10) ,
   
@vc_Key varchar(50) ,
   
@vc_From varchar(50) ,
   
@txt_text text ,
   
@i_Userid int ,
   
@bt_Up bit ,
   
@dt_Update datetime ,
   
@bt_Red bit ,
   
@bt_In bit ,
   
@bt_Out bit ,
   
@vc_Author varchar(50) ,
   
@i_Mid int,
   
@i_Ret int OUTPUT
)
AS
IF @dc_Id=0
BEGIN
   
BEGIN TRAN
   
--添加文章信息
    INSERT INTO tb_Articles(
   
[vc_Title],[vc_Color],[vc_Key],[vc_From],[txt_text],[i_Userid],[bt_Up],[dt_Update],[bt_Red],[bt_In],[bt_Out],[vc_Author],[i_Mid]
    )
VALUES(
   
@vc_Title,@vc_Color,@vc_Key,@vc_From,@txt_text,@i_Userid,@bt_Up,@dt_Update,@bt_Red,@bt_In,@bt_Out,@vc_Author,@i_Mid
    )

   
--获取添加后文章编号
    IF @@ROWCOUNT=1
   
BEGIN
       
SET @dc_Id=@@IDENTITY
   
END

   
--插入流程信息
    INSERT INTO tb_ArticlesAudiFlowInfo([dc_AID],[i_FlowId],[i_ToUserId],[bt_Auding],[bt_Auded],[bt_Return])
   
SELECT TOP 1 @dc_Id,i_FlowId,i_UserId,1,0,0 FROM tb_ArticlesAudiFlow where i_MenuId=@i_Mid ORDER BY i_FlowId

   
IF @@ERROR=0
   
BEGIN
       
SET @i_Ret=1   --添加成功
        COMMIT TRAN
   
END
   
ELSE
   
BEGIN
       
SET @i_Ret=0   --添加失败
        ROLLBACK TRAN
   
END
END

 

 

 

 

 

最终解决办法:

看关键的红色字,把

/// <summary>
       
/// 添加编辑文章及流程信息
       
/// </summary>
       
/// <param name="model"> 文章相关字段 </param>
       
/// <returns></returns>
        public decimal AddEditArticles(ArticleInfo model)
        {
            SqlParameter[] parameters
= SqlHelper.GetCachedParameters( " Pap_Articles " );
           
if (parameters == null )
            {
                parameters
= new SqlParameter[]{
                   
new SqlParameter("@dc_Id" , SqlDbType.Decimal),
                   
new SqlParameter( " @vc_Title " , SqlDbType.VarChar, 255 ),
                   
new SqlParameter( " @vc_Color " , SqlDbType.VarChar, 10 ),
                   
new SqlParameter( " @vc_Key " , SqlDbType.VarChar, 50 ),
                   
new SqlParameter( " @vc_From " , SqlDbType.VarChar, 50 ),
                   
new SqlParameter( " @txt_text " , SqlDbType.Text),
                   
new SqlParameter( " @i_Userid " , SqlDbType.Int, 4 ),
                   
new SqlParameter( " @bt_Up " , SqlDbType.Bit, 1 ),
                   
new SqlParameter( " @dt_Update " , SqlDbType.DateTime),
                   
new SqlParameter( " @bt_Red " , SqlDbType.Bit, 1 ),
                   
new SqlParameter( " @bt_In " , SqlDbType.Bit, 1 ),
                   
new SqlParameter( " @bt_Out " , SqlDbType.Bit, 1 ),
                   
new SqlParameter( " @vc_Author " , SqlDbType.VarChar, 50 ),
                   
new SqlParameter( " @i_Mid " , SqlDbType.Int, 4 ),
                   
new SqlParameter( " @i_Ret " ,SqlDbType.Int)
                };

                SqlHelper.CacheParameters(
" Pap_Articles " , parameters);
            }

            parameters[
0].Direction = ParameterDirection.InputOutput;
            parameters[
0].Value =
model.dc_Id;

            parameters[
1 ].Value = model.vc_Title;
            parameters[
2 ].Value = model.vc_Color;

            parameters[
3 ].Value = model.vc_Key;
            parameters[
4 ].Value = model.vc_From;

            parameters[
5 ].Value = model.txt_text;
            parameters[
6 ].Value = model.i_Userid;

            parameters[
7 ].Value = model.bt_Up;
            parameters[
8 ].Value = model.dt_Update;

            parameters[
9 ].Value = model.bt_Red;
            parameters[
10 ].Value = model.bt_In;

            parameters[
11 ].Value = model.bt_Out;
            parameters[
12 ].Value = model.vc_Author;

            parameters[
13 ].Value = model.i_Mid;
            parameters[
14 ].Direction = ParameterDirection.Output;

            SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnectionString, CommandType.StoredProcedure,
" Pap_Articles " , parameters);

           
return ( decimal )parameters[ 0 ].Value;
        }

  parameters[0].Direction = ParameterDirection.InputOutput;
            parameters[
0].Value =
model.dc_Id;

增加:

  parameters[0].Precise=18

  parameters[0].Scale=0

这样就解决问题了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

turbocc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值