Sqlite Package For Dev C++

A complete VSIX package with an extension SDK and all other components needed to use SQLite for application development with Visual Studio 2012 targeting Windows Phone 8.0. Wp81-winrt-3310100.vsix (4.79 MiB) A complete VSIX package with an extension SDK and all other components needed to use SQLite for application development with Visual. Oct 10, 2018  None of the files in the package's example/ directory matches known example patterns. Common filename patterns include main.dart, example.dart, and sqlite2.dart. Packages with multiple examples should provide example/README.md. For more information see the pub package.

  • SQLite Tutorial
  • Advanced SQLite
  • SQLite Interfaces
  • SQLite Useful Resources
  • Selected Reading

In this chapter, you will learn how to use SQLite in C/C++ programs.

Installation

Before you start using SQLite in our C/C++ programs, you need to make sure that you have SQLite library set up on the machine. You can check SQLite Installation chapter to understand the installation process.

C/C++ Interface APIs

Following are important C/C++ SQLite interface routines, which can suffice your requirement to work with SQLite database from your C/C++ program. If you are looking for a more sophisticated application, then you can look into SQLite official documentation.

Sr.No.API & Description
1

sqlite3_open(const char *filename, sqlite3 **ppDb)

This routine opens a connection to an SQLite database file and returns a database connection object to be used by other SQLite routines.

If the filename argument is NULL or ':memory:', sqlite3_open() will create an in-memory database in RAM that lasts only for the duration of the session.

If the filename is not NULL, sqlite3_open() attempts to open the database file by using its value. If no file by that name exists, sqlite3_open() will open a new database file by that name.

2

sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)

This routine provides a quick, easy way to execute SQL commands provided by sql argument which can consist of more than one SQL command.

Here, the first argument sqlite3 is an open database object, sqlite_callback is a call back for which data is the 1st argument and errmsg will be returned to capture any error raised by the routine.

SQLite3_exec() routine parses and executes every command given in the sql argument until it reaches the end of the string or encounters an error.

3

sqlite3_close(sqlite3*)

This routine closes a database connection previously opened by a call to sqlite3_open(). All prepared statements associated with the connection should be finalized prior to closing the connection.

If any queries remain that have not been finalized, sqlite3_close() will return SQLITE_BUSY with the error message Unable to close due to unfinalized statements.

Connect To Database

Following C code segment shows how to connect to an existing database. If the database does not exist, then it will be created and finally a database object will be returned.

Now, let's compile and run the above program to create our database test.db in the current directory. You can change your path as per your requirement.

If you are going to use C++ source code, then you can compile your code as follows −

Here, we are linking our program with sqlite3 library to provide required functions to C program. This will create a database file test.db in your directory and you will have the following result.

Create a Table

Following C code segment will be used to create a table in the previously created database −

When the above program is compiled and executed, it will create COMPANY table in your test.db and the final listing of the file will be as follows −

INSERT Operation

Following C code segment shows how you can create records in COMPANY table created in the above example −

When the above program is compiled and executed, it will create the given records in COMPANY table and will display the following two lines −

SELECT Operation

Before proceeding with actual example to fetch records, let us look at some detail about the callback function, which we are using in our examples. This callback provides a way to obtain results from SELECT statements. It has the following declaration −

If the above callback is provided in sqlite_exec() routine as the third argument, SQLite will call this callback function for each record processed in each SELECT statement executed within the SQL argument.

Following C code segment shows how you can fetch and display records from the COMPANY table created in the above example −

When the above program is compiled and executed, it will produce the following result.

UPDATE Operation

Following C code segment shows how we can use UPDATE statement to update any record and then fetch and display updated records from the COMPANY table.

When the above program is compiled and executed, it will produce the following result.

DELETE Operation

Following C code segment shows how you can use DELETE statement to delete any record and then fetch and display the remaining records from the COMPANY table.

When the above program is compiled and executed, it will produce the following result.

-->

You can use SQLite to store and retrieve data in a light-weight database on the user's device. This guide shows you how.

Some benefits of using SQLite for local storage

✔️ SQLite is light-weight and self-contained. It's a code library without any other dependencies. There's nothing to configure.

✔️ There's no database server. The client and the server run in the same process.

✔️ SQLite is in the public domain so you can freely use and distribute it with your app.

✔️ SQLite works across platforms and architectures.

Sqlite Package For Dev C++

You can read more about SQLite here.

Choose an abstraction layer

C++ Sqlite Library

We recommend that you use either the Entity Framework Core or the open-source SQLite library built by Microsoft.

Entity Framework Core

Sqlite C++ Api

Entity Framework (EF) is an object-relational mapper that you can use to work with relational data by using domain-specific objects. If you've already used this framework to work with data in other .NET apps, you can migrate that code to a UWP app and it will work with appropriate changes to the connection string.

To try it out, see Getting started with EF Core on Universal Windows Platform (UWP) with a New Database.

SQLite library

The Microsoft.Data.Sqlite library implements the interfaces in the System.Data.Common namespace. Microsoft actively maintains these implementations, and they provide an intuitive wrapper around the low-level native SQLite API.

The rest of this guide helps you to use this library.

Set up your solution to use the Microsoft.Data.SQlite library

We'll start with a basic UWP project, add a class library, and then install the appropriate Nuget packages.

The type of class library that you add to your solution, and the specific packages that you install depends on the minimum version of the Windows SDK that your app targets. You can find that information in the properties page of your UWP project.

Use one of the following sections depending on the minimum version of the Windows SDK that your UWP project targets.

