我之前看过这个错误,但结果对我不起作用。
我已经创建了一个登录表单,它可以正常运行一次。在我登录一次并重新启动应用程序并尝试登录后,我收到错误。
功能:
public int SaveUser(User user)
{
lock (locker)
{
if (user.Id != 0)
{
database.Update(user);
return user.Id;
}
else
{
return database.Insert(user);
}
}
}
用户模型:
[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的新手,还在学习。
我希望你们能帮助我
答案 0 :(得分:1)
根据错误消息Insert
引发异常,因此我假设您尝试插入User
(User.Id
似乎是0
)。无论如何,由于它不是新的,而是现有的用户名,因为UNIQUE
的{{1}}约束,它的插入失败。
您必须确保,当用户加载然后保存时,它仍然具有正确的ID,以防止该异常。