zoukankan      html  css  js  c++  java
  • unity 读取webconfig文件的SQL配置信息

    由于公司变动,以前都是有ini作为配置文件的,这次要改为web的config格式作为配置文件-->xxx.config格式

    unity 版本位5.6f,

    查询了很多的资料,大部分都要用Unity.Configuration,但是不知为啥我的unity无法支持其dll文件,因为.net格式太低,后来我更改了版本,换成了2018.3.5,他可以支持.net4x

    后来才发现并没有啥用,而且由于配置只需要读取最为简单的  <add key="MySql" value=“    ”/>这其中一个值即可。

    因此改为了寻常读取xml的方法。

    web.config如下

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <appSettings>
    
        <add key="MySql" value="……"/>
        <add key="OfflineMySql" value="……"/>
    
      </appSettings>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
      </startup>
    </configuration>

    unity使用其自带的System.Xml.Linq的dll方法,代码如下

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    using System.Xml.Linq;
    using System.Xml;
    using System.IO;
    
    public class LoadConfig : MonoBehaviour
    {
        public static string serverSql = null;
        public static string offlineSql = null;
        //在所有代码执行前执行
        [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
        static void OnConfigLoaded()
        {
            //config存放路径
            string configPath = "F:/work/web.config";
            XmlDocument configInfo = new XmlDocument();
            if (configPath != null)
            {
                //一层层的拨开xml
                configInfo.Load(configPath);
                XmlNode configuration = configInfo.SelectSingleNode("configuration");
                XmlNode appSettings = configuration.SelectSingleNode("appSettings");
                XmlNodeList infoNodeList = appSettings.ChildNodes;
                //用foreach查找add key的值
                foreach (XmlElement xe in infoNodeList)
                {
                    if (xe.Attributes["key"].Value == "MySql")
                    {
                       // 获取其相应的value值
                        serverSql = xe.Attributes["value"].Value;
                    }
                    if (xe.Attributes["key"].Value == "OfflineMySql")
                    {
                       // 获取其相应的value值
                        offlineSql = xe.Attributes["value"].Value;
                    }
    
                }
                if (serverSql == null || offlineSql == null)
                {
                    if (serverSql == null)
                    {
                        Debug.Log("缺少服务器数据库配置信息,请查看配置文件");
                    }
                    if (offlineSql == null)
                    {
                        Debug.Log("缺少本地数据库配置信息,请查看配置文件");
                    }
                }
            }
            else Debug.Log("未找到配置文件");
    
        }
    
    }

    获取出来之后,由于是sql配置信息,所以需要解析字符串,sql配置信息示例:

    "OfflineMySql" value="Server=127.0.0.1;Port=3306;Database=sqlcs;Uid=root;Pwd=111111;"/>

     void Awake()
        {    
            //调用解析
            ConfigPars(LoadConfig.serverSql, serverSqlConnetList);
            ConfigPars(LoadConfig.offlineSql, offlinSqlConnetList);
        }
    
      /// <summary>
        /// 解析config的数据库信息字符串
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="list"></param>
        public void ConfigPars(string sql, List<string> list)
        {
            if (list != null)
            {
                list.Clear();
            }
            var result = sql.Split(';').Select(s => s.Split('=').LastOrDefault());
            result.ToList().ForEach(s => list.Add(s));
        }
  • 相关阅读:
    OO系统分析员之路用例分析系列(3)业务建模之涉众
    Case study—Courseware Management System
    Creating the Use Case Diagram
    ODBC
    Class Diagram
    OO系统分析员之路用例分析系列(2)用例的类型与粒度
    Cache Object Script语言(转载)
    无法在web服务器上启动调试.
    Abbreviation
    发布订阅原理
  • 原文地址:https://www.cnblogs.com/Small-Transparent/p/11022765.html
Copyright © 2011-2022 走看看