private JObject ExecuteCommand(SqlCommand cmd) { JObject result = new JObject(); using (SqlConnection conn = new SqlConnection(_connectionString)) { cmd.Connection = conn; try { conn.Open(); SqlDataReader dbReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); var outpars = GetOutputParameters(cmd.CommandText); JArray jData = new JArray(); do { jData.AddtoSelf(DataReaderToJarray(dbReader)); } while (dbReader.NextResult()); result.Add("Data", jData); dbReader.Close();//不先关闭SqlDataReader,获取不到返回参数 foreach (var item in outpars) { result.Add(item.Name, new JValue(cmd.Parameters[item.Name].Value)); } if (result.Property("Result") == null) { result.Add("Result", Result.Success.ToJValue()); } else if (result.Property("Result").Value.Type.Equals(JTokenType.Null)) { result.Property("Result").Value = Result.Success.ToJValue(); } } catch (SqlException sqlerr) { switch (sqlerr.Number) { case 547: // ForeignKey Violation case 2627: //Unique Index/Constriant Violation case 2601: //Unique Index/Constriant Violation result = new JObject { { "Result", Result.Error.ToJValue() }, { "Message", "系统已存在该数据" } }; break; default: result = new JObject { { "Result", Result.Error.ToJValue() }, { "Message", sqlerr.ToString() } }; break; } } catch (Exception ex) { result = new JObject { { "Result", Result.Error.ToJValue() }, { "Message", ex.ToString() } }; throw; } } return(result); }