SQLite net PCL - Simple select

24.8k views Asked by At

I use SQLite from windows app and now I am developing in Xamarin a portable app so I am using the plugin sqlite net pcl and I am having great trouble to understand how it works.

I have a table that is created by te following:

public class Config
    {
        public string IP { get; set; }
        [SQLite.Net.Attributes.Default(true, "Client 2")]
        public string ID { get; set; }
    }

and to create the table:

db.CreateTable<Model.Config>();

Problem: Now I want to select the value in ID column and I do the following:

List<string> hhid = db.Query<string>("select ID from Config",null);

I get this exception: "Object reference not set to an instance of an object"

How can I make a simple select to find this field?

Thanks for any tip

2

There are 2 answers

0
Ignacio Gómez On BEST ANSWER

Hoping this will be usefull to someone in my place...

Between the brackets (<>) goes the table name:

db.Query<TableName>("select * from ....");

Some examples that worked for me:

Simple select:

var list = db.Query<MyTableName>("select * from MyTableName");

Select with restrictions:

var list = db.Query<MyTableName>("select * from MyTableName where lastname=? and firstname=?", lastnameValue, firstNameValue);
0
lbenini On

The accepted answer doesn't really help if you have a custom mapping for the tables name. The "Sql" table name can be found at runtime accessing to the type mapping.

Here an extension method

public static class NativeConnectionExtension
{
    public static List<T> SelectAllFrom<T>(this SQLiteConnection cnn) where T : new()
    {
        var mapping = cnn.GetMapping<T>();
        var result = cnn.Query<T>(String.Format("select * from {0};", mapping.TableName));
        return result;
    }
}