Singlton для подключения к БД sqlite

222
05 декабря 2017, 17:59

Добрый вечер. Хочу сделать Singlton для подключения к БД Sqlite. Чтобы не использовать по 100 раз код подключения, тк таких методов много. Подскажите как это сделать ? Код одного из запросов ниже

     {
            {
                string databaseName = @"eurocar31.db";
                SQLiteConnection connection =
                      new SQLiteConnection(string.Format("Data Source={0};", databaseName));
                connection.Open();
                SQLiteCommand command = new SQLiteCommand();
                command.Connection = connection;
                command.CommandText = "UPDATE Predoxraniteli SET cena =\"" + pr9.Text + "\" WHERE id = " + pr10.Text + ";";
                SQLiteDataReader reader = command.ExecuteReader(); int index = 0;
                while (reader.Read())
                {
                    index = index + 1;
                }
                connection.Close();
            }
            dataGridView5.Rows.Clear();
            getPred();
        }
Answer 1

Вот пример реализован синглетон, посмотрите, метод GetConnection создает обьект один раз, после того он будет отдавать обьект ранее создан.

public class ConnectionDb
    {
        private static SQLiteConnection connection = null;
        private static SQLiteCommand command = null;
        private static string filePath = AppDomain.CurrentDomain.BaseDirectory + "/Database/ItemsDb.sqlite";
        /// <summary>
        /// the method returns the link to the database
        /// </summary>
        /// <returns></returns>
        public static SQLiteConnection GetConnection()
        {
            if (connection == null)
            {
                if (!File.Exists(filePath))
                    SQLiteConnection.CreateFile(filePath);
                connection = new SQLiteConnection($"Data Source={filePath};Version=3;");
                connection.Open();
                string query = "Create table if not exists `Items`( `id` INTEGER NOT NULL,`Name` varchar(30) NOT NULL, `Type` varchar(30) NOT NULL, PRIMARY KEY(`id`))";
                command = new SQLiteCommand(query, connection);
                command.ExecuteNonQuery();
            }
            return connection;
        }
    }

    /// <summary>
    /// The method delete existing element
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    public bool Delete(int id = 0)
    {
        try
        {
            var query = $"Delete from `Items` where `id` = '{id}'";
            command = new SQLiteCommand(query, ConnectionDb.GetConnection());
            return Convert.ToBoolean(command.ExecuteNonQuery());
        }
        catch
        {
            return false;
        }
    }
READ ALSO
Связать DataGridView с коллекцией

Связать DataGridView с коллекцией

Хочу связать DataGridView с какой-то коллекцией(например List)Чтоб скажем изменил я что-то в DataGridView и в списке автоматически поменялось

218
Вызов из XAML custom-компонента

Вызов из XAML custom-компонента

Проблема, При попытке компиляции дает с строке с overlaycanvas ошибку "Класс overlaycanvas не найден"

198
WPF C# Binding со связями ObservableCollection

WPF C# Binding со связями ObservableCollection

Не bind`ся связанные данные

160
Взятие элемента из txt файла и его удаление. js

Взятие элемента из txt файла и его удаление. js

Нужно сделать так чтобы функция в js брала рандомно какое-то из имён в перечне, который находится уже изначально в текстовом файлеИ после того...

200