Способ создания нового файла БД SQL Server CE.Предложить улучшения - PullRequest
1 голос
/ 10 ноября 2010

Я использую следующий код для программного создания файла базы данных SQL Server CE. Я использую C # 2008.

    /* Create a new SQL Server CE database file programatically */
    protected void CreateDB(string _databaseFileName, bool _encryptFile, string _password)
    {
        if (File.Exists(_databaseFileName))
            MessageBox.Show("A file with this name already exists.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        else
        {
            string connectionString = string.Format("DataSource=\"{0}\"; Password='{1}'", _databaseFileName, _password);
            SqlCeEngine engine = new SqlCeEngine(connectionString);
            engine.CreateDatabase();
        }
    }

Я хочу улучшить приведенный выше код. Мои вопросы ниже:

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

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

  3. Я хочу включить обработку исключений с наименьшими издержками. Я хочу включить « using », но не следую, как изменить вышеуказанный код с помощью этого.

1 Ответ

3 голосов
/ 10 ноября 2010
  1. Сделать метод static.
  2. Если вы включите пароль в строку подключения, файл базы данных будет автоматически зашифрован.
  3. Не уверен, что вы подразумеваете под этим. Вы должны поймать SqlCeException в остальном. Кроме того, вы должны заключить SqlCeEngine в оператор использования.

    try
    {
       string connectionString = string.Format("DataSource=\"{0}\"; Password='{1}'", _databaseFileName, _password);
       using (SqlCeEngine engine = new SqlCeEngine(connectionString))
       {
          engine.CreateDatabase();
       }
    }
    catch (SqlCeException)
    {
    }
    
...