You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过单次SQLite查询读取数据库配置?求实现示例

单次查询SQLite获取FTP配置的实现方案

实现步骤:

  • 定义FTP配置实体类(推荐,用于统一管理配置字段)
public class FtpConfig
{
    public string FtpHost { get; set; }
    public string FtpLogin { get; set; }
    public string FtpPassword { get; set; }
    public string FtpSerialPath { get; set; }
}
  • 新增单次查询方法(替换原多次调用的ReadString,一次性读取所有所需字段)
public FtpConfig ReadFtpConfig(int id)
{
    var config = new FtpConfig();
    string sql = "SELECT ftpHost, ftpLogin, ftpPassword, ftpSerialPath FROM Ftp WHERE Id = @Id";
    
    using (var cmd = new SQLiteCommand(sql, conn))
    {
        // 参数化查询避免SQL注入,同时适配不同ID的查询需求
        cmd.Parameters.AddWithValue("@Id", id);
        
        conn.Open();
        using (var reader = cmd.ExecuteReader())
        {
            if (reader.Read())
            {
                // 处理字段可能为null的情况,避免空引用异常
                config.FtpHost = reader.IsDBNull(reader.GetOrdinal("ftpHost")) ? "" : reader.GetString(reader.GetOrdinal("ftpHost"));
                config.FtpLogin = reader.IsDBNull(reader.GetOrdinal("ftpLogin")) ? "" : reader.GetString(reader.GetOrdinal("ftpLogin"));
                config.FtpPassword = reader.IsDBNull(reader.GetOrdinal("ftpPassword")) ? "" : reader.GetString(reader.GetOrdinal("ftpPassword"));
                config.FtpSerialPath = reader.IsDBNull(reader.GetOrdinal("ftpSerialPath")) ? "" : reader.GetString(reader.GetOrdinal("ftpSerialPath"));
            }
        }
        conn.Close();
    }
    
    return config;
}
  • 调用新方法初始化FtpClient
var ftpConfig = DAL.ReadFtpConfig(1);
FtpClient client = new FtpClient(ftpConfig.FtpHost, ftpConfig.FtpLogin, ftpConfig.FtpPassword);
// 若需使用ftpSerialPath,直接从ftpConfig对象中获取即可
// string serialPath = ftpConfig.FtpSerialPath;

关键优化点:

  • 使用参数化查询替代硬编码ID,消除SQL注入风险,提升代码可复用性
  • 借助SQLiteDataReader一次性读取整行数据,减少数据库连接与查询次数,提升性能
  • 实体类的使用让配置字段更清晰,后续新增或修改字段时只需调整实体类和查询语句,维护成本更低

内容的提问来源于stack exchange,提问作者Oleg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 18:15:16