C#-前后端分离连接mysql数据库封装接口

C#是世界上最好的语言

新建项目 如下图所示选择框红的项目

然后新建 文件夹 Common 并新建类文件 名字任意 文件内容如下 因为要连接的是mysql数据库 所以需要安装 MySql.Data.MySqlClient 依赖;

csharp 复制代码
using MySql.Data.MySqlClient;
using System.Data;



namespace WebApplication1.Common
{
    public class SqlHelp
    {
        //public static string ConStr { get; set; }
        public static DataTable ExecuteTable(string cmdText)
        {
            using (MySqlConnection con = new MySqlConnection("server=127.0.0.1;database=mynodedata;username=root;password=123456;"))
            {
                con.Open();
                MySqlCommand cmd = new MySqlCommand(cmdText, con);
                MySqlDataAdapter sda = new MySqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                sda.Fill(ds);
                return ds.Tables[0];
                // 取数据
            }
        }
    }
}

然后新建 Models 文件夹 并新建类 类名任意 文件内容如下

csharp 复制代码
using WebApplication1.Common;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Numerics;

namespace WebApplication1.Models
{
    public class user
    {
        public Int64 id { get; set; }
        public String name { get; set; }
        public String password { get; set; }
        public String loginname { get; set; }
        public String mobie { get; set; }
        public String role { get; set; }

        public static List<user> GetTextList()
        {
          
            DataTable dt = SqlHelp.ExecuteTable("select * from user");
            List<user> scc1 = new List<user>();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                scc1.Add(ToModel(dt.Rows[i]));
            }
            Console.WriteLine(1111);

            return scc1;
        }

        private static user ToModel(DataRow dr)
        {
            // 下面后面的数据都是取自数据库
            user scc = new user();
            scc.id = (Int64)dr["id"];
            scc.name = dr["name"].ToString();
            scc.password = dr["password"].ToString();
            scc.loginname = dr["loginname"].ToString();
            scc.mobie = dr["mobie"].ToString();
            scc.role = dr["role"].ToString();
            return scc;
        }
    }
}

然后在系统自带的Controllers文件夹上新建 api控制类 文件代码如下

csharp 复制代码
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using WebApplication1.Models;

namespace WebApplication1.Controllers
{
    [EnableCors("any")]// 添加 跨域名【在同一台电脑上面端口不一样也属于跨域】
    [Route("api/[controller]/[action]")]// 后面添加 /[action] 下面是具体写到方法名
    [ApiController]
    public class usermyController : ControllerBase
    {
        [HttpGet]
        public List<user> GetTest01()
        {
            List<user> scc01 = user.GetTextList();
            return scc01;
        }
    }
}

然后需要改一点系统自带的文件Program.cs 标红的部分代码添加进去

代码如下

csharp 复制代码
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddCors(o => o.AddPolicy("any", p => p.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod()));
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();
app.UseRouting();

app.UseCors("any");
app.UseAuthorization();

app.UseEndpoints(endpoints =>{
    endpoints.MapControllers();
});

app.Run();

然后运行项目 API 文档和测试文件

跨域测试

C#是世界上最好的语言

相关推荐
JQLvopkk12 分钟前
C# 轻量级工业温湿度监控系统(含数据库与源码)
开发语言·数据库·c#
devmoon1 小时前
在 Polkadot Runtime 中添加多个 Pallet 实例实战指南
java·开发语言·数据库·web3·区块链·波卡
认真的薛薛2 小时前
数据库-sql语句
数据库·sql·oracle
爱学英语的程序员2 小时前
面试官:你了解过哪些数据库?
java·数据库·spring boot·sql·mysql·mybatis
·云扬·3 小时前
MySQL Redo Log落盘机制深度解析
数据库·mysql
用户982863025683 小时前
pg内核实现细节
数据库
wxin_VXbishe3 小时前
C#(asp.net)学员竞赛信息管理系统-计算机毕业设计源码28790
java·vue.js·spring boot·spring·django·c#·php
码界筑梦坊3 小时前
330-基于Python的社交媒体舆情监控系统
python·mysql·信息可视化·数据分析·django·毕业设计·echarts
飞升不如收破烂~3 小时前
Redis 分布式锁+接口幂等性使用+当下流行的限流方案「落地实操」+用户连续点击两下按钮的解决方案自用总结
数据库·redis·分布式
workflower3 小时前
业务需求-假设场景
java·数据库·测试用例·集成测试·需求分析·模块测试·软件需求