错误[HY090] [Informix .NET提供程序]无效的字符串或缓冲区长度。

时间:2014-02-25 17:45:26

标签: c# asp.net ado.net informix

我得到以下异常:

"ERROR [HY090] [Informix .NET provider]Invalid string or buffer length."

当我尝试调用以下方法时:

  public static int PrepareSal(int year, int month, int calcYear)
        {
            using (IfxConnection con = new IfxConnection(ConfigurationManager.ConnectionStrings["testable"].ToString()))
            {
                int res = 0;
                StringBuilder cmdTxt = new StringBuilder();
                cmdTxt.Append("hkr_calc");
                using (var myIfxCmd = new IfxCommand(cmdTxt.ToString(), con))
                {
                    myIfxCmd.CommandType = CommandType.StoredProcedure;

                    if (con.State == ConnectionState.Closed)
                    {
                        con.Open();
                    }
                    myIfxCmd.Parameters.Clear();
                    myIfxCmd.Parameters.Add("p_year", IfxType.Integer, year);
                    myIfxCmd.Parameters.Add("p_month", IfxType.Integer, month);
                    myIfxCmd.Parameters.Add("p_calc_year", IfxType.Integer, calcYear);
                 //   myIfxCmd.CommandTimeout = 15000;
                    res = myIfxCmd.ExecuteNonQuery(); //exception
                }
                con.Close();
                con.Dispose();
                return res;
            }
        }

当我在我的sql编辑器中调用该过程时,它工作正常,但大约需要10分钟!

1 个答案:

答案 0 :(得分:1)

本来可以期待的 cmdTxt.append(hkr_calc @p_year, @p_month, @p_calc_year)或其他一些。 ?无论如何,标记可能是参数的占位符。

PS你不需要在一个使用区块中关闭或处理con,并且它总是最初关闭,除非你已经填满了连接池。