当前位置: 首页 > news >正文

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序列化为stringreturn 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修饰的属性,那么就不可以显式的写无参的构造函数。//}}}

相关文章:

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

C#控制台连接Mysql数据库&#xff0c;有配置数据库连接字符串的配置文件 实现功能 读取..txt 中的配置文件&#xff0c;来初始化连接字符串让连接字符串的配置文件不存在会主动创建默认的连接字符串 注意点&#xff1a; 需要引用Newtonsoft使用mysql 代码如下 using Syst…...

PowerBuilder连接SQLITE3

PowerBuilder,一个古老的IDE,打算陆续发些相关的,也许还有人需要,内容可能涉及其他作者,但基本都是基于本人实践整理,如涉及归属,请联系. SQLite,轻型数据库,相对与PowerBuilder来说是个新事务,故发数来,以供参考. PB中使用OLE Microsoft OLE DB方式进行连接,如下 // Profile…...

Git 基本原理和常用操作

Git Git 是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。由 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开源的版本控制软件。 Git 常用操作 git 提交流程&#xff1a;工作区 -> git add 到暂存区 -> gi…...

单元测试和集成测试的区别

单元测试和集成测试是软件开发中常用的两种测试方法&#xff0c;它们的主要区别如下&#xff1a; 范围不同&#xff1a;单元测试关注于对软件中的最小功能单元进行测试&#xff0c;通常是对独立的函数、方法或类进行测试。而集成测试则更加综合&#xff0c;涉及多个模块、组件或…...

node基础概念

前言&#xff1a;可以让别人访问我们的网页&#xff0c;可以开发服务端应用、工具类应用、桌面端应用&#xff08;electron&#xff09; 1. 计算机基础 概念&#xff1a;CPU 内存 硬盘 主板 显卡 2. 进程和线程 概念&#xff1a;进程是一个程序的执行&#xff0c;线程组合形…...

ArcGIS Maps SDK for JS(二):MapView简介----创建2D地图

文章目录 1 AMD 引用 ArcGIS Maps SDK for JavaScript2 加载相应模块3 创建地图4 创建 2D 视图 view5 确定页面内容6 CSS 样式7 完整代码 本教程使用 AMD 模块&#xff0c;指导您如何在二维地图视图中创建一个简单的地图。 1 AMD 引用 ArcGIS Maps SDK for JavaScript 在 <…...

知识图谱推理研究综述9.3

综述分类 根据样本量大小的不同&#xff0c;将知识图谱推理方法分为多样本推理、少样本推理和零与单样本推理 KG定义&#xff1a;&#xff08;Y&#xff09; 知识图谱是以图的形式表示真实世界的实体与关系之间关系的知识库。 具体来说知识图谱是通过将应用数学、图形学、信…...

详细介绍c++中的类

C 中的类是面向对象编程的基本概念&#xff0c;它指的是一种能够封装数据和方法的用户定义数据类型。类是程序中一个重要的概念&#xff0c;它允许程序员通过定义类来实现代码复用、模块化和继承等特性。 C 中的类由以下部分组成&#xff1a; Data members&#xff1a;成员变量…...

C语言:扫雷小游戏

文接上一篇博文C语言&#xff1a;三子棋小游戏。本篇博文是使用C语言来实现扫雷小游戏的。这里不对扫雷的规则进行赘述。玩家通过键盘输入坐标来探雷。博主在实现扫雷之前从未看过扫雷实现的相关视频&#xff0c;所以这里实现的扫雷完全是博主的原生思路&#xff0c;具有逻辑性…...

VScode SSH无法免密登录

配置方法 引用高赞贴&#xff1a;点击 debug方法 连不上需要找到问题原因&#xff0c;看ssh的 log Linux服务器&#xff1a;2222是我们指定的端口&#xff0c;可以是1234等 sudo /usr/sbin/sshd -d -p 2222windows这边&#xff1a;端口号要一致 ssh -vvv ubuntusername192…...

Spring Cloud--从零开始搭建微服务基础环境【四】

