c# - WebAPI POST 工作但不添加到数据库?
问题描述
我创建了一个 Web API 控制器并尝试将数据发布到我的数据库。当我在 POSTMAN 中测试 API 时,我得到 200 OK Result 但false
返回正文。
我已经尝试改变 from ,[FormBody]
但这也不起作用。我已将该方法添加为布尔值以进行检查,但我只收到错误消息。
这是我在 POSTMAN 中使用 Body -> raw -> JSON/Application
{
CityName: "Test1",
State: "PA",
Population: "0",
MHouseholdIncome: "0",
POwnerRenter: "0",
MHomeValue: "0",
MAge: "0",
UnemploymentRate: "0",
CrimeIndex: "0"
}
这是我的控制器:
// POST: api/Cities/AddCity
[HttpPost()]
[HttpPost("AddCity")]
public Boolean AddCity([FromBody]City city)
{
if (city != null)
{
DBConnect objDB = new DBConnect();
SqlCommand objCmd = new SqlCommand();
objCmd.CommandType = CommandType.StoredProcedure;
objCmd.CommandText = "AddCity";
objCmd.Parameters.AddWithValue("@theCity", city.CityName);
objCmd.Parameters.AddWithValue("@theState", city.State);
objCmd.Parameters.AddWithValue("@thePopulation", city.Population);
objCmd.Parameters.AddWithValue("@theIncome", city.MHouseholdIncome);
objCmd.Parameters.AddWithValue("@theOwner", city.POwnerRenter);
objCmd.Parameters.AddWithValue("@theHomeValue", city.MHomeValue);
objCmd.Parameters.AddWithValue("@theMedianAge", city.MAge);
objCmd.Parameters.AddWithValue("@theUnemploymentRate", city.UnemploymentRate);
objCmd.Parameters.AddWithValue("@theCrime", city.CrimeIndex);
int value = objDB.DoUpdateUsingCmdObj(objCmd);
if (value > 0)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
这是我的代码:
protected void btnAdd_Click(object sender, EventArgs e)
{
City city = new City();
city.CityName = txtCity.Text;
city.State = ddStates.SelectedValue;
city.Population = int.Parse(txtPopulation.Text);
city.MHouseholdIncome = float.Parse(txtHouseholdIncome.Text);
city.POwnerRenter = float.Parse(txtOwnerRenter.Text);
city.MHomeValue = float.Parse(txtHomeValue.Text);
city.MAge = float.Parse(txtAge.Text);
city.UnemploymentRate = float.Parse(txtUnemploymentRate.Text);
city.CrimeIndex = float.Parse(txtCrimeIndex.Text);
JavaScriptSerializer js = new JavaScriptSerializer();
String jsonCity = js.Serialize(city);
try
{
WebRequest request = WebRequest.Create(webApiUrl + "AddCity/");
request.Method = "POST";
request.ContentLength = jsonCity.Length;
request.ContentType = "application/json";
StreamWriter writer = new StreamWriter(request.GetRequestStream());
writer.Write(jsonCity);
writer.Flush();
writer.Close();
WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
String data = reader.ReadToEnd();
reader.Close();
response.Close();
if (data == "true")
{
string msg = "The city was successfully added to the database.";
ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + msg + "');", true);
}
else
{
string msg = "A problem occured while adding the city to the database. The data was not recorded.";
ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + msg + "');", true);
}
}
catch (Exception ex)
{
string msg = "Error:" + ex.Message;
ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + msg + "');", true);
}
}
}
城市.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CityLibrary
{
public class City
{
public int CityID { get; set; }
public string CityName { get; set; }
public string State { get; set; }
public int Population { get; set; }
public float MHouseholdIncome { get; set; }
public float POwnerRenter { get; set; }
public float MHomeValue { get; set; }
public float MAge { get; set; }
public float UnemploymentRate { get; set; }
public float CrimeIndex { get; set; }
public City()
{
}
public City(int id, string name, string state, int ppl, float income,
float owner, float home, float age, float rate, float crime)
{
this.CityID = id;
this.CityName = name;
this.State = state;
this.Population = ppl;
this.MHouseholdIncome = income;
this.POwnerRenter = owner;
this.MHomeValue = home;
this.MAge = age;
this.UnemploymentRate = rate;
this.CrimeIndex = crime;
}
}
}
我希望将数据添加到实际数据库中。
解决方案
检查 objCmd 是否为 null,如果不是,请检查 DoUpdateUsingCmdObj 方法
推荐阅读
- adfs - 拥有多个 ADFS 声明提供程序时的挑战
- json - Jasper 报告中的 JSON 作为 subDataSource
- java - Spring Boot 外部属性不适用于 Boot 2.0.0.RELEASE,里面有 spring 批处理
- javascript - KonvaJS transform rotation around center on SVG
- sql - 密集排名未正确生成行
- c++ - 如何将 char 数组字符串存储到 char 型指针数组?C++
- javascript - onclick 中指定的功能未在移动设备上触发
- azure - 在 SQL Server 部署任务中设置 Azure Pipeline 变量值
- resampling - Google Earth Engine (gee) reduceResolution() 平铺尺寸错误
- r - 我可以将数组或类似的数据结构作为数据框的元素吗?