又是我,那个使用 SQLite-net 的人。当我的表主键上没有自动增量时,我的代码可以正常工作。我想自动增量键,所以我像这样重建了表:
using SQLite;
namespace VehicleTracks.Models
{
public class vehicles
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
public string VehID { get; set; }
public string VehYear { get; set; }
public string VehMake { get; set; }
public string VehModel { get; set; }
public string VehColor { get; set; }
public string EngineID { get; set; }
public System.DateTime PurchaseDate { get; set; }
public string SellerName { get; set; }
public string SellerStreet { get; set; }
public string SellerCityStateZip { get; set; }
public string VehOptions { get; set; }
public string OdomInitial { get; set; }
public string VehBodyStyle { get; set; }
public float PurchaseCost { get; set; }
public byte[] VehPhoto { get; set; }
public string VehType { get; set; }
public string Sold { get; set; }
}
}
现在,当尝试创建表时,我收到“自动增量附近的语法错误”。我尝试关闭自动增量,但如果没有它,它似乎不会增加 ID。
我可能错过了一些愚蠢的事情。
你的代码没有什么愚蠢之处;与代码示例匹配https://github.com/praeclarum/sqlite-net https://github.com/praeclarum/sqlite-net好吧。但考虑到类似的问题,显然代码示例是错误的:
Android 表创建失败(接近“自动增量”:语法错误)? https://stackoverflow.com/questions/7594541/android-table-creation-failure-near-autoincrement-syntax-error
通过删除自动增量解决了该问题。或者引用http://www.sqlite.org/faq.html#q1 http://www.sqlite.org/faq.html#q1 :
简短回答:声明为 INTEGER PRIMARY KEY 的列将自动增量。
(请仔细检查该列是否ID
实际上有类型INTEGER PRIMARY KEY
创建表后。)
更长的答案:如果您将表的一列声明为 INTEGER PRIMARY KEY,那么每当您将 NULL 插入表的该列时,NULL 都会自动转换为一个整数,该整数比该列的最大值大 1表中的所有其他行,如果表为空,则为 1。
确保您的INSERT
语句不包含显式值(除了NULL
) 对于列ID
,否则该列不会自动递增。如果这在 SQLite-net 中不可能(您可能需要一个调试器),那么这很可能是一个错误。尽管令人惊讶的是没有其他人遇到过这种情况。
也许你需要创造财产ID
可空(即使用类型int?
;是的,带问号)。请注意,我只是在这里猜测;你可能需要尝试一下。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)