各位老大好,这几天用使用OleDbCommand操作informix数据库遇到了问题无法解决,郁闷,帮忙看看哈
只要dict里面的值大于int,执行cmd.ExecuteReader(CommandBehavior.SingleRow)就会报错,可是我那是uint啊!!informix数据库里面的FP类型是decimal(10)
在Oracle下面运行是可以的private string mSelectSql = "select FP0,FP1,FP2,FP3 from tfa_re where FP0 = ? and FP1 = ? and FP2 = ? and FP3 = ?";        private void Test()
        {
            Dictionary<string, uint> dict = new Dictionary<string, uint>();
            dict["FP0"] = 1244572465;
            dict["FP1"] = 2147483649;
            dict["FP2"] = 1323456546;
            dict["FP3"] = 0;            using (mConnection = new OleDbConnection(mConnectStr))
            {
                try
                {
                    mConnection.Open();                    OleDbCommand cmd = CreateCommand(mSelectSql, dict);
                    if (cmd != null)
                    {
                        cmd.ExecuteReader(CommandBehavior.SingleRow);
                    }
                }
                catch (Exception ex)
                {
                }
            }
        }        private OleDbCommand CreateCommand(string sql, Dictionary<string, uint> parameter)
        {
            if (mConnection == null)
            {
                return null;
            }            List<OleDbParameter> paramList = new List<OleDbParameter>();            if (parameter != null)
            {
                foreach (string key in parameter.Keys)
                {
                    OleDbParameter parm = new OleDbParameter();
                    parm.ParameterName = key;
                    parm.Value = parameter[key];                    paramList.Add(parm);
                }
            }            OleDbCommand cmd = mConnection.CreateCommand();
            cmd.CommandText = sql;
            cmd.CommandType = CommandType.Text;
            cmd.Transaction = null;
            cmd.Parameters.AddRange(paramList.ToArray());            return cmd;
        }System.InvalidOperationException:{"因为数据值溢出了提供程序所使用的类型,所以命令参数[1] '' 的转换失败。"}
   在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
   在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
   在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleRow(tagDBPARAMS dbParams, Object& executeResult)
   在 System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
   在 System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
   在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   在 System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)
   在 InfromixText.Form1.Test() 位置 D:\My Projects\IBatisTest\InfromixText\Form1.cs:行号 89