The minimum version of your project does not target the Fall Creators Update

If you're using Visual Studio 2015, click Help->About Microsoft Visual Studio. Then in the list of installed programs, make sure that you have NuGet package manager version of 3.5 or higher. If your version number is lower than that, install a later version of NuGet here. On that page, you'll find all of the versions of Nuget listed beneath the Visual Studio 2015 heading.

Next, add class library to your solution. You don't have to use a class library to contain your data access code, but we'll use one our example. We'll name the library DataAccessLibrary and we'll name the class in the library to DataAccess.

Right-click the solution, and then click Manage NuGet Packages for Solution.

If you're using Visual Studio 2015, Choose the Installed tab, and make sure that the version number of the Microsoft.NETCore.UniversalWindowsPlatform package is 5.2.2 or higher.

If it isn't, update the package to a newer version.

Choose the Browse tab, and search for the Microsoft.Data.SQLite package. Install version 1.1.1 (or lower) of that package.

Move onto the Add and retrieve data in a SQLite database section of this guide.

The minimum version of your project targets the Fall Creators Update

There's a couple of benefits to raising the minimum version of your UWP project to the Fall Creators update.

First off, you can use .NET Standard 2.0 libraries instead of regular class libraries. That means that you can share your data access code with any other .NET-based app such as a WPF, Windows Forms, Android, iOS, or ASP.NET app.

Secondly, your app does not have to package SQLite libraries. Instead, your app can use the version of SQLite that comes installed with Windows. This helps you in a few ways.

✔️ Reduces the size of your application because you don't have to download the SQLite binary, and then package it as part of your application.

✔️ Prevents you from having to push a new version of your app to users in the event that SQLite publishes critical fixes to bugs and security vulnerabilities in SQLite. The Windows version of SQLite is maintained by Microsoft in coordination with SQLite.org.

✔️ App load time has the potential to be faster because most likely, the SDK version of SQLite will already be loaded into memory.

Lets start by adding a .NET Standard 2.0 class library to your solution. It's not necessary that you use a class library to contain your data access code, but we'll use one our example. We'll name the library DataAccessLibrary and we'll name the class in the library to DataAccess.

Right-click the solution, and then click Manage NuGet Packages for Solution.

At this point, you have a choice. You can use the version of SQLite that is included with Windows or if you have some reason to use a specific version of SQLite, you can include the SQLite library in your package.

Let's start with how you use the version of SQLite that included with Windows.

To use the version of SQLite that is installed with Windows

Choose the Browse tab, and search for the Microsoft.Data.SQLite.core package, and then install it.

Search for the SQLitePCLRaw.bundle_winsqlite3 package, and then install it only to the UWP project in your solution.

To include SQLite with your app

You don't have to do this. But if you have a reason to include a specific version of SQLite with your app, choose the Browse tab, and search for the Microsoft.Data.SQLite package. Install version 2.0 (or lower) of that package.

Add and retrieve data in a SQLite database

We'll do these things:

1️⃣ Prepare the data access class.

2️⃣ Initialize the SQLite database.

3️⃣ Insert data into the SQLite database.

4️⃣ Retrieve data from the SQLite database.

5️⃣ Add a basic user interface.

Prepare the data access class

From your UWP project, add a reference to the DataAccessLibrary project in your solution.

Add the following using statement to the App.xaml.cs and MainPage.xaml.cs files in your UWP project.

Open the DataAccess class in your DataAccessLibrary solution and make that class static.

Note

While our example will place data access code in a static class, it's just a design choice and is completely optional.

Add the following using statements to the top of this file.

Initialize the SQLite database

Add a method to the DataAccess class that initializes the SQLite database.

This code creates the SQLite database and stores it in the application's local data store.

In this example, we name the database sqlliteSample.db but you can use whatever name you want as long as you use that name in all SqliteConnection objects that you instantiate.

In the constructor of the App.xaml.cs file of your UWP project, call the InitializeDatabase method of the DataAccess class.

Insert data into the SQLite database

Add a method to the DataAccess class that inserts data into the SQLite database. This code uses parameters in the query to prevent SQL injection attacks.

Retrieve data from the SQLite database

Add a method that gets rows of data from a SQLite database.

The Read method advances through the rows of returned data. It returns true if there are rows left, otherwise it returns false.

The GetString method returns the value of the specified column as a string. It accepts an integer value that represents the zero-based column ordinal of the data that you want. You can use similar methods such as GetDataTime and GetBoolean. Choose a method based on what type of data the column contains.

The ordinal parameter isn't as important in this example because we are selecting all of the entries in a single column. However, if multiple columns are part of your query, use the ordinal value to obtain the column you want to pull data from.

Add a basic user interface

In the MainPage.xaml file of the UWP project, add the following XAML.

This basic user interface gives the user a TextBox that they can use to type a string that we'll add to the SQLite database. We'll connect the Button in this UI to an event handler that will retrieve data from the SQLite database and then show that data in the ListView.

C# Sqlite Example

In the MainPage.xaml.cs file, add the following handler. This is the method that we associated with the Click event of the Button in the UI.

That's it. Explore the Microsoft.Data.Sqlite to see what other things you can do with your SQLite database. Check out the links below to learn about other ways to use data in your UWP app.

Next steps

Connect your app directly to a SQL Server database

See Use a SQL Server database in a UWP app.

Share code between different apps across different platforms

See Share code between desktop and UWP.

Add master detail pages with Azure SQL back ends

See Customer Orders Database sample.