public int ExecuteNonQuery(params object[] paraValues)
        {
            using (SqlConnection connection = new SqlConnection(this.connectionString))
            {
                SqlCommand sqlCommand = this.CreateSqlCommand(connection);
                try
                {
                    this.DeriveParameters(sqlCommand);
                    this.AssignParameterValues(sqlCommand, paraValues);
                    connection.Open();
                    int affectedRowsCount = sqlCommand.ExecuteNonQuery();
                    this.returnValue = (int)sqlCommand.Parameters["@rtn"].Value;
                    this.setOutputValues(sqlCommand);
                    connection.Close();
                    return affectedRowsCount;
                }
------------------------------------------------------------------------------------------------------
 public string AreaSubmit(string AreaId,string AreaName,string AreaBelong,string AreaCover,string AreaLatlng)
        {            StoredProcedure sp = new StoredProcedure(conStr, "sp_InsertArea");
            try
            {
                string str=string.Empty;
                // 参数个数及顺序需要与存储过程中的一致。
                SqlParameter[] parms =new SqlParameter[]
                { new SqlParameter("@AreaId", SqlDbType.NVarChar), new SqlParameter("@AreaName", SqlDbType.NVarChar), new SqlParameter("@AreaBelong", SqlDbType.NVarChar), new SqlParameter("@AreaCover", SqlDbType.NVarChar), new SqlParameter("@AreaLatlng", SqlDbType.NVarChar),new SqlParameter("@rtn",SqlDbType.Int) };
                parms[0].Value = AreaId;
                parms[1].Value = AreaName;
                parms[2].Value = AreaBelong;
                parms[3].Value = AreaCover;
                parms[4].Value = AreaLatlng;                parms[5].Direction = ParameterDirection.Output;
                sp.ExecuteNonQuery(parms);
                //params object[] p={new SqlParameter("@AreaId",SqlDbType.NVarChar),new SqlParameter("@AreaName",SqlDbType.NVarChar),new SqlParameter("@AreaBelong",SqlDbType.NVarChar),new SqlParameter("@AreaCover",SqlDbType.NVarChar),new SqlParameter("@AreaLatlng",SqlDbType.NVarChar) };
                switch (sp.ReturnValue)
                {
                    case 0:
                        str ="存在相同记录";
                        break;
                    case 1:
                        str = "更新成功";
                        break;
                    case 2:
                        str="添加成功";
                        break;
                    // ......
                }
                return str;
--------------------------------------------------------------------------------------
在SQL中执行存储过程没有问题,上面是关键代码

解决方案 »

  1.   

    (mx.rpc::Fault)#0
      errorID = 0
      faultCode = "Server.Processing"
      faultDetail = (null)
      faultString = "将参数值从 SqlParameter 转换到 String 失败。"
      message = "faultCode:Server.Processing faultString:'将参数值从 SqlParameter 转换到 String 失败。' faultDetail:'null'"
      name = "Error"
      rootCause = (null)FluorineStackTrace:undefined
      

  2.   

    看了一下:感觉不出哪里有问题:
    StoredProcedure sp = new StoredProcedure(conStr, "sp_InsertArea");
    sp.ExecuteNonQuery(parms);在vs2005并没有!我是这样使用的:
                    SqlConnection cn = new SqlConnection("Data Source=(local);Initial Catalog=utscadadb;Integrated Security=SSPI; User Id=sa;Password=ut2001;");
                    SqlCommand cmd = new SqlCommand();
                    
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Connection = cn;
                    cmd.CommandText = "存储过程名称";                cmd.Parameters.Add("@file ", SqlDbType.VarChar).Value = "d:\\test.mp3";
                    cmd.Parameters.Add("@size", SqlDbType.Int).Value = 256;                cn.Open();
                    cmd.ExecuteNonQuery();
                    cn.Close();
      

  3.   

    问题解决了,是我不会用而已,呵呵
    StoredProcedure sp = new StoredProcedure(conStr, "sp_InsertArea");
    sp.ExecuteNonQuery(parms);
    参数PARMS与存储过程一致就行了,直接传进去,有多少个,用逗号隔开
    StoredProcedure sp = new StoredProcedure(conStr, "sp_InsertArea");
    sp.ExecuteNonQuery(value1,value2,value3);
    想复杂了!!