概述: 我正在使用SQLLite查詢Windows Phone 8.1解決方案中的現有數據庫。我已經調整了這個solution來將數據庫數據讀回我的項目。但是當我使用數據庫連接調用ToList()時,我得到一個沒有這樣的數據庫錯誤的。如何解決SQLLite「沒有這樣的表」的錯誤?
到目前爲止,我已經附加數據庫文件和我的DBHelper類使用下面的代碼來查詢數據傳回:
using (var dbConn = new SQLiteConnection(dbPath))
{
//No such table error thrown here ->
List<ZoneInfo> zoneInfo = dbConn.Table<ZoneInfo>().ToList<ZoneInfo>();
ObservableCollection<ZoneInfo> zoneInfoCollection = new ObservableCollection<ZoneInfo>(zoneInfo);
return zoneInfoCollection;
}
這是完整的DBHelper類從我的解決方法參考現有的數據庫文件和將其複製到設備的本地文件夾。 DB文件本身是here。
調試步驟:
- 我回顧了區信息類的屬性,以確定它們與該類型/名稱每個字段在下面的DB模式匹配,和他們相匹配。
- dbPath名稱與附加的數據庫名稱相匹配,所以這也不是問題。
- 我還發現一個similar question與Android上的SQLLite相關,這表明它可能是我在桌面上查詢時遇到的一個問題。
- 我還考察了dbconn變量,它讓我在錯誤的詳細信息:
我應該採取什麼步驟來調試SQLLite「沒有表」的錯誤進一步?
異常詳情: 異常的確切細節是如下這告訴我不存在這樣的區信息表:
SQLite.SQLiteException was unhandled by user code
HResult=-2146233088
Message=no such table: ZoneInfo
Source=Parking Tag Picker WRT
StackTrace:
at SQLite.SQLite3.Prepare2(IntPtr db, String query)
at SQLite.SQLiteCommand.Prepare()
at SQLite.SQLiteCommand.<ExecuteDeferredQuery>d__0`1.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at SQLite.SQLiteCommand.ExecuteQuery[T]()
at SQLite.TableQuery`1.GetEnumerator()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at Parking_Tag_Picker_WRT.Helpers.DatabaseHelper.ReadZones(String dbPath)
at Parking_Tag_Picker_WRT.ViewModel.TagRequestViewModel.InitZoneInfoAsync()
at Parking_Tag_Picker_WRT.TagRequestPage.OnNavigatedTo(NavigationEventArgs e)
InnerException:
區信息類別:(DB中的數據映射到一個類)
public class ZoneInfo
{
//The ObjectId property is marked as the Primary Key
[SQLite.PrimaryKey]
[Column("results_list_objectId")]
public string ObjectId { get; set; }
[Column("results_list_zone")]
public string ZoneName { get; set; }
[Column("results_list_tariff_ph")]
public int? TariffPH { get; set; }
[Column("results_list_tariff_pd")]
public int? TariffPD { get; set; }
[Column("results_list_restrictions")]
public string Restrictions { get; set; }
[Column("results_list_days_of_operation")]
public string DaysOpen { get; set; }
[Column("results_list_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;
}
}
DB模式:
DB位置的解決方案:
我沒有找到數據庫中的ZoneInfo表。 –
確定沒有,這是我的數據庫應該映射到的POCO類的名稱。是否應該與我的db文件名相同? DublinCityCouncilTable –