如何解决 SQLite 查询的空绑定?
Posted
技术标签:
【中文标题】如何解决 SQLite 查询的空绑定?【英文标题】:How to resolve null bindings on SQLite query? 【发布时间】:2016-03-09 21:16:43 【问题描述】:我正在使用 SQLite 库和 SQLite.Net 来查询我的 Windows Phone 8.1 项目中的现有数据库。到目前为止,与数据库的连接执行良好,但返回的记录为空。
我采取了通常的调试步骤 -
1.检查映射到我的数据库架构中名称的绑定类型和名称。
2.验证数据库中存在数据。
3.遍历查询数据库的代码,发现db bindings为null。 (这表明我的 POCO 中的字段映射存在问题)
我没有收到任何编译时错误,但返回的记录为空。
问题: 有谁知道为什么为数据库映射提供的绑定存在问题?
当我单步执行 SQLite.cs 类时,我发现绑定计数为 0:
查询代码:
using (var dbConn = new SQLiteConnection(Path.Combine(ApplicationData.Current.LocalFolder.Path, AppDBPath), true))
List<ZoneInfo> zoneInfo = dbConn.Query<ZoneInfo>("select * from " + tableName).ToList<ZoneInfo>();
ObservableCollection<ZoneInfo> zoneInfoCollection = new ObservableCollection<ZoneInfo>(zoneInfo);
return zoneInfoCollection;
数据库映射 POCO:
public class ZoneInfo
//The ObjectId property is marked as the Primary Key
[SQLite.PrimaryKey]
[Column("objectId")]
public string ObjectId get; set;
[Column("zone")]
public string ZoneName get; set;
[Column("tariff_ph")]
public int? TariffPH get; set;
[Column("tariff_pd")]
public int? TariffPD get; set;
[Column("restrictions")]
public string Restrictions get; set;
[Column("days_of_operation")]
public string DaysOpen get; set;
[Column("hours_of_operation")]
public string HoursOpen get; set;
public ZoneInfo()
public ZoneInfo(string objectId, string zoneName, int tariffPH, int tariffPD,
string restrictions, string daysOpen, string hoursOpen )
ObjectId = objectId;
ZoneName = zoneName;
TariffPH = tariffPH;
TariffPD = tariffPD;
Restrictions = restrictions;
DaysOpen = daysOpen;
HoursOpen = hoursOpen;
数据库架构 -
【问题讨论】:
【参考方案1】:您的“数据库映射 POCO”与您的数据库架构不匹配。
[Column("tariff_ph")]
public int? TariffPH get; set;
[Column("tariff_pd")]
public int? TariffPD get; set;
应该是
[Column("tariff_ph")]
public float TariffPH get; set;
[Column("tariff_pd")]
public int TariffPD get; set;
因为您的数据集中有浮点值,并且它们都不是 NULLABLE。
我在这里有一个最小的例子Update Record in Sqlite Window Phone 8,它创建数据库、插入一些数据并更新数据库。看看这是否对您有帮助,但我很确定您的数据不正确。
【讨论】:
我终于通过重新安装应用程序在我的测试设备上工作,该应用程序又复制了数据库的 resh 副本。但是当我将应用程序部署到商店时,查询不会触发。任何想法为什么会这样?在这里创建了一个问题:***.com/questions/37634111/…以上是关于如何解决 SQLite 查询的空绑定?的主要内容,如果未能解决你的问题,请参考以下文章