0
我正在使用SQLite for ADO.NET,.NET v4.0二進制文件。查詢SQLite返回有符號int16,但被定義爲無符號
我嘗試根據數據庫提取內容填充類的數據時遇到了問題。
反射代碼:
var type = this.GetType();
var properties = type.GetProperties();
foreach(var property in properties)
{
property.SetValue(this, row[property.Name]);
}
然而,這將引發的異常:
類型的對象 'System.Int64' 不能被轉換爲類型 'System.UInt16形式'。
它試圖填充的值是ushort。
在最初生成表的sql中,該列被定義爲'UNSIGNED SMALLINT',這對我的理解應該與C#ushort相同。
創建SQL-
CREATE TABLE [Monsters]
(
[MonsterID] UNSIGNED SMALLINT NOT NULL UNIQUE,
[MonsterName] VARCHAR(50) NOT NULL,
[ElementMask] UNSIGNED TINYINT NOT NULL,
[Str] UNSIGNED TINYINT NOT NULL,
[Dex] UNSIGNED TINYINT NOT NULL,
[Int] UNSIGNED TINYINT NOT NULL,
[Con] UNSIGNED TINYINT NOT NULL,
[Spd] UNSIGNED TINYINT NOT NULL,
[ImageSetID] UNSIGNED SMALLINT NULL
)
卸下 'UNSIGNED' 代替拋出了此異常:
類型的對象 'System.Int16' 不能被轉換爲類型 'System.UInt16形式'。
給定有符號/無符號不匹配的情況。
以調試模式檢查行顯示預期數據。 http://i.stack.imgur.com/7Ayts.png
不太確定發生了什麼,所以任何幫助將不勝感激。
謝謝。
嗯,SQLite很奇怪。雖然有用。謝謝CL。 – Magusware 2014-10-10 18:41:11