SQLite net with linq on Windows Phone 8.1

本文关键字:Phone Windows on net with linq SQLite | 更新日期: 2023-09-27 18:07:35

假设我有下表:

public class User
{
    public User()
    { 
    }
    public User(string name, string pass)
    {
        addUser(name, pass);
    }
    public void addUser(string name, string pass)
    {
        //todo cryptography
        this.login = name;
        this.password = pass;
    }

    [PrimaryKey, AutoIncrement]
    public int ID { get; set; }
    [Unique, MaxLength(20)]
    public string login { get; set; }
    [MaxLength(20)]
    private string password { get; set; }
    public string group { get; set; }
}
  1. 我在登录字段中有唯一的关键字。如果我添加另一个具有相同登录名的人,会引发异常还是会跳过此插入命令
  2. 从user表中获取用户名的最佳方法是什么?为了根据某些名称条件获取所有用户,我使用此示例函数进行测试。

       public async void GetRow(string name)
       {
        var query = dbConnection.Table<User>().Where(x => x.login.Contains(name));
        var result = await query.ToListAsync();
        foreach (var item in result)
        {
            User u = item as User;
            MessageDialog msgbox = new MessageDialog(u.login);
            await msgbox.ShowAsync();
        }
       } 
    

假设我只想根据给定的名称从Users表中获得一条记录,那么最好的方法是什么。我试过这样的东西:

from u in dbConection.Table<User> select u.Login where u.Login = name;
  1. 如何从GetRow函数返回2个问题中描述的用户密码?我只能收到项目列表,我在网上搜索,我找到了FirstOrDefault功能,但有更好的方法吗

编辑:

广告1。抛出异常

ad 2.只有当表中存在记录时,这才有效,在其他情况下抛出异常

 var query = (from s in dbConnection.Table<User>() where s.login == name && s.password == password select s).FirstAsync();  
    User qr = query.Result;

SQLite net with linq on Windows Phone 8.1

我找到了解决方案。这是一个简单的验证函数。谢谢你的帮助。

            try
            {
                var query = (from s in dbConnection.Table<User>() where s.login == name && s.password == password select s).FirstAsync();
                User x = await query;
                if (x != null) return true;
                else return false;                
            }
            catch (Exception)
            {
                return false;
            }
var some_strings = new List<string> {"Szcz","epan"};
string first_string = some_strings.FirstOrDefault();
//first_string = "szcz";
some_strings = new List<string>();
first_string = some_strings.FirstOrDefault();
//first_string = null;
if (first_string != null)
    // do your stuff here.

如果您处理的是Int的,那么默认值将为零。如果它是一个自定义类,那么它将是该类的默认值。