Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将varchar转换为数据类型numeric时出现算术溢出错误。asp.net中的错误_C#_Asp.net - Fatal编程技术网

C# 将varchar转换为数据类型numeric时出现算术溢出错误。asp.net中的错误

C# 将varchar转换为数据类型numeric时出现算术溢出错误。asp.net中的错误,c#,asp.net,C#,Asp.net,我知道可能有几处提到了我在问题中提到的错误,但我认真地尝试了,但它对我没有效果 我有一个代码,用于动态添加菜单。因此,如果菜单位于根目录中,其父菜单将始终为0。所有的工作都很好,但当我调试下面的代码行时 MainEnqMkey = InsertUpdateDelete.InsertUpdateDeleteCls.InsertUpdateDelete_sql(strMode, strMkey, "WMS_Menu_Hdr", "MKEY", "MEH", StrPubBldg.ToString()

我知道可能有几处提到了我在问题中提到的错误,但我认真地尝试了,但它对我没有效果

我有一个代码,用于动态添加菜单。因此,如果菜单位于根目录中,其父菜单将始终为0。所有的工作都很好,但当我调试下面的代码行时

MainEnqMkey = InsertUpdateDelete.InsertUpdateDeleteCls.InsertUpdateDelete_sql(strMode, strMkey, "WMS_Menu_Hdr", "MKEY", "MEH", StrPubBldg.ToString());
我得到的错误是

将varchar转换为数据类型numeric时出现算术溢出错误

下面是我的代码

public bool Save()
{
    int strMkey;
    if (txt_menu_name.Value == "" && txt_url_name.Text == "" && HidSelNode.Value != "0")
    {
        strMode = "M";
        strMkey = Convert.ToInt32(HidSelNode.Value);
    }
    else
    {
        strMode = "A";
        strMkey = 0;
    }
    if (1 == 1)
    {
        SqlConnection ObjPriCon = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["SqlConn"].ToString());
        ObjPriCon.Open();

        StringBuilder StrPubBldg = new StringBuilder();
        XmlWriter xw = XmlWriter.Create(StrPubBldg);
        xw.WriteStartElement("DocumentElement");
        xw.WriteStartElement("WMS_Menu_Hdr");
        xw.WriteElementString("DELETE_FLAG", "N");
        if (strMode == "M")
        {
            xw.WriteElementString("MENU_NAME", txt_selnode.Text);
            xw.WriteElementString("URL", txt_selurl.Text);
        }
        else
        {
            string result;
            string strquery = "select max(order_by) +10 order_by from WMS_Menu_Hdr where PARENT_MKEY=@PARENT_MKEY";
            SqlCommand ObjPriCmd = new SqlCommand(strquery, ObjPriCon);
            if (HidSelNode.Value == "0")
            {
                ObjPriCmd.Parameters.AddWithValue("@PARENT_MKEY", HidSelNode.Value);
                result = ObjPriCmd.ExecuteScalar().ToString();
            }
            else
            {
                ObjPriCmd = new SqlCommand("select ISNULL(a.order_by, max(b.order_by) +10) next_orderby " +
                                  " from WMS_Menu_Hdr b," +
                                 "(select max(order_by) +10 order_by from WMS_Menu_Hdr  where PARENT_MKEY= '" + HidSelNode.Value + "') a " +
                                 " where mkey='" + HidSelNode.Value + "' group by a.order_by", ObjPriCon);
                strquery = ObjPriCmd.ExecuteScalar().ToString();
            }
            xw.WriteElementString("MENU_NAME", txt_menu_name.Value);
            xw.WriteElementString("URL", txt_url_name.Text);
            xw.WriteElementString("CREATION_DATE", System.DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss"));
            xw.WriteElementString("PARENT_MKEY", HidSelNode.Value);
            xw.WriteElementString("ORDER_BY", strquery);
        }

        xw.WriteEndElement();
        xw.Close();

        MainEnqMkey = InsertUpdateDelete.InsertUpdateDeleteCls.InsertUpdateDelete_sql(strMode, strMkey, "WMS_Menu_Hdr", "MKEY", "MEH", StrPubBldg.ToString());
    }
    if (MainEnqMkey.Equals(0))
    {
        ClientScript.RegisterStartupScript(this.GetType(), "SuccessScript", "alert('Some Error Occured While Saving Data !!')", true);
        return false;
    }
    else
    {
        return true;
    }
}

请指出此处的错误所在

问题是您的
父项
数字
,但您插入了
'0'
,这是
varchar

我相信SQL应该是这样的(
'0'
=>
0
):

更新。


插入
varchar
时,您的
ORDER\u BY
字段也是
numeric
。因此,您需要考虑一个表示
select max(order\u by)的数字从WMS\u菜单\u Hdr中的父项\u MKEY=@PARENT\u MKEY
或将
订单的类型更改为
varchar

什么是
MainEnqMkey
以及返回什么
InsertUpdateDelete\u sql
?那么,您到底从哪里得到错误?错误在
InsertUpdateDelete\u sql
中。。我们需要查看它的实现情况。@dasblinkenlight:是的,现在错误没有出现,但是在表中的
Sr_no
中,值变为NULL为什么?我也尝试了0,但仍然得到相同的错误还有一件事,我没有插入
Sr_no
,在表中也得到NULL,
N
是我的
delete\u标志
@coder我删除了我以前的评论,因为它是错误的(太混淆了你如何转储所有数据的方式-不太可读),无论如何另一个问题是
ORDER\u BY
插入
varchar
选择max(ORDER\u BY)时,它也是
数值的
)从WMS_菜单中的+10 order_by_Hdr,其中PARENT_MKEY=@PARENT_MKEY'
)ohh,那么您是否可以更新
order_by
部分的答案,以便我可以编辑和check@coder更新了我的答案,但这取决于您如何解决此问题,因为我不知道此字段如何用于系统的其他部分(但看起来它只是一个错误的类型).
insert into WMS_Menu_Hdr (MKEY,DELETE_FLAG,MENU_NAME,URL,CREATION_DATE,PARENT_MKEY,ORDER_BY) values(44,'N','WMS Root','test.aspx','01-12-2015 04:51:40',0,'select max(order_by) +10 order_by from WMS_Menu_Hdr where PARENT_MKEY=@PARENT_MKEY')