如何使用C#在SQL Server数据库上执行CRUD操作?
例如,假设有一个带有以下列的DB表雇员
:
EmployeeID, FirstName, PostalCode
我希望发布一个新员工的信息到该数据库。什么是实现这一目标的有效方法?
我当前的HttpPost
:
namespace API.Controllers
{
public class EmployeesController : ApiController
{
[HttpPost]
public void AddEmployee (Employee employee)
{
SqlConnection myConnection = new SqlConnection();
myConnection.ConnectionString = @"Server=.\servername;Database=Northwind;User ID=Username;Password=password;";
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.CommandType = CommandType.Text;
sqlCmd.CommandText = "INSERT INTO Employee (EmployeeID,FirstName,PostalCode) Values (@EmployeeID, @FirstName, @Zip)";
sqlCmd.Parameters.AddWithValue("@EmployeeID", employee.EmployeeID);
sqlCmd.Parameters.AddWithValue("@FirstName", employee.FirstName);
sqlCmd.Parameters.AddWithValue("@Zip", employee.Zip);
myConnection.Open();
int rowInserted = sqlCmd.ExecuteNonQuery();
myConnection.Close();
}
}
}
下面是员工
模型:
namespace API.Models
{
public class Employee
{
public int EmployeeID { get; set; }
public string FirstName { get; set; }
public int Zip { get; set; }
}
}
{ "EmployeeID":91, "FirstName":"Vader", "Zip":94221}
我得到这个错误:
HTTP/1.1 415不支持的媒体类型
数据库中没有插入任何内容。
如能提供任何指导,将不胜感激。
WebApiConfig。cs
:
namespace API
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
根据请求生成的原始错误消息:
HTTP/1.1 415不支持的媒体类型
缓存控制:没有缓存
Pragma:无缓存
内容类型:application/json;字符集=utf-8
过期:-1
服务器:Microsoft IIS/10.0
X-AspNet-Version: 4.0.30319
X-SourceFiles:=?UTF-8?BYZPCDXNLCNCYW1LC2TVxGRVY3VTZW50C1X2AXN1YWGC3R1ZGLVIDIWMTVcUHjVAMVJDHNCQVbJXeFqSvXhCGLCRW1WBG95ZWVzXeFkZEVTCgxVEWVL=
X-Powered-By:ASP。网
日期:2016年7月22日星期五15:33:06 GMT
内容长度:986
{“Message”:“请求包含实体正文,但没有内容类型标头。此资源不支持推断的媒体类型“application/octet stream”。”,
“ExceptionMessage”:“没有MediaTypeFormatter可用于从媒体类型为“application/octet stream”的内容中读取“Employee”类型的对象。”,
“ExceptionType”:“System.Net.Http.UnsupportedMediaTypeException”,
“StackTrace”:“在System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent内容,类型,IEnumerable1格式化程序,IFormatterLogger格式化程序记录器,CancellationToken CancellationToken)\r\n在System.Net.Http.HttpContentExtensions.ReadAsync(HttpContent内容、类型、IEnumerable1格式化程序、IFormatterLogger格式化程序记录器、CancellationToken CancellationToken)\r\n在系统上。网状物Http。模型绑定。FormatterParameterBinding。ReadContentAsync(HttpRequestMessage请求,类型类型,IEnumerable`1格式化程序,IFormatterLogger格式化程序记录器,CancellationToken CancellationToken)“}
如何传递JSON输入?它需要通过请求主体与与请求类型应用程序/json
您可以将管线指定为
“api/{controller}/{action}/{id}”
然后当调用API url时
http://localhost:63433/api/Employees/AddEmployee
注意控制器不是URL的一部分
在请求正文中把
{“EmployeeID”:91,“FirstName”:“Vader”,“Zip”:94221}
将请求类型设置为Post,请求主体设置为application/json
您可以从客户端工具(如postman see screen)测试api
邮递员
如果你能发布你的客户代码可能是我可以检查它。
我使用jax-rs和jersey创建了一个REST webservice,它应该在POST请求上使用JSON。我的web服务类如下所示: 我的歌曲课: 我有点用RESTClient,嗯,rest Client...以下是我发送的内容的截图: 当我发送它时,我得到415不受支持的媒体类型错误。有人知道为什么吗?
问题内容: 自数小时以来,我一直在尝试纠正http错误,但它仍显示不支持的页面。我在邮递员中添加标题。 这是我的Java代码 这是我的档案 问题答案: 通过和如何在响应流和请求流之间对对象进行序列化和反序列化。 将会发生的是,将从提供者的注册表中进行搜索,以查找可以处理的媒体类型。如果找不到,则Jersey无法处理该请求,并将发送415不支持的媒体类型。通常,你还应该在服务器端记录一个异常。不知道
我已经创建了一个示例web服务来进行post调用。 我使用的是Jersey JAX-RS和Maven。
问题内容: 我正在尝试使用jQuery 1.6(Jackson 2.1.1 和Spring 3.2.0 )通过JSON通过该方法向数据库中插入和/或更新数据。 JS代码如下。 通过URL映射的Spring控制器内部的方法如下。 服务器按照问题的含义进行响应, 415不支持的媒体类型 标头信息如下所示。 整个文件如下。 当我删除一个方法参数并仅用于接受请求参数时,它可以工作。 问题答案: 浏览器发送
问题内容: 我正在使用Spring 3.2,并尝试使用ajax发布请求来提交json对象数组。如果相关,我转义了所有特殊字符。 我的HTTP状态为415。 我的控制器是: jQuery是: 我发布的数组中的对象之一的示例是以下json: 错误是: 为什么会发生此错误-有人知道吗? 问题答案: 您可以尝试使用。它没有任何问题