我有一个登录功能,接受一封电子邮件和pw,并返回给用户的电子邮件(电子邮件是唯一的)
我有一个静态DB类,它处理对数据库的访问,在此函数中,我检索登录的用户
public static async Task<User> GetUser(string email, int uid)
{
await Init();
//var user = await db.GetAsyn<User>(id);
var user = await db.Table<User>().Where(x => x.Email == email).FirstAsync();
List<User> list = await db.Table<User>().ToListAsync();
var list1 = await db.Table<User>().Where(x => x.id == uid).ToListAsync();
foreach(var usr in list)
{
var name = user.Name;
var em = user.Email;
var id1 = user.id;
}
return user;
}我发现了两个问题。如果我使用Where(x => x.id == uid),它会返回null,即使在我的数据库中有3个用户的id为0 (witch也是uid的值) idk为什么。该foreach循环用于调试。
第二个问题是,在我的用户模型中,我用自动增量和主键标记了id属性,但它看起来没有增加id,因为我有3个用户的id为0
我就是这样定义id属性的。
[PrimaryKey, AutoIncrement]
public int id { get; }这就是我添加新用户的地方
public static async Task<int> Add(User user)
{
await Init();
return await db.InsertAsync(user);
}从这里我称它为
async Task Register()
{
if(!(IsEmailValid && IsNameValid && IsPwValid && IsPwconfValid))
{
await App.Current.MainPage.DisplayAlert("Data entered is not valid", "Please check the text in red", "Dismiss");
return;
}
var succed = await DB.Add(User);
if (succed == 0)
await App.Current.MainPage.DisplayAlert("Something went wrong with registraition", "Please try again later", "Dismiss");
else
{
await App.Current.MainPage.DisplayAlert("Registraition succeded", "Now you are a member of this awsome app", "WELCOME");
await Shell.Current.GoToAsync($"//{nameof(LoginPage)}");
}
}用户已更新抛出绑定
发布于 2021-06-29 13:36:38
我使用sqlite-net-pcl version 1.7.335将一些数据保存到sqlite数据库中,看看下面关于创建表和保存数据的代码。
用户类:
public class SearchModel
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
public string PERSON { get; set; }
public string NAME { get; set; }
}保存用户数据:
public partial class Page2 : ContentPage
{
public SQLiteConnection conn;
public Page2()
{
InitializeComponent();
conn= GetSQLiteConnection();
}
public SQLiteConnection GetSQLiteConnection()
{
var fileName = "SearchModel.db";
var documentPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
var path = Path.Combine(documentPath, fileName);
var connection = new SQLiteConnection(path);
return connection;
}
private void btnadd_Clicked(object sender, EventArgs e)
{
//var data = conn.Table<SearchModel>();
for(int i=0;i<20;i++)
{
SearchModel model = new SearchModel();
model.PERSON = "person "+ i;
model.NAME = "cherry "+ i;
conn.Insert(model);
}
}
private void createdb_Clicked(object sender, EventArgs e)
{
conn.CreateTable<SearchModel>();
}
}将数据插入sqlite数据库成功,Id递增。
https://stackoverflow.com/questions/68165668
复制相似问题