EvilBeer EvilBeer - 2 months ago 19
Android Question

SQLite.SQLiteException thrown in Xamarin.Android when trying to create a table

I am trying to create a simple local SQLite database using Xamarin.Android.
The code for that is:

string folder = Environment.GetFolderPath (Environment.SpecialFolder.Personal);
SQLiteConnectiondb = new SQLiteConnection (Path.Combine (folder, "Experimental.db"));
db.CreateTable<Employee>();


My Employee class is:

[Table("Employees")]
public class Employee
{
[PrimaryKey, AutoIncrement]
int Id { get; set; }

string Name { get; set; }

}


The exception I am getting whenever the code reaches db.CreateTable is:

SQLite.SQLiteException: near ")": syntax error
at at SQLite.SQLite3.Prepare2 (intptr,string) <IL 0x0002c, 0x00160>
at at SQLite.SQLiteCommand.Prepare () <IL 0x00011, 0x0008f>
at at SQLite.SQLiteCommand.ExecuteNonQuery () <IL 0x00013, 0x000b3>
at at SQLite.SQLiteConnection.Execute (string,object[]) <IL 0x00041, 0x001ab>
at at SQLite.SQLiteConnection.CreateTable (System.Type,SQLite.CreateFlags) <IL 0x000a4, 0x005cb>
at at SQLite.SQLiteConnection.CreateTable<Core.Employee> (SQLite.CreateFlags) <0x00063>


To the inexperienced eyes of mine, this does look like an issue related to SQLite itself. Has anyone else faced this and if so - what was your work-around?

Answer

Make the properties on the Employee class public so SQLite can see them when it's creating the columns for your table:

[Table("Employees")]
public class Employee
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }

    public string Name { get; set; }

}
Comments