SQLite net PCL - 简单查询

13

我在Windows应用程序中使用SQLite,现在我正在开发Xamarin可移植应用程序,因此我正在使用sqlite net pcl插件,但我很难理解它的工作原理。

我有一个通过以下方式创建的表:

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

并创建表:

db.CreateTable<Model.Config>();

问题:我现在想选择ID列中的值,我执行以下操作:

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

我收到了这个异常:"对象引用未设置为对象的实例"

我如何进行简单选择以查找该字段?

感谢任何提示。


List<string> hhid = db.Query<string>("SELECT ID FROM Config", null); 字段名应为“ID”,而不是“id”,请更改Select以匹配字段名。 - MethodMan
@MethodMan 我尝试了那个,结果一样。我现在更新了问题。 - Ignacio Gómez
db 是否已正确初始化? - valdetero
2
你尝试过使用LINQ语法而不是.Query吗?例如:https://github.com/oysteinkrog/SQLite.Net-PCL。`conn.Table<Config>();` - valdetero
@nachogsiri 你解决了吗? - voytek
@voytek 是的,我在那里发布了一个答案。如果你有问题,请告诉我。 - Ignacio Gómez
2个回答

20

希望这对处于我当前位置的某人有所帮助...

尖括号(<>)中为表名:

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

一些对我有效的例子:

简单的选择:

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

限制条件下的选择:

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

2
接受的答案如果您有自定义映射表名称,其实并没有帮助。 可以在运行时访问类型映射表找到“Sql”表名称。
这里是一个扩展方法。
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;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接