繁体   English   中英

Windows Phone 8.1上带有linq的SQLite net

[英]SQLite net with linq on Windows Phone 8.1

假设我有下表:

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. 从用户表获取用户名的最佳方法是什么? 为了根据某个名称条件获得所有用户,我出于测试目的使用此示例功能。

      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表中仅获取1条记录,那是最好的方法。 我尝试过这样的事情:

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

编辑:

广告1.引发异常

广告2:仅当表中存在记录时此方法才有效,否则会引发异常

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

我找到解决办法。 这是一个简单的验证功能。 谢谢您的帮助。

            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 ,则默认值为零。 如果它是一个自定义类,则它将是您对该类的默认设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM