我在我的项目中使用Winforms,MySQL和C#。我在应用程序设置中使用连接字符串。
在每个新页面,我将连接字符串声明为public,并在连接中使用此字符串。
MySqlConnection connection = new MySqlConnection(MyConString);
我想在整个应用程序中只声明一次MyConString。这该怎么做?怎么办?
答案 0 :(得分:9)
我认为你不应该将你的连接字符串暴露给你的表单,他们不需要知道。您可以使用简单工厂封装连接的创建。
public class ConnectionFactory
{
public static MySqlConnection Create()
{
string connectionString = ConfigurationManager.AppSettings["..."];
MySqlConnection conection = new MySqlConnection(Config.ConnectionStr);
connection.Open();
return connection;
}
}
然后,当您需要表单中的连接时,您可以执行以下操作:
private void button1_click(object sender, EventArg args)
{
using ( var connection = ConnectionFactory.Create() )
{
connection.Execute("...");
}
}
答案 1 :(得分:2)
您可以尝试以下内容:
public static class Config
{
public static string ConnectionStr = ConfigurationManager.AppSettings["..."];
}
然后您可以在代码中使用它
MySqlConnection connection = new MySqlConnection(Config.ConnectionStr);
答案 2 :(得分:2)
建议的方法可在MSDN文章Storing and Retrieving Connection Strings中找到。以下示例稍加修改。
将连接字符串存储在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;
}
这也为您提供Securing Connection Strings的功能,以便您的数据库用户名和密码未以明文形式嵌入到您的应用程序集中。
答案 3 :(得分:2)
Enterpise Library有一个很好的DataAccess部分,除了其他prtoblem求解之外还有这个
答案 4 :(得分:2)
您可能有一个单独的类来处理数据库,并将连接字符串添加为字段。每次要连接到数据库时,都可以使用该类。此外,如果您需要,可以使用属性访问类外的字符串。
希望这会有所帮助......