最近在维护零点博客时,发现直接在 PHP 模板中写复杂的 SQL 逻辑确实容易出 Bug,且难以维护。于是想着用 C# 重构一下部分后端开发逻辑,做一套通用的在线工具接口,反哺 EMLOG。今天就把这段折腾过程复盘一下,重点聊聊MySQL连接、JSON解析以及最关键的SQL注入防护实战,希望能帮到刚入门的小伙伴。

一、 为什么选择 C# 做后端?

既然是后端开发,稳定性是第一位的。C# 的强类型特性和 .NET Core 的跨平台能力,在处理高并发接口和复杂数据解析时(比如 JSON、XML 转换),效率比 PHP 更高。这次我们主要实现一个从数据库抓取数据并转成 JSON 返回给前端的功能。

二、 环境搭建与数据库连接

首先,我们在 EMLOG 根目录下的 API 文件夹里新建一个接口,利用 C# 写一个控制台程序或者简单的 API 层去查询我们的 MySQL 数据库。

连接字符串是核心:

// 源码案例:MySQL连接字符串配置
string connStr = "Server=localhost;Database=emlog_db;User=root;Password=your_password;CharSet=utf8mb4;";
using (SqlConnection conn = new SqlConnection(connStr))
{
    conn.Open();
    // ... 执行查询
}

三、 底层逻辑:JSON与XML数据解析

后端拿到的数据大多是字符串,需要转成对象。这里推荐使用 Newtonsoft.Json 库,这是处理 JSON 的行业标准。

假设我们查询出了文章列表,需要将其序列化:

// 实操:将 DataTable 转为 JSON 字符串
string jsonResult = JsonConvert.SerializeObject(dataTable, Formatting.Indented);
return Content(jsonResult, "application/json");

有时候兼容老系统,还得顺手处理一下 XML 格式,可以使用 XmlSerializer,或者简单的正则表达式提取节点。

四、 关键避坑指南:SQL注入防护与预处理语句

这是今天要强调的重点!很多新手写查询语句习惯字符串拼接:

// ❌ 错误示范:极易被注入攻击
string sql = "SELECT * FROM emlog_article WHERE title LIKE '%" + keyword + "%'";

这样做一旦用户输入 `%' OR 1=1--`,整个数据库就裸奔了。一定要用预处理语句:

// ✅ 正确示范:参数化查询,从源头杜绝SQL注入
string sql = "SELECT * FROM emlog_article WHERE title LIKE @keyword";
SqlCommand cmd = new SqlCommand(sql, conn);

// 绑定参数,C# 会自动做转义
cmd.Parameters.AddWithValue("@keyword", "%" + keyword + "%");

// 读取数据...

在 后端开发 面试或实际工作中,这一点是考察基本功的重灾区。

五、 扩展应用:爬虫开发与正则清洗

如果你在开发在线工具时需要抓取第三方数据,可能会用到简单的 爬虫 技术。拿到 HTML 源码后,必须上正则表达式进行清洗。

比如提取页面中的所有链接:

// 源码案例:使用正则提取链接
string htmlContent = "...网页源码...";
string pattern = "href=\"(.*?)\"";
Regex r = new Regex(pattern, RegexOptions.IgnoreCase);
MatchCollection matches = r.Matches(htmlContent);

六、 总结

从最初在 EMLOG 里用 PHP 跑脚本,到现在用 C# 构建独立的后端服务,这过程很折腾,但技术栈的提升是实实在在的。核心就是:拿数据时用 JSON/XML 解析,存数据时死守预处理语句。

各位想搞技术的朋友,可以参考这些源码案例,试着在零点博客里搞一个属于自己的 API 接口,别怕报错,Debug 的过程就是成长的最好方式。