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#. Вступайте в наши группы и будьте в курсе новостей.