&#x1f600;前言 本篇博文是关于Spring Cloud–从零开始搭建微服务基础环境【四】&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;…...

FreeRTOS操作系统中,断言输出 Error:..\..\FreeRTOS\portable\RVDS\ARM_CM4F\port.c,766 原因

分析&#xff1a;Error:..\..\FreeRTOS\portable\RVDS\ARM_CM4F\port.c,766 出现这个原因表示&#xff0c;你现在系统某个中断的优先级高于FreeRTOS可管理的优先级范围&#xff0c;一旦你这个中断触发&#xff0c;断言的信息即你串口就会输出这个条语句&#xff08;前提你串口…...

【Linux】进程间通信与同步

IPC进程间通信 无名管道pipe&#xff08;血缘关系的进程&#xff09;有名管道fifo &#xff08;无血缘关系的进程&#xff09;共享内存信号(开销小)消息队列信号量套接字 进程间同步 文件锁信号量...

SpringBoot 统一功能处理

目录 一、用户登录权限验证 1.1 SpringAOP可以进行处理吗&#xff1f; 1.2 创建自定义拦截器 1.3 将自定义拦截器配置到系统配置项中 1.4 拦截器的实现原理 1.4.1 实现原理源码分析 1.5 统一访问前缀添加 二、统一异常处理 2.1 为什么需要使用统一异常处理&#xff1f;…...

解决:sh: vite: command not found

文章目录 问题描述原因分析解决方案 问题描述 第一次pull项目&#xff0c;运行npm run dev时报错&#xff1a;sh: vite: command not found 原因分析 查看了package.json&#xff0c;发现是有vite的。 没有安装依赖导致的&#xff1b; 解决方案 执行npm i重新安装依赖&#…...

el-select下拉多选框 el-select 设置默认值不可删除功能

Element3.0vue3.0 el-select下拉多选框 el-select 设置默认值不可删除功能 Element-UI是一款广泛使用的Vue.js组件库&#xff0c;其中El-Select下拉多选框组件在实际项目开发中经常被使用。然而&#xff0c;在Element 3.0版本中&#xff0c;El-Select下拉多选框默认值可被删除&…...

Jetsonnano B01 笔记1:基础理解—网络配置—远程连接

今日开始学习 Jetsonnano B01&#xff0c;这是一台小电脑&#xff0c;可以用来&#xff1a; 运行现代 AI 负载&#xff0c;并行运行多个神经网络&#xff0c;以及同时处理来自多个高清传感器的数据&#xff0c;可广泛应用与图像分类、对象检测、图像分割、语音处 理等领域。它…...

Ubuntu系统信息查看指南:了解你的操作系统

要查看Ubuntu系统的信息&#xff0c;你可以使用一些命令行工具来获取系统的各种信息。以下是一些常用的命令&#xff1a; 1. lsb_release -a&#xff1a;列出Ubuntu版本号、发行代号和描述信息。 2. uname -a&#xff1a;显示Linux内核的版本信息。 3. lscpu&#xff1a;提供…...

【STM32】学习笔记-SPI通信

SPI通信 SPI通信&#xff08;Serial Peripheral Interface&#xff09;是一种同步的串行通信协议&#xff0c;用于在微控制器、传感器、存储器、数字信号处理器等之间进行通信。SPI通信协议需要使用4个线路进行通信&#xff1a;时钟线(SCLK)、主输入/主输出线(MISO)、主输出/主…...

解决vue项目首行报红( ESLint 配置)和新建的vue文件首行报红问题

目录 前情提要&#xff1a; 修改ESLint 配置 新建的vue文件首行还是报红 报红原因&#xff1a; 解决方法&#xff1a; 前情提要&#xff1a; 在网上查到的方法可能是在package.json文件或者.eslintrc.js文件中添加 requireConfigFile: false 如果此方法对你的错误不起作用…...

如何通过内存注入技术在英雄联盟国服实现安全换肤?

如何通过内存注入技术在英雄联盟国服实现安全换肤&#xff1f; 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 想象一下&#xff0c;你正在峡谷中奋战&…...

