正在尝试在C#中创建MySQL连接池,但不起作用
我试图在C#中创建连接池,但不断收到以下错误消息:正在尝试在C#中创建MySQL连接池,但不起作用,c#,mysql,connection-pooling,C#,Mysql,Connection Pooling,我试图在C#中创建连接池,但不断收到以下错误消息:ConnectionString属性尚未初始化。 我知道这是因为我正在访问try catch中的变量ConnectionString,是否有其他方法可以解决这个问题 MainWindow.cs public MainWindow() { InitializeComponent(); using (var connection = new SqlConnection(DbConnect.Connec
ConnectionString属性尚未初始化。
我知道这是因为我正在访问try catch中的变量ConnectionString
,是否有其他方法可以解决这个问题
MainWindow.cs
public MainWindow()
{
InitializeComponent();
using (var connection = new SqlConnection(DbConnect.ConnectionString))
{
// Reset plot list
connection.Open();
ResetPlotList(_filterPlotReference);
ResetWatchList(_operatorId);
ResetPositionList(_operatorId);
connection.Close();
}
public class DbConnect
{
public static string ConnectionString = null;
public void Initialize()
{
try
{
XDocument doc = XDocument.Load("DbConnect.xml");
Dictionary<string, string> values =
doc.XPathSelectElements("//Connection[@name='default']")
.Single()
.Elements("Attribute")
.ToDictionary(el => (string) el.Attribute("name"), el => (string) el.Attribute("value"));
_server = values["server"];
_database = values["database"];
_uid = values["uid"];
_password = values["password"];
Plot = values["plot"];
ConnectionString = "SERVER=" + _server + ";" + "DATABASE=" +
_database + ";" + "UID=" + _uid + ";" + "PASSWORD=" + _password;
Connection = new MySqlConnection(ConnectionString);
}
catch (FileNotFoundException)
{
Environment.Exit(0);
}
}
}
DbConnect.cs
public MainWindow()
{
InitializeComponent();
using (var connection = new SqlConnection(DbConnect.ConnectionString))
{
// Reset plot list
connection.Open();
ResetPlotList(_filterPlotReference);
ResetWatchList(_operatorId);
ResetPositionList(_operatorId);
connection.Close();
}
public class DbConnect
{
public static string ConnectionString = null;
public void Initialize()
{
try
{
XDocument doc = XDocument.Load("DbConnect.xml");
Dictionary<string, string> values =
doc.XPathSelectElements("//Connection[@name='default']")
.Single()
.Elements("Attribute")
.ToDictionary(el => (string) el.Attribute("name"), el => (string) el.Attribute("value"));
_server = values["server"];
_database = values["database"];
_uid = values["uid"];
_password = values["password"];
Plot = values["plot"];
ConnectionString = "SERVER=" + _server + ";" + "DATABASE=" +
_database + ";" + "UID=" + _uid + ";" + "PASSWORD=" + _password;
Connection = new MySqlConnection(ConnectionString);
}
catch (FileNotFoundException)
{
Environment.Exit(0);
}
}
}
公共类DbConnect
{
公共静态字符串ConnectionString=null;
公共无效初始化()
{
尝试
{
XDocument doc=XDocument.Load(“DbConnect.xml”);
字典值=
doc.XPathSelectElements(“//连接[@name='default']”)
.Single()
.要素(“属性”)
.ToDictionary(el=>(string)el.Attribute(“名称”),el=>(string)el.Attribute(“值”);
_服务器=值[“服务器”];
_数据库=值[“数据库”];
_uid=值[“uid”];
_密码=值[“密码”];
绘图=值[“绘图”];
ConnectionString=“SERVER=“+\u SERVER+”;“+”数据库=”+
_数据库+”;“+”UID=“+”UID+”;“+”PASSWORD=“+”PASSWORD;
连接=新的MySqlConnection(ConnectionString);
}
捕获(FileNotFoundException)
{
环境。退出(0);
}
}
}
为什么要创建自己的连接池?它是为您完成的,除非您明确禁用它(例如,请参阅)。谢谢Richard。我有点糊涂了。上的OpenConnection()
和CloseConnection()
方法是否等同于创建连接池?连接池是ADO.NET的一部分,只要您处理了DbConnect
实例(或者说是从它派生的类型),它就会进入连接池;但您所做的任何操作都不会直接创建连接池:它隐式存在。