Introduction

Summary

The original Birthday Reminders application used Microsoft SQL Server as the database to store data about people and their dates of birth.  On completion the application was deployed to Microsoft Azure.  The Azure free-trial lasts for 12 months, after which some services are chargeable; one of these is SQL Server. I don't anticipate that my application will store very much data, and therefore, although the likely cost of SQL Server is relatively small, I was prompted by a comment on one of my YouTube videos to look at SQLite.  SQLite stores data in a file and should be able to be included in a web application and deployed to Azure at no additional cost.   (There are probably other database engines that I should have explored, but I must admit that I haven't.)

YouTube Video

SQLite

As the name implies SQLite is a SQL database engine, but lacks the extensive abilities that Microsoft SQL Server can provide; having said that it is still a formidable piece of software.  For a full description of SQLite, see the SQLite web page.

There are a number of differences between SQL Server and SQLite that will cause challenges in the conversion of the Birthday Reminders application to SQLite.  Principal amongst these differences are:

  • SQLite does not support Stored Procedure
  • SQLite does not support Functions
  • SQLIte doesn't really have datatypes.  It uses context rather than datatype to handle data like dates and GUIDs.

For these reasons alone it means a re-think about data access will be needed.  In short, either SQL statements will need to be formulated in code before being passed to SQLite as 'simple' SQL commands, or some data processing will need to be placed into the C# code.

Hangfire

As well as the above, there is also the problem that I used Hangfire to schedule automatic reminders, and that I configured Hangfire to use SQL Server; an alternative will need to be found.

SQLite Birthday Reminders

I had thought about amending the existing project to use SQLite, but on reflection I have decided that it probably makes more sense to start again rather than trying to modify my existing project.

A lot of this project is going to be a repeat of steps already documented in Birthday Reminders; I will therefore be going to refer back to previous posts and YouTube videos rather than repeating them.  Apologies if this seems a little disjointed...