Ticherhaz FreePalestine
Ticherhaz FreePalestine

Reputation: 2377

Xamarin Form Sqlite Connection : Method not found: int SQLite.SQLiteConnection.CreateTable<!0>(SQLite.CreateFlags)

The build is success but when it comes to this method, it throws exception. This happened when I updated new packages at NuGet Packages.

public static string checkToken()
        {
            string token1 = "";
            try
            {
                SQLiteConnection db = DependencyService.Get<SQLiteInterface>().GetConnection();
                db.CreateTable<Token>();
            Token t = db.Table<Token>().FirstOrDefault();
            if (t != null)
            {
                DateTime dt = t.timeCreated;
                DateTime tmp = DateTime.Now;

                double diff = (tmp - dt).TotalMinutes;
                if (diff > 60.0 || App.IsUserLoggedIn == false)
                {
                    token1 = "expired";
                    db.Delete(t);
                }
                else
                {
                    token1 = t.token;
                }
            }
        }
        catch (Exception e)
        {
            e.ToString();
        }
        return token1;
    }

Here is the image.

enter image description here

UPDATED:

This packages from .Droid
enter image description here

This package from Portable
enter image description here

Upvotes: 1

Views: 752

Answers (2)

Cherry Bu - MSFT
Cherry Bu - MSFT

Reputation: 10346

As Janwilx72 said that you need to install sqlite-net-pcl package by Nuget for Pcl and Platforms. Don't need the package that you provided.

enter image description here

Then you can use SQLiteConnection.CreateTable() and have no issue.

I do one sample for Android at github, that you can take a look:

https://github.com/CherryBu/sqliteapp

If you want to do this in ios or other platform, you can take a look this article:

https://dzone.com/articles/register-and-login-using-sqlite-in-xamarinforms

https://learn.microsoft.com/en-us/archive/msdn-magazine/2016/july/xamarin-working-with-local-databases-in-xamarin-forms-using-sqlite

Upvotes: 1

Janwilx72
Janwilx72

Reputation: 506

It's annoying, but there's a very good chance you're going to have to delete all of those packages and reinstall them. Try to remove them and add the following packages

SQLitePCLRaw.bundle_green Version 1.1.2 in your native projects (Not in PCL)

SQLitePCLRaw.core Version 1.1.2 in your native projects (Not in PCL)

SQLitePCLRaw.lib.e_sqlite3.android Version 1.1.2

SQLitePCLRaw.provider.e_sqlite3.android Version 1.1.2

SQLitePCLRaw.provider.sqlite3.ios_unified Version 1.1.2

and then when you create the database, initialise it using the following code as the path:

string path = System.IO.Path.Combine(System.Environment
            .GetFolderPath(System.Environment.SpecialFolder.Personal), "localstore.db");

OR

If that doesn't work, remove all of them and only add the following one all of your projects

https://www.nuget.org/packages/sqlite-net-pcl/

I hope this helps

Upvotes: 1

Related Questions