C#应用程序上下文用法
抱歉,如果我的术语不正确,我是C#的新手。我正在尝试使用ApplicationContext文件来存储mysql conn值,如dbname、username、password。带有mysql conn字符串的类正在“使用”ApplicationContext的名称空间,但当我打印出连接字符串时,这些值正在生成它 一位朋友说,“我没有初始化它”,但不能留下来详细说明“它”是什么 ApplicationContext.cs中的“Console.WriteLine(“1”);”永远不会出现。我是否需要创建ApplicationContext对象并对该对象调用Initialize() 谢谢你的帮助 ApplicationContext.cs:C#应用程序上下文用法,c#,mysql,database-connection,C#,Mysql,Database Connection,抱歉,如果我的术语不正确,我是C#的新手。我正在尝试使用ApplicationContext文件来存储mysql conn值,如dbname、username、password。带有mysql conn字符串的类正在“使用”ApplicationContext的名称空间,但当我打印出连接字符串时,这些值正在生成它 一位朋友说,“我没有初始化它”,但不能留下来详细说明“它”是什么 ApplicationContext.cs中的“Console.WriteLine(“1”);”永远不会出现。我是否需
namespace NewApplication.Context
{
class ApplicationContext
{
public static string serverName;
public static string username;
public static string password;
public static void Initialize()
{
//need to read through config here
try
{
Console.WriteLine("1");
XmlDocument xDoc = new XmlDocument();
xDoc.Load(".\\Settings.xml");
XmlNodeList serverNodeList = xDoc.GetElementsByTagName("DatabaseServer");
XmlNodeList usernameNodeList = xDoc.GetElementsByTagName("UserName");
XmlNodeList passwordNodeList = xDoc.GetElementsByTagName("Password");
}
catch (Exception ex)
{
// MessageBox.Show(ex.ToString());
//TODO: Future write to log file
username = "user";
password = "password";
serverName = "localhost";
}
}
}
}
MySQLManager.cs:
注意:dbname与您将在代码中看到的用户名相同,我是从一个这样做的朋友那里复制的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data;
using MySql.Data.MySqlClient;
using NewApplication.Context;
namespace NewApplication.DAO
{
class MySQLManager
{
private static MySqlConnection conn;
public static MySqlConnection getConnection()
{
if (conn == null || conn.State == System.Data.ConnectionState.Closed)
{
string connStr = "server=" + ApplicationContext.serverName +
";user=" + ApplicationContext.username + ";database=" + ApplicationContext.username + ";port=3306;password=" +
ApplicationContext.password + ";";
conn = new MySqlConnection(connStr);
try
{
Console.WriteLine("Connecting to MySQL... ");
Console.WriteLine("Connection string: " + connStr + "\n");
conn.Open();
// Perform databse operations
// conn.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
return conn;
}
}
}
感谢您继续阅读,这是使用前面两个文件的代码:
class LogDAO
{
MySqlConnection conn;
public LogDAO()
{
conn = MySQLManager.getConnection();
}
谢谢,,
rd42忽略.NET中已经有一组非常丰富的配置类,包括支持加密的配置类,您确实需要将其作为点调用Application.Initialize()来填充it字段 我应该提到,这看起来像是一个单例的实现。你可能想读乔恩·斯基特的《单身汉》,因为可能有些事情你需要注意。例如,如果两个线程调用ApplicationContext.Initialize(),会发生什么?对ApplicationContext.Initialize()的多次调用是否合理
此外,公共字段可能是一个坏主意,尤其是当您有可用字段时 已经有一个ApplicationContext类。。。那你想用你的钱做什么?谢谢,我会调查的。谢谢你提供的信息。我正在继承一个项目,他们昨天想要更改,我是C语言的新手。我将查看链接,并感谢Application.Initialize()提示。