SQLite.SQLiteException:重复的列名:id

时间:2017-05-24 21:54:10

标签: c# android sqlite

我正在为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>;

没有帮助。只有一个简单的属性,但是视觉工作室做了什么,它试图将该属性作为一个列添加两次。

1 个答案:

答案 0 :(得分:0)

好的,经过大量测试和调试后我发现了问题。

包含的SQLite Nuget包是问题所在。它只能创建一次表。无论你做什么,如果你创建了一个表,你就无法创建另一个表。即使您删除了数据库。

在我将Nuget包改为另一个具有几乎相同功能的包后,它得以解决。