SQLite net PCL - 简单选择
Posted
技术标签:
【中文标题】SQLite net PCL - 简单选择【英文标题】:SQLite net PCL - Simple select 【发布时间】:2015-08-24 20:51:00 【问题描述】:我使用 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);
我得到了这个例外:"Object reference not set to an instance of an object"
如何通过简单的选择来查找该字段?
感谢任何提示
【问题讨论】:
List<string> hhid = db.Query<string>("select id from Config",null);
字段名称是 ID
而不是 id
更改 Select 以匹配字段名称
@MethodMan 我试过了,结果一样。我现在更新了问题
db
是否正确初始化?
您是否尝试过 LINQ 语法而不是 .Query ?即github.com/oysteinkrog/SQLite.Net-PCL。 conn.Table<Config>();
@nachogsiri 你解决了吗?
【参考方案1】:
希望这对代替我的人有用...
括号()之间是表名:
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;
【讨论】:
以上是关于SQLite net PCL - 简单选择的主要内容,如果未能解决你的问题,请参考以下文章
我应该在 Xamarin.Forms 上使用哪些 SQLite (sqlite-net-pcl) 标志?
13.3 使用SQLite.NET-PCL访问SQLite数据库
在 SQLite.Net-PCL 中创建和使用具有复合主键的表
查询表只返回 null 到 sqlite-net-pcl 中的列表