C#http协议实现数据库增删改查
时间: 2023-07-27 21:24:19 浏览: 56
以下是一个简单的 C# 程序,通过 http 协议实现增删改查数据库:
```
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
namespace HttpClientExample
{
class Program
{
static HttpClient client = new HttpClient();
static void Main(string[] args)
{
client.BaseAddress = new Uri("http://localhost:5000/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
RunAsync().Wait();
}
static async Task RunAsync()
{
try
{
// 创建一个新用户
User user = new User() { Name = "Tom", Age = 20 };
await CreateUserAsync(user);
// 获取用户列表
await GetUsersAsync();
// 更新用户信息
user.Age = 21;
await UpdateUserAsync(user);
// 获取单个用户信息
await GetUserAsync(user.Id);
// 删除用户
await DeleteUserAsync(user.Id);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
Console.ReadLine();
}
static async Task CreateUserAsync(User user)
{
HttpResponseMessage response = await client.PostAsJsonAsync(
"api/users", user);
response.EnsureSuccessStatusCode();
user = await response.Content.ReadAsAsync<User>();
Console.WriteLine($"Created user with id: {user.Id}");
}
static async Task UpdateUserAsync(User user)
{
HttpResponseMessage response = await client.PutAsJsonAsync(
$"api/users/{user.Id}", user);
response.EnsureSuccessStatusCode();
user = await response.Content.ReadAsAsync<User>();
Console.WriteLine($"Updated user {user.Id}");
}
static async Task DeleteUserAsync(int id)
{
HttpResponseMessage response = await client.DeleteAsync(
$"api/users/{id}");
response.EnsureSuccessStatusCode();
Console.WriteLine($"Deleted user {id}");
}
static async Task GetUsersAsync()
{
HttpResponseMessage response = await client.GetAsync("api/users");
response.EnsureSuccessStatusCode();
var users = await response.Content.ReadAsAsync<User[]>();
Console.WriteLine("Users:");
foreach (var user in users)
{
Console.WriteLine($"Id: {user.Id}, Name: {user.Name}, Age: {user.Age}");
}
}
static async Task GetUserAsync(int id)
{
HttpResponseMessage response = await client.GetAsync($"api/users/{id}");
response.EnsureSuccessStatusCode();
var user = await response.Content.ReadAsAsync<User>();
Console.WriteLine($"User: Id: {user.Id}, Name: {user.Name}, Age: {user.Age}");
}
}
}
```
上述代码中,`User` 类是一个简单的数据模型,包含 `Id`,`Name` 和 `Age` 三个属性。通过 http 协议,我们可以向服务端发送 POST、PUT、DELETE 和 GET 请求,来实现增删改查操作。
服务端的代码实现可以参考以下示例:
```
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
namespace WebApiExample.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
private static readonly List<User> Users = new List<User>();
[HttpGet]
public IEnumerable<User> GetAll()
{
return Users;
}
[HttpGet("{id}")]
public ActionResult<User> GetById(int id)
{
var user = Users.Find(u => u.Id == id);
if (user == null)
{
return NotFound();
}
return user;
}
[HttpPost]
public ActionResult<User> Create(User user)
{
user.Id = Users.Count + 1;
Users.Add(user);
return CreatedAtAction(nameof(GetById), new { id = user.Id }, user);
}
[HttpPut("{id}")]
public IActionResult Update(int id, User user)
{
var existingUser = Users.Find(u => u.Id == id);
if (existingUser == null)
{
return NotFound();
}
existingUser.Name = user.Name;
existingUser.Age = user.Age;
return NoContent();
}
[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
var user = Users.Find(u => u.Id == id);
if (user == null)
{
return NotFound();
}
Users.Remove(user);
return NoContent();
}
}
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
}
```
上述代码中,我们通过 ASP.NET Core 的 Web API 实现了一个简单的用户管理服务,包含 GET、POST、PUT 和 DELETE 四个接口,用于增删改查用户信息。服务端监听的端口是 `5000`。