C# EMLOG 文章数据导出工具:从数据库连接到JSON序列化的实操教程
大家好,欢迎来到零点博客。最近在维护我的 EMLOG 站点时,发现后台没有直接“导出文章”的功能,导出博客搬家是个头疼事儿。为了省事,我决定利用平时积累的 C# 和 MySQL 知识,自己动手写一个小工具。
这篇分享不仅仅是代码展示,更是一份详细的实操教程。我会把开发中遇到的坑,比如 SQL 注入防护、JSON 解析技巧以及正则表达式清洗脏数据的细节都讲透。
一、 项目背景与技术栈
我们的目标是读取 EMLOG 数据库中的 `blog` 和 `attachment` 表,经过处理,最终生成一个结构清晰的 JSON 文件,方便后续迁移或做二次开发。
- 后端语言: C# (.NET Core Console App)
- 数据库: MySQL
- 数据处理: 正则表达式
- 输出格式: JSON / XML
二、 核心步骤:SQL 连接与预处理(避坑指南)
在操作数据库时,很多初学者喜欢直接拼接字符串。我以前也踩过坑,后来学会了使用 SQL 预处理语句。这不仅性能更好,最重要的是能防止 SQL 注入 攻击。
代码实现
using System.Data;
using MySql.Data.MySqlClient;
// 数据库连接字符串
string connStr = "Server=localhost;Database=emlog;User=root;Password=123456;CharSet=utf8mb4;";
using (MySqlConnection conn = new MySqlConnection(connStr))
{
conn.Open();
// 使用预处理语句,防止 SQL 注入
string sql = "SELECT title, content, date FROM blog WHERE uid = @uid ORDER BY date DESC LIMIT 10";
using (MySqlCommand cmd = new MySqlCommand(sql, conn))
{
// 绑定参数,这里 uid 应该通过逻辑传入,或者默认查全部
cmd.Parameters.AddWithValue("@uid", 1);
using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
// 读取数据逻辑...
}
}
}
}
博主复盘: 大家看,用 `Parameters.AddWithValue` 替代了直接写 `$uid`,这就是区分初级和中级开发的关键点。在处理 Web 接口开发时,这一步是底线。
三、 数据清洗:利用正则表达式
从数据库读出来的 HTML 内容往往包含大量的标签。为了在 JSON 中保持整洁,我们需要正则表达式(Regex)来“清洗”这些内容。比如,我们只想提取纯文本,或者提取文章中的图片链接。
using System.Text.RegularExpressions;
string htmlContent = reader["content"].ToString();
// 提取正文中的所有图片链接
MatchCollection matches = Regex.Matches(htmlContent, "<img[^>]+src="([^"]+)"", RegexOptions.IgnoreCase);
foreach (Match match in matches)
{
string imgUrl = match.Groups[1].Value;
Console.WriteLine(imgUrl);
}
四、 最终输出:JSON 数据生成与接口模拟
数据清洗完毕后,我们需要将其封装成 JSON 格式。C# 自带的 `Newtonsoft.Json` 库非常强大,同时也支持简单的 `JObject` 直接构建。
using Newtonsoft.Json;
using System.Collections.Generic;
// 封装数据模型
List<Article> articles = new List<Article>();
// 假设上面循环读数据时把对象 push 进来了
string jsonOutput = JsonConvert.SerializeObject(articles, Formatting.Indented);
// 写入文件
File.WriteAllText("blog_backup.json", jsonOutput);
Console.WriteLine("导出成功!");
五、 总结
通过这个零点博客的实战案例,我们完成了从数据库查询、SQL 注入防护、正则清洗到 JSON 序列化的完整流程。如果你正在开发类似的小工具或者爬虫开发项目,希望这篇 实操教程 能给你提供一些思路。
切记,安全永远是第一位的,写爬虫或工具时,严格遵守数据接口的访问规则,不要搞硬编码的用户名密码泄露。



评论一下吧
取消回复