SQLite є компактною вбудовуваною реляційною базою даних з відкритим початковим кодом. У 2005 році проект удостоївся нагороди Google - O'Reilly Open Source Awards.
І це цілком заслужено, оскільки не виникає жодних проблем з інтеграцією бази і вашим проектом. Що ж означає вбудовувана база даних?
SQLite не використовує стандартну для інших баз парадигму клієнт-сервер, тобто її движок не окремо працюючий процес, з яким взаємодіє програма, а є бібліотекою, з якою зв'язується ваше застосування, тобто є частиною програми.
У результаті, протокол обміну це виклики функцій бібліотеки SQLite(API). Цей підхід значно знижує накладні витрати і спрощує написання додатка. Визначення, індекси, таблиці і дані SQLite зберігає у базі даних, що є звичайним файлом на тому комп'ютері, де виконується програма. Якщо двома словами, то уся простота реалізації грунтована на блокуванні бази, перш ніж почнеться транзакція запису.
Отже, приступимо до роботи з базою даних SQLite
Припустимо, у вас є сайт з програмним забезпеченням. Кожна програма, точніше сторінка з програмою має свій опис, наприклад, тільки російською мовою. Багатомовний сайт, унікальні тексти і грамотне просування дозволять значно збільшити відвідуваність ресурсу. Розглянемо приклад на MVC 3.
Модел для програми:
public class Program
{
public string title { get; set;}
public string description { get; set;}
public string size { get; set;}
public string version { get; set;}
}
Створимо нову таблицю ProgramTable із структурою lang(TEXT), title(TEXT), description(TEXT), size(TEXT), version(TEXT). Параметр lang і відповідатиме за локалізацію. Створіть декілька записів в таблиці для тесту. До речі, для роботи з базами SQLite ми рекомендуємо використати безкоштовне і дуже зручне розширення для Mozilla Firefox - Sqlite Manager. Отриману базу треба покласти в теку App_Data
і додати запис в Web.config
:
<connectionStrings>
<add name="SqliteProgramsDb" connectionString="Data Source=|DataDirectory|ProgramTable.sqlite;Version=3;"/>
</connectionStrings>
У нашому базовому контроллері HomeController створіть новий метод і представлення ProgramList
.
public ActionResult ProgramList(string lang)
{
PageModel pageModel = new PageModel(lang);
ViewData.Model = pageModel;
return View();
}
Тепер для отримання з бази даних з вашим програмним забезпеченням нам знадобиться модель PageModel
, враховуючи переклад.
public class PageModel
Program
{
public List<Program> m_list = new List<>();
Program
public PageModel(string lang)
{
string connStr = ConfigurationManager.ConnectionStrings["SqliteProgramsDb"].ToString();
SQLiteConnection conn = new SQLiteConnection(connStr);
try
{
conn.Open();
}
catch (Exception ex)
{
}
SQLiteCommand command = new SQLiteCommand("SELECT * FROM ProgramTable WHERE lang=\"" + lang + "\"", conn);
SQLiteDataReader reader = command.ExecuteReader();
if (reader != null && reader.HasRows)
{
while (reader.Read())
{
item = new
Program();
size
item.title = reader["title"].ToString();
item.description = reader["description"].ToString();
item.size = reader[""].ToString();
version
item.version = reader[""].ToString();
m_list.Add(review);
}
}
conn.Close();
}
}
Все, ми отримали бажаний список елементів з бази, тепер можна їх обробити в уявленні будь-яким зручним способом.
ProgramList.cshtml:
@model MyMvcProject.Models.PageModel
@{
ViewBag.Title = "Наше программное обеспечение";
}
@for (int i = 0; i < Model.m_list.Count; i++)
{
// Ваш код
}
Цей невеликий приклад показує неймовірну зручність роботи з базами SQLite. Подібним способом можна локализовывать Layout- файли, якщо ви не хочете робити додаткові запити до бази і повторювати програмний код.
У наступних статтях ми постараємося викласти принцип локалізації додатків на C#. Вступайте в наші групи і будьте в курсі новин.