gpt4 book ai didi

C# ApplicationContext 用法

转载 作者:行者123 更新时间:2023-11-29 05:43:30 24 4
gpt4 key购买 nike

抱歉,如果我的术语不正确,我是 C# 的新手。我正在尝试使用 ApplicationContext 文件来存储 mysql conn 值,如 dbname、用户名、密码。带有 mysql conn 字符串的类正在“使用”ApplicationContext 的命名空间,但是当我打印出连接字符串时,值正在生成。

一个 friend 说,“我不是在初始化它”,但不能留下来扩展“它”是什么。

和“Console.WriteLine("1");"在 ApplicationContext.cs 中永远不会出现。我是否需要创建一个 ApplicationContext 对象并对该对象调用 Initialize()?

感谢您的帮助。

应用上下文.cs:

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";
}
}
}
}

MySQL管理器.cs:注意:dbname 与您将在代码中看到的用户名相同,我是从一位这样做的 friend 那里复制的。

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 中已经有一组非常丰富的配置类,包括用于 Connections 的配置类。支持加密,您确实需要调用 Application.Initialize() 以便填充它的字段。

我应该提一下,这看起来像是单例的实现。您可能想阅读 Jon Skeet 的 article在单例身上,因为您可能需要注意一些事情。例如,如果两个线程调用 ApplicationContext.Initialize() 会发生什么?多次调用 ApplicationContext.Initialize() 是否合理?

公共(public)字段也可能不是一个好主意,尤其是当您有 automatic implemented properties 时。提供给你。

关于C# ApplicationContext 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4599165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com