C#控制台连接Mysql数据库,有配置数据库连接字符串的配置文件

C#控制台连接Mysql数据库,有配置数据库连接字符串的配置文件

实现功能

  1. 读取..txt 中的配置文件,来初始化连接字符串
  2. 让连接字符串的配置文件不存在会主动创建默认的连接字符串

注意点:

  1. 需要引用Newtonsoft
  2. 使用mysql

代码如下

using System;
using MySql.Data.MySqlClient;
using Newtonsoft.Json;


namespace 连接数据库
{
    class Program
    {
        static void Main(string[] args)
        {
            string filePath = AppDomain.CurrentDomain.BaseDirectory + "ConnectionStrConfig.txt";//设置文件路径
            if (!System.IO.File.Exists(filePath))//判断文件是否存在
            {
                Console.WriteLine("文件不存在!已创建新的文件,请重启程序");
                System.IO.File.CreateText(filePath);//创建文件
                System.IO.File.WriteAllText(filePath, CreateDefaultConnectionString());//写入文件内容,默认的数据库配置文件
                return;//程序退出
            }

            string configFile = System.IO.File.ReadAllText(filePath);//读取文件内容
            if (configFile.Length == 0)//文件内容是空的
            {
                Console.WriteLine("没有读取到内容");
                System.IO.File.WriteAllText(filePath, CreateDefaultConnectionString());//写入文件内容,默认的数据库配置文件
                return;
            }

            Console.WriteLine(configFile);
            ConnectionStrConfig connectionStrConfig;
            try
            {
                connectionStrConfig = JsonConvert.DeserializeObject<ConnectionStrConfig>(configFile);//将读取到的内容转成配置文件的对象
            }
            catch (Exception e)
            {
                Console.WriteLine("Josn 序列化失败,检查配置文件");//转换失败
                Console.ReadKey();
                return;
            }

            if (connectionStrConfig.Database == null)
            {
                Console.WriteLine("Josn 序列化失败,检查配置文件");//转换失败
                return;
            }


            // 与数据库连接的信息
            MySqlConnectionStringBuilder builder = new MySqlConnectionStringBuilder();
            //用户名
            builder.UserID = connectionStrConfig.UserID;
            //密码
            builder.Password = connectionStrConfig.Password;
            //服务器地址
            builder.Server = connectionStrConfig.Server;
            //连接时的数据库
            builder.Database = connectionStrConfig.Database;
            //设置端口号
            builder.Port = connectionStrConfig.Port;
            //定义与数据连接的链接
            MySqlConnection connection = new MySqlConnection(builder.ConnectionString);
            //打开这个链接
            connection.Open();
            //connection.OpenAsync();

            Console.WriteLine("这是一个控制台程序");
            Console.WriteLine("这是一个控制台程序,数据库连接完成");

            Console.ReadKey();
            connection.Close();//数据库连接关闭
            //connection.CloseAsync();

            Console.WriteLine("数据库连接断开");
            Console.ReadKey();

        }


        /// <summary>
        /// 创建默认的连接字符串
        /// </summary>
        /// <returns>默认的配置文件的string</returns>
        static string CreateDefaultConnectionString()
        {
            string defaultString = "";//默认连接字符串的配置文件
            ConnectionStrConfig connectionStrConfig = new ConnectionStrConfig("root", "root", "localhost", "testdatabase", 3308);//通过"构造函数" 创建默认的连接字符串的配置文件
            defaultString = JsonConvert.SerializeObject(connectionStrConfig);//Json序列化为string
            return defaultString;
        }

    }


    [Serializable]
    class ConnectionStrConfig
    {
        private string userid;
        private string password;
        private string server;
        private string database;
        private uint port;


        /// <summary>
        /// 用户名
        /// </summary>
        public string UserID
        {
            get
            {
                return userid;
            }
            private set
            {
                userid = value;
            }
        }

        /// <summary>
        /// 密码
        /// </summary>
        public string Password
        {
            get
            {
                return password;
            }
            private set
            {
                password = value;
            }
        }

        /// <summary>
        /// 服务地址
        /// </summary>
        public string Server
        {
            get
            {
                return server;
            }
            private set
            {
                server = value;
            }
        }

        /// <summary>
        /// 数据库名称
        /// </summary>
        public string Database
        {
            get
            {
                return database;
            }
            private set
            {
                database = value;
            }
        }

        /// <summary>
        /// 端口号
        /// </summary>
        public uint Port
        {
            get
            {
                return port;
            }
            private set
            {
                port = value;
            }
        }


        /// <summary>
        /// 数据库连接字符串的配置文件
        /// </summary>
        /// <param name="userid">用户名</param>
        /// <param name="password">密码</param>
        /// <param name="server">服务</param>
        /// <param name="database">数据库名称</param>
        /// <param name="port">端口号</param>
        public ConnectionStrConfig(string userid
        , string password,
        string server,
        string database,
        uint port)
        {
            this.userid = userid;
            this.password = password;
            this.server = server;
            this.database = database;
            this.port = port;
        }


        //public ConnectionStrConfig()
        //{
        当反序列化对象的时候,被反序列化的对象如果有get或者set修饰的属性,那么就不可以显式的写无参的构造函数。
        //}


    }


}
相关推荐
尘浮生3 分钟前
Java项目实战II基于微信小程序的校运会管理系统(开发文档+数据库+源码)
java·开发语言·数据库·微信小程序·小程序·maven·intellij-idea
偶尔。5354 分钟前
什么是事务?事务有哪些特性?
数据库·oracle
安迁岚6 分钟前
【SQL Server】华中农业大学空间数据库实验报告 实验六 视图
数据库·sql·mysql·oracle·实验报告
xoxo-Rachel15 分钟前
(超级详细!!!)解决“com.mysql.jdbc.Driver is deprecated”警告:详解与优化
java·数据库·mysql
JH30731 小时前
Oracle与MySQL中CONCAT()函数的使用差异
数据库·mysql·oracle
蓝染-惣右介1 小时前
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
java·数据库·tomcat·mybatis
冷心笑看丽美人1 小时前
Spring框架特性及包下载(Java EE 学习笔记04)
数据库
武子康2 小时前
Java-07 深入浅出 MyBatis - 一对多模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据库·sql·mybatis·springboot
代码吐槽菌2 小时前
基于SSM的毕业论文管理系统【附源码】
java·开发语言·数据库·后端·ssm
路有瑶台3 小时前
MySQL数据库学习(持续更新ing)
数据库·学习·mysql