我正在为Android编写应用程序,并决定将其存储在SQLite数据库中。
我用以下来创建数据库:
var db = new SQLiteConnection(TestPath);
db.CreateTable<TestClass>;
那就是班级:
class TestClass
{
[PrimaryKey, AutoIncrement, Column("id")]
public int Id { get; set; }
[NotNull, Column("messagetext")]
public string MessageText { get; set; }
[Column("messagetype")]
public int MessageType { get; set; }
public TestClass(string mText, int mType)
{
MessageText = mText;
MessageType = mType;
}
}
当我运行应用程序时(无论是调试还是发布),都会出现以下错误:
SQLite.SQLiteException: duplicate column name: id
我已经检查过它是否被多次调用过。 我已经尝试更改名称了。 我注意到它始终是第一列。所以首先我没有添加id,因为我真的不需要它。但没有id,下一列会出现同样的错误。 我也试图改变链接。 (没有链接没有帮助)
我总是清理并完全重建项目并从模拟中删除旧应用程序。
我尝试的一切都没有帮助。 知道我接下来会尝试什么吗?
编辑25.05.2017: 我现在尝试使用更少的列:
class TestClass
{
public int id { get; set; }
}
我仍在创作:
var db = new SQLiteConnection(TestPath);
db.CreateTable<TestClass>;
没有帮助。只有一个简单的属性,但是视觉工作室做了什么,它试图将该属性作为一个列添加两次。
答案 0 :(得分:0)
好的,经过大量测试和调试后我发现了问题。
包含的SQLite Nuget包是问题所在。它只能创建一次表。无论你做什么,如果你创建了一个表,你就无法创建另一个表。即使您删除了数据库。
在我将Nuget包改为另一个具有几乎相同功能的包后,它得以解决。