首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLite.Net SQLiteException约束

SQLite.Net SQLiteException约束
EN

Stack Overflow用户
提问于 2018-02-27 21:02:21
回答 1查看 2.1K关注 0票数 2

我以前在这里看过这个错误,但结果对我不起作用。

我已经做了一个登录表单,它只工作了一次。在我登录一次并重新启动应用程序并尝试登录后,我收到错误消息。

功能:

代码语言:javascript
复制
public int SaveUser(User user)
{
    lock (locker)
    {
        if (user.Id != 0)
        {
            database.Update(user);
            return user.Id;
        }

        else
        {
            return database.Insert(user);
        }
    }
}

用户模型:

代码语言:javascript
复制
[Table("User")]
public class User
{   
    [PrimaryKey, AutoIncrement, NotNull]
    public int Id { get; set; }
    [Unique]
    public string Username { get; set; }
    public string Password { get; set; }
}

更新:我希望这是进一步帮助所需的详细信息。

02-27 14:13:15.806 I/MonoDroid(23447): at SQLite.PreparedSqlLiteInsertCommand.ExecuteNonQuery (System.Object[] source) [0x00121] in /Users/vagrant/git/src/SQLite.cs:2668 02-27 14:13:15.806 I/MonoDroid(23447): at SQLite.SQLiteConnection.Insert (System.Object obj, System.String extra, System.Type objType) [0x000f4] in /Users/vagrant/git/src/SQLite.cs:1415 02-27 14:13:15.806 I/MonoDroid(23447): at SQLite.SQLiteConnection.Insert (System.Object obj) [0x00005] in /Users/vagrant/git/src/SQLite.cs:1281 02-27 14:13:15.806 I/MonoDroid(23447): at KleynGroup.Data.UserDatabaseController.SaveUser (KleynGroup.User user) [0x00038] in C:\Users\[name]\source\repos\KleynGroup\KleynGroup\KleynGroup\Data\UserDatabaseController.cs:48

如果有很多错误,很抱歉。我是Xamarin的新手,还在学习。

我希望你们能帮助我

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-27 21:23:23

根据错误消息,异常是由Insert抛出的,因此我假定您正在尝试插入User (User.Id似乎是0)。无论如何,由于它不是一个新的用户名,而是一个已有的用户名,插入它会因为UsernameUNIQUE约束而失败。

您必须确保,当用户被加载然后保存时,它仍然具有正确的ID,以防止该异常。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49009377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档