Как использовать одну строку подключения во всем проекте winforms - PullRequest
2 голосов
/ 02 августа 2011

Я использую Winforms, MySQL и C # в моем проекте.В этом я использую строку соединения в настройках приложения.

На каждой новой странице я буду объявлять строку соединения как общедоступную и использовать эту строку в соединении.

MySqlConnection connection = new MySqlConnection(MyConString);

Я хочу объявить эту MyConString только один раз во всем приложении.Как это сделать?Где делать?

Ответы [ 5 ]

9 голосов
/ 02 августа 2011

Я не думаю, что вы должны раскрывать свою строку подключения для ваших форм, им не нужно это знать.Вы можете инкапсулировать создание соединений с помощью простой фабрики.

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("...");
    }
}
2 голосов
/ 02 августа 2011

У вас может быть отдельный класс для обработки баз данных и добавления строки подключения в качестве поля. Каждый раз, когда вы хотите подключиться к базе данных, вы можете использовать этот класс. Также, если вы можете использовать свойство для доступа к строке за пределами класса, если вам требуется.

Надеюсь, это поможет ...

2 голосов
/ 02 августа 2011

Предлагаемый подход доступен в статье 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;
}

Это также дает вам возможность Защита строк подключения , чтобы имя пользователя и пароль вашей базы данных не были встроены в сборку приложения в виде открытого текста.

2 голосов
/ 02 августа 2011

В Enterpise Library от Microsoft есть отличная часть DataAccess, которая помимо решения других проблем, и эта

2 голосов
/ 02 августа 2011

Вы можете попробовать что-то вроде следующего:

public static class Config
{
    public static string ConnectionStr = ConfigurationManager.AppSettings["..."];
}

Вы можете использовать его в своем коде

MySqlConnection connection = new MySqlConnection(Config.ConnectionStr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...