c# - 除非 Mysql 数据库处于联机状态,否则 C# 程序不会启动
问题描述
即使 Mysql 处于脱机状态,我的程序也会启动,它会打开但会显示程序未连接到数据库,这正是我想要的。即使数据库处于脱机状态,我也希望它启动并且只是给出一个未连接的指示符 我设置了一个这样的连接指示符:
public void connStatus()
{
MySqlConnection myConn = new MySqlConnection("SERVER = localhost; user id = root; password =; database = mpdb");
try
{
myConn.Open();
dbconsign.Visible = true;
dbnotconsign.Visible = false;
}
catch (Exception ex)
{
MetroMessageBox.Show(this, ex.Message , "NOTIFICATION", MessageBoxButtons.OK, MessageBoxIcon.Hand);
dbconsign.Visible = false;
dbnotconsign.Visible = true;
}
finally
{
if (myConn.State == ConnectionState.Open)
{
myConn.Close();
}
}
}
(我知道我上面的代码不是检查服务器连接的最佳代码,但我只需要一些东西来指示数据库是在线还是离线,我是编程新手,我还不太擅长。)
现在,在我添加了一些 dll 并继续我的小程序之后,该程序只有在 Mysql 在线时才会启动。它根本不会启动,并会给出如下消息:
Could not find schema information for the element 'setting'.
Could not find schema information for the element 'value'.
所以我发现 App.Config 出了点问题,问题是我对 XML 知之甚少,而且我不明白我的项目中发生了什么。有人可以告诉我为什么会这样吗?我该如何解决?任何建议和更正都非常感谢。
这是我项目的 App.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="cpsfmV2._0.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<userSettings>
<cpsfmV2._0.Properties.Settings>
<setting name="CurrentDate" serializeAs="String">
<value />
</setting>
</cpsfmV2._0.Properties.Settings>
</userSettings>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.12.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.9.12.0" newVersion="6.9.12.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
解决方案
我很高兴我今天学到了一些新东西,感谢 google 和 stackoverflow,我今天才学会了正确的调试。我尝试在谷歌上搜索与 NullReference Exception 相关的内容,我从这篇文章中找到了一个非常有用的指南,虽然不完全是答案,但这篇文章中的人用易于理解的术语对像我这样的新手进行了解释。 什么是 NullReferenceException,我该如何解决?
虽然错误说:
'System.NullReferenceException' occurred in MetroFramework.dll Additional information: Object reference not set to an instance of an object.
这让我作为一个初学者感到困惑,我在上面链接的帖子中读到你需要检查 InnerException,我做了这件事并导致我犯了另一个错误,上面写着
System.TypeInitializationException
事实证明,这一切都是因为我从另一个类声明了一个变量。
像我这样的新手可能会遇到同样的问题,所以我会分享对我有帮助的帖子。 如何解决 System.TypeInitializationException 是 vb.net 中未处理的异常? 字段 xxx 从未分配给,并且始终具有其默认值 null
我的问题的最终解决方案是我变成了这个:
private AuditTrail audittrail = new AuditTrail();
private void loginbtn_Click(object sender, EventArgs e)
{
//some code here
audittrail.RecordLogin();
}
进入这个:
private AuditTrail audittrail;
private void loginbtn_Click(object sender, EventArgs e)
{
audittrail = new AuditTrail();
//some code here
audittrail.RecordLogin();
}
现在它的工作:) 感谢上面的有用帖子。
推荐阅读
- javascript - 我应该如何将 Lodash 过滤器方法重写为 Ramda 过滤器?
- node.js - 如何在 NodeJS 中的代理后面使用 DocumentDB
- php - Wordpress 和 AWS - Elastic Beanstalk 卡在“上传应用程序版本”中
- python - 如何将两个嵌套列表的每个元素相乘?
- php - 循环增加 3 PHP 和 MYSQL 的行
- excel - Excel向下填充数据
- php - 为什么我的 CSV 文件从第二行开始填充?
- mongodb - MongoDB 中的 $lookup 提供了意外的数据结构结果
- powershell - 协助将 MXTSESSIONS 文件导入 MobaXterm
- python - 用于在python中显示状态的简单窗口界面