c# 存储配置

示例代码,“csharp,using System;,using System.Configuration;namespace ConfigStorageExample,{, class Program, {, static void Main(string[] args), {, // 读取配置文件中的连接字符串, string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;, Console.WriteLine("连接字符串: " + connectionString); // 读取配置文件中的应用程序设置, string appSettingValue = ConfigurationManager.AppSettings["MyAppSetting"];, Console.WriteLine("应用程序设置值: " + appSettingValue); Console.ReadLine();, }, },},` 配置文件 (App.config),`xml,,,,,,,,,,

在C#中,存储配置信息是常见的需求,尤其是在应用程序需要持久化设置或参数时,以下是几种常用的方法来存储和管理配置:

c#  存储配置

1. 使用App.config或Web.config文件

这是最传统的方法,适用于桌面和Web应用程序。

App.config(桌面应用)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Setting1" value="Value1"/>
    <add key="Setting2" value="Value2"/>
  </appSettings>
</configuration>

Web.config(Web应用)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Setting1" value="Value1"/>
    <add key="Setting2" value="Value2"/>
  </appSettings>
</configuration>

读取配置

using System;
using System.Configuration;
class Program
{
    static void Main()
    {
        string setting1 = ConfigurationManager.AppSettings["Setting1"];
        Console.WriteLine("Setting1: " + setting1);
    }
}

使用INI文件

适用于简单的配置文件,可以使用System.Runtime.InteropServices.DllImport调用Windows API函数读写INI文件。

创建INI文件

c#  存储配置

[Section1]
Setting1=Value1
Setting2=Value2

读取INI文件

using System;
using System.Runtime.InteropServices;
using System.Text;
class Program
{
    public static string ReadIniData(string filePath, string section, string key)
    {
        StringBuilder buffer = new StringBuilder(255);
        int size = GetPrivateProfileString(section, key, "", buffer, buffer.Capacity, filePath);
        return buffer.ToString();
    }
    [DllImport("kernel32")]
    private static extern int GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);
    static void Main()
    {
        string setting1 = ReadIniData("config.ini", "Section1", "Setting1");
        Console.WriteLine("Setting1: " + setting1);
    }
}

使用JSON文件

适用于现代应用程序,易于扩展和序列化。

创建JSON文件

{
  "Settings": {
    "Setting1": "Value1",
    "Setting2": "Value2"
  }
}

读取JSON文件

using System;
using Newtonsoft.Json; // 需要安装Newtonsoft.Json包
using System.IO;
class Program
{
    static void Main()
    {
        string json = File.ReadAllText("config.json");
        var settings = JsonConvert.DeserializeObject<RootObject>(json);
        Console.WriteLine("Setting1: " + settings.Settings.Setting1);
    }
}
public class RootObject
{
    public Settings Settings { get; set; }
}
public class Settings
{
    public string Setting1 { get; set; }
    public string Setting2 { get; set; }
}

使用数据库

适用于复杂的配置管理,支持事务、并发控制等。

示例SQL表结构

CREATE TABLE Settings (
    ID INT PRIMARY KEY IDENTITY(1,1),
    Key NVARCHAR(50),
    Value NVARCHAR(50)
);

插入数据

c#  存储配置

INSERT INTO Settings (Key, Value) VALUES ('Setting1', 'Value1');
INSERT INTO Settings (Key, Value) VALUES ('Setting2', 'Value2');

读取数据

using System;
using System.Data.SqlClient;
class Program
{
    static void Main()
    {
        string connectionString = "your_connection_string";
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            SqlCommand command = new SqlCommand("SELECT Value FROM Settings WHERE Key = @key", connection);
            command.Parameters.AddWithValue("@key", "Setting1");
            string setting1 = (string)command.ExecuteScalar();
            Console.WriteLine("Setting1: " + setting1);
        }
    }
}

FAQs

Q1: App.config和Web.config文件有什么区别?

A1: App.config用于桌面应用程序,而Web.config用于Web应用程序,两者的结构和用法基本相同,但App.config通常位于应用程序的根目录,而Web.config位于网站根目录。

Q2: 为什么选择JSON文件而不是XML文件来存储配置?

A2: JSON文件格式简洁、易读,并且与现代编程语言的兼容性更好,JSON文件也更易于解析和生成,特别是在处理嵌套结构时,比XML更直观和高效。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1655978.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希
上一篇 2025-03-19 11:40
下一篇 2024-04-05 11:32

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入