Как установить sqlite на visual studio 2010
SQLite - основы использования
Когда создаются программы, использующее одну или несколько таблиц баз данных и (или) таблицы базы данных требуются только одному приложению (ограниченному числу приложений), то достаточно неудобно при сопровождении приложения отслеживать установки клиентского программного обеспечения для работы с базами данных, выполнять соответствующие настройки, решать вопросы безопасности и т.д., и т.п.
В Borland C++ Builder (Borland Delphi) для таких ситуаций можно использовать компонент TClientDataSet, позволяющий создать из таблиц БД (Paradox, DB) файл, который далее использовать в приложении полностью аналогично таблице базы данных. Собственно компонент TCLientDataSet позволял также, после загрузки файла из реальной таблицы БД, забыть на время о сервере доступа к данным и работать только с этим файлом (выполнять любое редактирование), а на этапе завершения приложения или на этапе необходимости публикации данных - перенести нужные данные в реальную таблицу БД.
С точки зрения пользователя - SQLite, это одиночный файл на диске. Этот файл не требует для своего использования запуска сторонних процессов, наличия СУБД и дополнительных средств администрирования.
Протокол обмена обеспечивают вызовы функций (API) библиотек SQLite (библиотеки занимают чуть более 500кб. памяти), что не требует от программиста дополнительных знаний структуры БД и особенностей организации взаимодействия. Движок SQLite и интерфейс к ней реализованы в одной библиотеке.
Прежде всего, она, как MySQL и PostgreSQL (сравнение ведем с небольшими базами данных), реализует основные возможности стандарта SQL 92 (включая триггеры и транзакции), и, по мнению многих, превосходит по возможностям PostgreSQL, а по скорости обработки данных превосходит обе указанные базы.
SQLite обеспечивает поддержку объема данных до 2-х терабайт, а размер записи (при использовании полей BLOB) ограничен только памятью компьютера.
Однако простота накладывает и ограничения. Приходится жертвовать отдельными характеристиками, характерными для больших баз данных, и, прежде всего, параллелизмом процессов, богатством встроенных библиотечных функций, все же небольшим ограничением стандарта языка SQL и некоторыми другими характеристиками. Но это не мешает все более широкому распространению SQLite для прикладных программы с небольшими базами данных, приложений, не требующих администрирования баз данных, для создания временной базы данных в процессе работы приложений, в качестве базы данных доступа и паролей на небольших Web порталах и для многих других целей.
Параграф 1. Основы использования SQLite
Managed Only - для приложений, которые должны работать в Windows и в Linux-based операционных системах.
Itanium - для работы на процессорах Intel Itanium.
x64 - версия для платформ с архитектурой x64.
Соответственно выбранному подходу будет несколько отличаться и решение Windows приложения для работы с SQLite.
Нам может понадобиться менеджер для работы с БД.
Первый из известных - SQLite Designer. Хотя богатствами функциональных возможностей он далек от хороших менеджеров баз данных и можно обойтись и без него, но все же, он дает возможность использовать некоторые визуальные средства для работы с базами SQLite: построитель запросов (Query Builder), редактирование таблиц и ряд других возможностей. Его можно найти в интернете, в частности на сайте SourceForge (закладка Files).
Отметим также, что при использовании встраиваемых в Visual Studio провайдеров, появляется возможность доступа к БД из Server Explorer студии, и, в зависимости от провайдера, некоторые функции по манипулированию таблицами баз данных и составления запросов.
Организацию взаимодействия с SQLite начнем с подробного рассмотрения его с использованием первого подхода. Далее - второй и третий параграфы посвящены созданию Windows приложений с использованием первого подхода, основанного на непосредственном использовании файлов библиотек провайдера без интеграции их в Visual Studio Net.
Параграф 2. Подготовка демонстрационного решения
Создадим простейшее Windows Application решение, как это показано в главе 1 "Простейший Windows Application проект". Я использовал Visual Studio 2010. В ней, при создании решения, все осталось, как и в предыдущих версиях студии, Меню "File/New Project". Далее выбираем, как показано на Рис.1., темплату и задаем имена. Обратите внимание на выделенное красным, Возможно, у Вас нет папки VS_2010(она будет создана) или нет диска D, тогда его следует заменить на C.
Рис.1 Создание решения приложения
На форму приложения поместим 6 кнопок, как показано на Рис.2.
Рис.2 Решение приложения
Дважды кликнув по каждой кнопке, создадим все необходимые нам обработчики нажатия кнопок, чтобы в дальнейшем к этому не возвращаться.
Функции для работы с SqLite будем оформлять, следуя моде, в классе "sqliteclass", для чего создадим этот класс, как показано на Рис.3., кликнув в Solution Explore на узле "sqlite" правой кнопкой мышки и выбрав пункты контекстного меню "Add" и "New Item".
Рис.3 Добавление класса для работы с SQLite
В появившемся окне коллекции темплат "Add New Item" выберем "Class", в поле "Name" введем имя класса - "sqliteclass.cs" и нажмем кнопочку "Add". Класс создан - Рис.4. Осталось заполнить его содержанием.
Рис.4 Класса для размещения функций для работы с SQLite
На данном этапе целесообразно нажать кнопочку "F5", выполнив решение, чтобы убедиться, что до данного момента код работоспособен.
PS: Чтобы узнать этот путь, в Solution Explorer дважды кликните в закладке "References" ссылку "System" (Рис.4.) - в окне "Object Browser" отобразится путь, где хранятся библиотеки.
Кликаем правой кнопкой мышки на закладке References (Рис.4.), выбираем пункт контекстного меню "AddReference. ", в окне "AddReference" выбираем закладку "Browse", находим нашу распакованную папку SQLite3NET, и последовательно выбираем в проект библиотеки "SQLite.Net.dll" и "ExceptionHandler.dll" (Рис.5.).
Рис.5 Добавление библиотек провайдера SQLite в решение
Переходим на закладку sqliteclass решения, и добавляем пространство имен "Finisar.SQLite" и "System.Data" - они необходимы для работы с базай данных. using System.Data ;
using Finisar.SQLite ;
На этом этапе наше решение готово для создания и организации взаимодействия с БД SQLite. Для того, чтобы убедиться, что и на данном этапе все работоспособно, нажмем "F5".
Параграф 3. Организация взаимодействия с SQLite
3.1 Приступая к взаимодействию с базой даннах
Переходим на вкладку "Form1.cs" и добавляем переменные, которые нам понадобятся для работы, и, прежде всего, экземпляр класса "sqliteclass" - "mydb".
3.2. Класс для работы с базой данных
Не возвращающие значения из базы данных (в лучшем случае возвращающие число записей, которые затронуло их выполнение - "Insert", "Delete", "Update").
Поэтому в нашем классе создадим две функции для этих случаев, соответственно iExecuteNonQuery и drExecute. Первая будет возвращать число затронутых ею записей, вторая массив выбранных строк DataRow. Поскольку, функции практически не отличаются по организации работы с БД от рассматриваемых нами в разделе "Работа с базами данных в Visual Studio" книги, размещенной на данном сайте, то здесь приведем класс полностью и рассмотрим его функции:
PS: В класс можно добавить функции для скалярного выбора, функции выбора с использованием DataReader, но для нашей цели достаточно и двух функций. Остальные, каждый может добавить и сам.
Итак, отличие от работы с другими базами данных - это наличие нескольких собственных невизуальных контролов. Первый, это свой коннектор - "SQLiteConnection", второй - собственный провайдер команд - "SQLiteCommand", и третий - свой адаптер данных, "SQLiteDataAdapter". Других контролов, отличных от MS SQL и Oracle не требуется.
"ConnectionString" требует указания полного пути к БД. Сами процессы связи с БД также стандартные. Обратим внимание на параметр "New", равный "True" или "False", который, как ясно по контексту, при значении "True", создает новою базу данных, а при значении "False" - нет. Причем, его значение приоритетнее "if not exists" в SQL операторе "CREATE TABLE if not exists. "
Перейдем к рассмотрению кода:
3.3 Создание базы данных
Будем создавать базу данных "mybd.db", путь к файлу которой мы определили в переменной "sPath". В базе данных создадим таблицу "birthday" со значениями полей "ФИО", "Даты рождения" и "отметки о поздравлении в данном году":
Если мы запустим на данном этапе решение на выполнение, то получим необрабатываемое исключение. Причина в том, что для работы с SQLite все файлы библиотек провайдера должны лежать где и "exe" файл приложения - в ссборке. Скопируем три файла из C:\SQLite3NET\ в D:\VS_2010\sqlite\bin\Debug\ (тоже придется сделать, когда мы будем компилировать приложение в "Release", скопировав файлы в . \bin\Release).
PS: Те ссылки, библиотеки которых необходимы в сборке приложения, можно копировать в сборку автоматически. Для этогов Solutation Explorer надо выбрать окно "Properties" ссылки и установить свойство "Copy Local" в "True".
Запустим приложение на выполнение, нажмем кнопочку "Create" и убедимся, что база данных создана (D:\VS_2010\sqlite\bin\Debug\mybd.db).
Отметим, что ни при создании базы, ни при создании таблицы, sqlCommand.ExecuteNonQuery ничего не возвращает, вернее возвращает "0". Поэтому надо как-то проверить то, что мы создали. Я делаю это так (продолжаем код, приведенный выше):
В принципе, мы использовали при проверки все основные действия с базой данных, Ниже приведенные функции лишь уточняют принципы взаимодействия.
3.4 Работа с базой данных
Работа с базой данных заключается в использовании функций класса для чтения и записи.
Работа с базой данных показана на Рис.6.
Рис.6 Работа с базой данных SQLite
Решение приложения можно скачать по этой ссылке с сайта.
Параграф 4. Типы данных SQLite
Наиболее удобно посмотреть типы данных SQLite в менеджере SQLite Expert Professional, о котором мы говорили в параграфе 1 (Рис.7.). Для этого нажмем кнопку "New Table", введем имя таблицы и нажмем кнопку "Add", в окне "New Field" в выпадающем списке можем посмотреть все возможные на данный момент типы данных.
Рис.7 Типы данных SQLite
NULL. Пустое значение в таблице базы.
INTEGER. Целочисленное значение, хранящееся в 1, 2, 3, 4, 6 или 8 байтах, в зависимости от величины самого значения.
TEXT. Значение строки текста. Хранится с использованием кодировки базы данных (UTF-8, UTF-16BE или UTF-16LE).
1. Если объявление типа содержит строку "INT", то столбец ассоциируется с аффинированным INTEGER.
2. Если объявление типа столбца содержит любую из строк "CHAR", "CLOB", или "TEXT", то аффинированность определяется как TEXT. Обратите внимание, что тип VARCHAR содержит подстроку "CHAR", и поэтому ему тоже сопоставляется аффинированный TEXT.
3. Если объявление типа столбца содержит строку "BLOB" или если тип не указан, то столбец аффинируется с NONE.
4. Если объявление типа столбца содержит любую из строк "REAL", "FLOA" или "DOUB", аффинированность определяется как REAL.
Параграф 5. Использование встроенных в Visual Studio провайдеров SQLite
Скачаем его и установим на машину, предварительно закрыв все Visual Studio Net.
В аннотации к провайдеру сказано:
Убедимся в этом. Откроем проект, который мы скачали (создали) в конце параграфа 3, удалим все ссылки в "Solution Explorer" в закладке "References" на SQLite, а также пространство имен в "sqliteclass.cs":
Выберем Toolbox (меню "View", "Toolbox") и увидим новую закладку "SQLiteData" (Рис.8.).
Рис.8. Встроенный провайдер SQLite
Перенесем в проект любой из контролов со вкладки "SQLiteData", например контрол "SQLiteConnection". Убедимся, что в "Solution Explorer", в закладке "References", появились новые библиотеки (Рис.8.):
Добавим в класс "sqlclass.cs" пространства имен:
Определимся на данном этапе, будем мы использовать стандартные контролы или нет. Я не сторонник использования стандартных контролов. Без них мы можем построить более гибкие приложения. Поэтому, удалим из проекта контрол "sqLiteConnection1" (на закладке "References" в Solution Explorer, при внесении контрола в проект библиотеки были добавлены, при удалении - они остаются). Значит, мы можем продолжить работу над проектом.
Изменим немного наш класс "sqliteclass.cs": using Devart.Data;
using Devart.Data.SQLite;
И соответственно в функциях класса добавить код:
Анализ ощибки выполнять уже в коде обращения к классу, после вызова данных функций.
Можно в try-catch предусмотреть и ведение журнала ошибок, добавив, например такую функцию:
Параграф 7. Работа с Blob типами или как хранить фото
7.1 Решение приложения
Создадим новый проект решения с именем "sqlite1". Будем использовать шаги создания проекта, по методике показанной выше. Поместим на форму 6 контролов Button, 2 контрола PictureBox и один контрол OpenFileDialog. Также создадим класс "sqliteclass" (Рис.9.). Класс можно взять из предыдущего проекта, скопировав его в наш проект, добавив в решение(Solution Explorer, узел "sqlite1", контекстное меню узла, "Add", "Existing Item") и переименовав пространство имен:
namespace sqlite1
Обратим внимание, что для работы с SQLite мы используем встроенный в Visual Studio провайдер и подход, описанный нами в параграфе 5. Как мы убедились - это не является принципиальным, мы переделывали проект подхода от использования соответствующих файлов библиотек провайдера к использованию встроенного в Visual Studio провайдера, Вы можете без труда, в качестве тренировки, после прочтения этого параграфа, проделать обратное преобразование.
Рис.9. Проект решения
Поставим задачу: нам необходимо хранить файлы фотографий в некоторой базе SQLite, причем, для простоты, ничего, кроме фотографий, в этой базе храниться не будет (только номер фотографии и само фото).
Начнем с кнопки 1 - создание базы данных.
Здесь ничего нового, даже функцию iExecuteNonQuery мы использовали из класса "sqliteclass" прошлого решения. Вы можете скопировать все функции в класс "sqliteclass" из прошлого решения, если не воспользовались советом о копировании класса.
Обратим внимание, что при создании таблицы базы данных, мы намеренно отказались от опции "AUTOINCREMENT" - причина, метод записи, который мы будем рассматривать следующим, не очень дружит с этим предложением.
Далее выбираем фотографию, которую будем записывать в БД и помещаем ее в pictureBox1.
Помимо отображения записываемой фотографии мы поместили байты файла фото в байтовый массив "data", используя MemoryStream и его метод ToArray().
Далее рассмотрим возможности использование SQLiteDataAdapter и возможности SQL предложений с параметрами для записи в БД, и в частности, записи Blob типов данных.
7.2 Возможности использование SQLiteDataAdapter для записи BLOB данных
Введем в наш класс две функции. Задача первой будет "изучить" схему таблицы базы данных и возвратить ее в DataTable.
7.3 Возможности использования SQL предложений с параметрами для записи BLOB данных
Приведенная ниже функция, которая была добавлена в класс, не претендует на универсальность, но позволяет записать в поле Blob байты изображения. Почему это приходится делать через параметры, а не преобразовать массив в строку? Дело в том, что байты изображения могут содержать нулевой символ, что воспринимается как конец строки и единственная возможность непосредственно указать адаптеру о необходимости воспринимать то, что передается в массиве байт, как сплошной поток бит - "SQLiteType.Blob".
Соответственно, использование данной функции, будет выглядеть примерно так:
Далее рассмотрим два способа чтения Blob поля из базы данных, с использованием SQLiteDataAdapter и SQLiteDataReader.
7.4 Чтение Blob данных с использованием SQLiteDataAdapter
7.5 Чтение данных с использованием SQLiteDataReader
Метод основан на возможности DataReader читать данные столбца как массив бит. Функция GetBytes последовательно переписывает биты в массив байт, что позволяет получить байтовый образ сохраненного в памяти изображения.
7.6 Функция ExecuteScalar
И последнее, что мы использовали, это функция oExecuteScalar, возвращающая единичное значение столбца или агрегат из БД.
Рис.10 Работа с Blob данными в SQLite
Вместо заключения или скачать решение для работы с Blob типами данных
Решение для скачивания приложения, работающего с Blob данными, не приводится намеренно. Причина тому, что автор не уверен в том, что большинство скачали и установили встраиваемый провайдер SQLite для Visual Studio (это часто помогает предотвратить обилие вопросов типа:"А почему у меня Ваш проект не заработал?" - есть много кто сначала скачивает, а потом читает - что же он скачал). К тому же, как уже было сказано, решение для скачивания, приведенное в параграфе 3, легко адаптируется и для работы с Blob данными, достаточно лишь внести в него приведенные в параграфе 7 функции.
Литература
Молчанов Владислав 25.05.2011г., параграф 7 добавлен 30.5 2011г.
SQLite являются официально рекомендуемой системой управления баз данных для создания локального хранилища данных в Windows 10. SQLite обладает такими преимуществами, как компактность, кроссплатформенность, переносимость, ее не надо разворачивать на сервере, что делает ее очень удобным инструментом в мобильной разработке для разных ОС. Рассмотрим, как мы можем использовать SQLite при программирования в приложениях Universal Windows Platform. Прежде всего создадим новый проект, который назовем SQLiteApp .
Прежде всего для работы с SQLite нам надо устанавить для Visual Studio соответствующее расширение. Для этого в Visual Studio перейдем к пункту меню Tools -> Extensions and Updates . И здесь среди всех расширений нам надо установить расширение SQLite for Universal App Platform :
Чтобы быстрее найти нужное расширение, надо в левом списке перейти к пункту Online и ввести в окно поиска SQLite.
Например, в моем случае (да и как правило, по умолчанию) в качестве минимальной версии применяется Windows 10 November Update:
Минимальная версия среды указывается при создании проекта и потом ее можно увидеть и изменить в свойствах проекта.
Соответственно если бы проект использовал в качестве целевой и минимальной версий Windows 10 Fall Creators Update или более новую:
То мы могли бы использовать пакеты Entity Framework Core версий 2.х:
Теперь создадим модели, которые будут описывать данные и объекты которых будут храниться в бд SQLite. Для этого добавим в проект два класса. Класс Phone, который будет представлять модель телефона:
И класс Company, который представляет компанию-производителя телефона:
Итак, у нас здесь две модели, которые связаны связью "один-ко-многим", то есть одной компании может принадлежать много телефонов. А модель телефона хранит ссылку на определенную компанию.
При использовании Entity Framework нам надо учитывать некоторые условности. Во-первых, каждая модель должна иметь свойство-уникальный идентификатор, который должен называться Id или по шаблону [Класс]Id , например, для класса Phone это было бы свойство PhoneId . По этому уникальному идентификатору данные будут уникально различаться в базе данных.
Во-вторых, для создания связи "один-ко-многим" зависимая модель должна содержать ключ. В нашем случае зависимой моделью является Phone, поэтому он определяет ключ в виде двух свойств:
Свойство CompanyId хранит идентификатор модели Company, которая связана с данной моделью Phone. А свойство Company является ссылкой на этот связанный объект Company.
Для хранения всех объектов Phone в классе Company определено свойство
После определения моделей нам надо добавить в проект класс контекста данных, через который приложение будет взаимодействовать с базой данных.
Итак, добавим в проект новый класс MobileContext:
Класс контекста данных должен быть унаследован от базового класса DbContext, а для взаимодействия с таблицами в базе данных в нем определяются свойства по типу DbSet<T> . То есть через свойство Companies будет идти взаимодействие с таблицей компаний, а через свойство Phones - взаимодействие с таблицей телефонов.
Теперь нам нужна сама база данных. Здесь есть два варианта:
У нас нет начальных данных и соответственно базы данных, однако при работе приложения после установки приложения на устройство она может потребоваться. Поэтому имеет смысл создать базу данных сразу после установки на устройство.
Исходный код доступен на GitHub.
Введение в SQLite
- если в названии пакета для скачивания нет слова “static”, то это значит, что на машине разработчика и пользователя приложения должна стоять Microsoft Visual C++ Runtime Library (2005, 2008, 2010, 2012, 2013 или 2015).
- если в названии есть слово “setup”, то он включает в себя и автоматически устанавливает на машину Microsoft Visual C++ Runtime Library.
- пакет со словом “bundle”, используется в том случае, если библиотеки необходимо разместить в Global Assembly Cache
Сами разработчики рекомендуют брать во внимание следующие моменты при выборе дистрибутива SQLite:
Структура папки, в которой располагается приложение, для поддержки режима автоматической подгрузки нужных библиотек (Native Library Pre-Loading) представлена ниже
- <bin>\App.exe (опционально, приложение)
- <bin>\App.dll (опционально, библиотека приложения)
- <bin>\System.Data.SQLite.dll (требуется, core сборка)
- <bin>\System.Data.SQLite.Linq.dll (опционально, LINQ сборка)
- <bin>\System.Data.SQLite.EF6.dll (опционально, EF6 сборка)
- <bin>\x86\SQLite.Interop.dll (требуется, x86 native interop сборка)
- <bin>\x64\SQLite.Interop.dll (требуется, x64 native interop сборка)
Создадим простое приложение, демонстрирующее работу с SQLite СУБД. В качестве среды разработки будем использовать Visual Studio 2015 Community Edition.
Подготовка
В Visual Studio создадим проект Windows Forms Application с именем SQLiteSample.
После этого необходимо собрать проект, для того, чтобы IDE создала необходимый набор каталогов. В нашем случае интерес представляет \bin\Debug. В него добавим необходимый набор файлов, как показано выше в описании структуры папок при использовании подхода Native Library Pre-Loading.
Добавим в проект ссылку на библиотеку System.Data.SQLite.dll, предварительно скопировав ее в папку SQLiteSample\SQLiteSample\lib. Для этого на панели меню выбрать Project/Add Reference… В открывшемся окне нажать кнопку Browse… и выбрать файл System.Data.SQLite.dll. Что привет к появлению нового Reference в окне Solution Explorer.
Приложение будет представлять собой форму для работы с базой данных, содержащей имена писателей и названия их произведений. Внешний вид представлен на рисунке ниже.
На панели инструментов имеются несколько кнопок:
В строке состояния отображается статус:
Создание базы данных, таблиц и работа с данными
Сейчас более подробно рассмотрим процессы создания базы данных, таблиц и работы с записями таблицы (чтение и добавление). Каждая из этих задач будет решаться в рамках метода, вызываемого при нажатии на соответствующую кнопку.
Предварительно подключим в нашем проекте пространство имен System.Data.SQLite и добавим переменные для связи с базой данных. Таким образом наша программа будет иметь вид.
Создание БД и таблицы
Создание БД и таблицы в “SQLite Sample”, если они ещё не созданы, осуществляется при нажатии на кнопку Create.
После этого мы подключаемся к созданной БД:
Для выполнения SQL команд будем использовать переменную m_sqlCmd, чтобы это стало возможным в первую очередь зададим объект класса SqlConnection, используемый SQLiteCommand:
После выполним запрос на создание таблицы:
Подключение к уже существующей таблице
Подключение к уже существующей таблице осуществляется при нажатии на кнопку Connect. Код метода очень похож на тот, что мы разбирали выше, поэтому на нем мы останавливаться не будем.
Чтение данных
Чтение данных осуществляется при нажатии на кнопку Read all, при этом из существующей БД считываются все данные и выводятся в таблицу.
Разберем этот метод более подробно. Первое, что необходимо сделать, это проверить наличие связи с БД:
Данные, считанные из базы, мы будем помещать в таблицу DataTable, а из неё будем из перегружать в элемент DataGridView, расположенный на нашей форме. Для этого создадим SQL запрос и адаптер, который будет выполнять запрос и передавать полученные от СУБД данные в таблицу
Если таблица не пуста, перенесем данные из нее в элемент dgvViewer.
Добавление данных в БД
Добавление данных в БД осуществляется при нажатии на кнопку Add. При этом будет вызван соответствующий метод.
В нем мы также, вначале проверяем, есть ли связь с БД, после этого создает диалоговое окно для ввода имени автора и названия произведения.
Если окно было закрыто по кнопку OK, то записываем введенные данные в БД
На этом можно завершить описание базовых понятий и методов работы с СУБД SQLite.
Спасибо за внимание!
Привет, у тебя нет проблем с поиском кириллических символов в базе? У меня почему-то совсем не ищет
Просто скачал проект с гитхаба и пробую запустить.
Нужно установить Microsoft Visual C++ 2010
Не ясно как определить lbStatusText.Text. Явно в проекте lbStatusText.Text не определена, а других пояснений нет.
Вот скажите человек пытается разобраться БД, а вы еще ему тему со StatusStrip подбрасываете. В вашем примере lbStatusText.Text не определена. Нужно лезть подключать StatusStrip. А это совсем другая опера. Нельзя ли сделать этот пример без StatusStrip?
Полезная статья, однако, не раскрыта тема команды Update. Т.е изменение данных в таблице формы, и перенос этих изменений в базу.
Здравствуйте.
Подскажите пожалуйста, как мне прочитать данные из ячейки, находящейся в определённом столбце?
К примеру, есть таблица из 4 столбцов: title, discription, date, sirial
Допустим мне нужно прочитать данные из 6-ой строки столбца description
Скажите пожалуйста, как правильно сформировать запрос к базе и вывести результат например в MessageBox?
Большое спасибо
Установка необходимых пакетов
После окончательной установки всех необходимых пакетов, вид вашего проекта в обозревателе решений должен быть вот таким:
Добавим в наш проект пространство имен System.Data.SQLite и напишем следующий метод подключения к базе данных:
Ошибка доступа к базе данных. Исключение: unable to open database fileСоздадим новую таблицу в наше базе данных. Для этого, допишем код метода Main() следующим образом:
Добавление записей в SQLite
Добавим одну запись в таблицу базы данных SQLite, используя все тот же объект типа SQLiteCommand :
В приведенном выше примере мы использовали в качестве запроса обычную строку с заранее известными параметрами запроса. Однако, удобнее использовать для добавления новых записей в БД SQLite запрос с параметрами. Сделать это можно, например, следующим образом:
Использование транзакций SQLite
Одной из претензий, которую предъявляли (и, иногда, продолжают предъявлять) новички в работе с SQLite к этой замечательной базе данных является то, что, по мнению новичков, запись в эту базу данных происходит очень медленно. Действительно, посмотрим на вот такой код:
Здесь мы пробуем записать в базу SQLite 1000 записей и, при этом, засекаем время выполнения операции. Вот, что покажет нам счётчик времени выполнения операции:
и посмотрим, что покажет счётчик времени выполнения операции:
Как видите, выполнение транзакции в SQLite позволило сократить время выполнения операции более, чем на 99%.
У SQLiteDataAdapter есть несколько конструкторов, позволяющих создать объект. Мы воспользовались только одним из нихПосле этого мы заполняем нашу таблицу данными, используя для этого метод Fill() адаптера. Как только мы заполнили данными нашу таблицу, мы можем приступать к чтению данных по каждой записи. Для этого в примере использован цикл foreach в котором мы проходимся по каждой строке таблицы и в каждой строке читаем поля id, name и family каждой записи, используя обобщенный метод Field<T>() , который позволяет привести данные поля к необходимому нам типу.
ИТОГО
Сегодня мы научились выполнять основные операции для работы с базой данный SQLite: создавать соединение с базой данных, создавать новые таблицы, заполнять таблицы данными и считывать данные из таблиц баз данных SQLite. Для того, чтобы запись данных происходила быстрее, мы использовали транзакции, которые позволили ускорить запись в таблицу SQLite более чем на 99%.
Простая база данных на MS Visual Studio 2014 и MS SQL Server
Как сделать самому простую базу данных с использованием Microfoft Visual Studio 2014 и MS SQL Server 2014?
Устанавливаете и запускаете MS SQL Server
Создаем базу данных.
Для этого в контекстном меню (правая кнопка мыши на Базы данных ) выбираете Создать базу данных
Потом нажимаете правой кнопкой мыши на название базы выбираете Создать скрипт для базы данных - Использовать Create - Новое окно редактора запросов.
Там пишете запрос на создание таблички
Создается табличка baza со столбцами fio Длиной 100 символов и tel длиной тоже 100 символов.
Потом щелкаете правой кнопкой мыши по белому полю рядом с запросом и выбираете в открывшемся меню пункт Выполнить
Будет создана табличка baza в базе данных sqlbase
Потом запускаем установленный MS Visual Studio 2014
Выбираете пункт меню ФАЙЛ-Создать проект.
Затем выбираете Приложение Windows Forms
Открывается основная форма программы.
Затем выбираете пункт меню ПРОЕКТ-Добавить новый источник данных.
Затем выбираете тип источника данных База данных.
Модель базы данных указываете Набор данных.
Затем в окне Выбора подключения базы данных нажмите Создать подключение и в открывшемся окне введите параметры подключения к базе MS SQL сервера.
Имя сервера server\sqlexpress
Имя базы данных sqlbase
Затем в окне выбора объектов базы выберите нужную Вам табличку.
Затем на панели инструментов выберите DataGridView и поместите его на форму.
В меню "DataGrid View Задачи" (маленький треугольник вверху справа серого квадрата) выберите нужную таблицу.
Затем добавьте две кнопки на форму Button1 и Button2
Дважды щелкните по Button1 и в скобки впишите код
Потом дважды щелкните по Button2 и в скобки впишите код
Затем переименуйте кнопки Button1 и Button2 в Добавить и Удалить соответственно.
В итоге получилась такая программка.
Сюда можно вставить текстовые поля для ввода и подставить в код их значения, добавить поиск, принцип можно посмотреть в разделе Простая база данных на Delphi7 или, например, в Пошаговом описании создания базы данных
Читайте также: