如何在整个winforms项目中使用单个连接字符串
本文关键字:单个 连接 字符串 项目 winforms | 更新日期: 2023-09-27 18:04:18
我在我的项目中使用Winforms, MySQL和c#。我在应用程序设置中使用了一个连接字符串。
在每个新的页面,我将声明一个连接字符串为公共的,并在连接中使用这个字符串。
MySqlConnection connection = new MySqlConnection(MyConString);
我想在整个应用程序中只声明一次MyConString。如何做到这一点?该怎么办?
我不认为你应该暴露你的连接字符串给你的表单,他们不需要知道。你可以用一个简单的工厂封装连接的创建。
public class ConnectionFactory
{
public static MySqlConnection Create()
{
string connectionString = ConfigurationManager.AppSettings["..."];
MySqlConnection conection = new MySqlConnection(Config.ConnectionStr);
connection.Open();
return connection;
}
}
当你需要Form中的连接时,你可以这样做:
private void button1_click(object sender, EventArg args)
{
using ( var connection = ConnectionFactory.Create() )
{
connection.Execute("...");
}
}
您可以尝试如下操作:
public static class Config
{
public static string ConnectionStr = ConfigurationManager.AppSettings["..."];
}
你可以在你的代码中使用
MySqlConnection connection = new MySqlConnection(Config.ConnectionStr);
Microsoft enterprise Library有很棒的DataAccess部分,除了解决其他问题之外,还有这个
您可能有一个单独的类来处理数据库,并将连接字符串添加为其中的字段。每次要连接到数据库时,都可以使用这个类。如果需要,也可以使用属性来访问类外的字符串。
希望这有助于…
建议的方法可在MSDN的一篇题为"存储和检索连接字符串"的文章中获得。下面的示例对本文略有修改。
在app.config文件中存储连接字符串后,您可以像这样检索所有连接字符串:
static void GetConnectionStrings()
{
var settings = ConfigurationManager.ConnectionStrings;
if (settings != null) {
foreach(ConnectionStringSettings cs in settings) {
Console.WriteLine(cs.Name);
Console.WriteLine(cs.ProviderName);
Console.WriteLine(cs.ConnectionString);
}
}
}
您也可以通过名称获取连接字符串:
// Returns null if the name is not found.
static string GetConnectionStringByName(string name)
{
string returnValue = null; // Assume failure.
var settings = ConfigurationManager.ConnectionStrings[name];
if (settings != null) {
returnValue = settings.ConnectionString;
}
return returnValue;
}
这也为您提供了保护连接字符串的能力,以便您的数据库用户名&密码不会以明文形式嵌入到应用程序程序集中。