【Perplexity健身计划搜索实战指南】:20年AI搜索专家亲授3大精准检索心法,错过再等一年

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity健身计划搜索实战指南导论 Perplexity 是一款以推理深度和引用可追溯性见长的 AI 搜索工具&#xff0c;特别适合需要结构化、证据支撑型信息检索的场景。在健身领域&#xff0c;用户常面临计划泛滥…...

告别串口打印!用STM32+DS18B20做个OLED温湿度计(HAL库+SSD1306)

STM32实战&#xff1a;打造OLED温湿度监测系统&#xff08;DS18B20SSD1306&#xff09; 每次调试嵌入式项目时&#xff0c;盯着串口助手看数据总有种隔靴搔痒的感觉。最近在工作室整理零件时&#xff0c;发现抽屉里还躺着几片0.96寸OLED和DS18B20温度传感器&#xff0c;突然萌生…...

6-英语不好,能学习嵌入式吗?

文/一只会飞的猫 本文为原创作品,收录于独家专栏:《嵌入式入行认知指南,避开99%的入行弯路》 已加入原创侵权保护,未经同意,禁止任何形式的搬移/转载/改编等,违者必究! 与两千多位想要学习嵌入式的同学交流过程中,总能被问到这个问题: “我英语四级都没过,单词记不住…...

ARMv8.3指针认证技术原理与安全实践

1. AArch64指针认证技术深度解析指针认证&#xff08;Pointer Authentication&#xff09;是ARMv8.3-A引入的关键安全特性&#xff0c;通过在指针的高位比特中嵌入加密签名&#xff08;Pointer Authentication Code, PAC&#xff09;来验证指针的完整性。这项技术能有效防御ROP…...

《CVPR2025-DEIM创新改进项目实战:从原理到部署的深度学习优化全攻略》005、DEIM模型架构总览——编码器-解码器与动态门控设计

CVPR2025-DEIM创新改进项目实战:DEIM模型架构总览——编码器-解码器与动态门控设计 从一次诡异的梯度爆炸说起 去年冬天调DEIM的早期原型,模型在训练到第47个epoch时突然loss飙到NaN。检查了三天,最后发现是门控模块的sigmoid输出在极端情况下饱和,导致梯度回传时门控信号…...

全志V853开发板驱动7寸RGB屏:Linux DRM设备树配置与调试实战

1. 项目概述&#xff1a;当开发板遇上七寸RGB屏最近在折腾百问网的100ASK_V853-PRO开发板&#xff0c;发现一个挺有意思的需求&#xff1a;让它驱动一块七寸的RGB接口屏幕。这听起来像是个简单的“接线-点亮”的活儿&#xff0c;但真上手了才发现&#xff0c;从硬件引脚匹配、设…...

实时商业情报不再滞后,Perplexity新闻搜索配置全拆解,从入门到日均处理200+信源

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;实时商业情报不再滞后&#xff0c;Perplexity新闻搜索配置全拆解&#xff0c;从入门到日均处理200信源 为什么传统RSS与Google Alerts已失效 现代商业情报对时效性、语义准确性与信源可信度提出更高要求。Pe…...

Perplexity股票数据清洗SOP(含NASDAQ非标字段映射表):金融工程师内部使用的12项校验规则

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity股票信息检索 Perplexity AI 公司尚未上市&#xff0c;因此不存在公开交易的股票代码、实时行情或交易所挂牌信息。这一事实常被开发者和投资者误读&#xff0c;尤其在使用金融数据 API 时容易触发…...

基于SUMO与PPO的智能换道决策实战:从环境构建到模型部署

1. 环境准备与基础配置 在开始构建智能换道决策系统之前&#xff0c;我们需要先搭建好开发环境。这里我推荐使用Anaconda来管理Python环境&#xff0c;它能很好地解决不同项目之间的依赖冲突问题。我习惯为每个项目创建独立的环境&#xff0c;比如这次我们可以命名为"sumo…...