【问题标题】:How to compare user input and the record in sqflite如何比较用户输入和 sqflite 中的记录
【发布时间】:2020-02-13 21:36:42
【问题描述】:

在 sqflite 数据库中,我有一个名为 user 的表。用户由用户名 a、b、c 组成。

当用户输入 var a 时,系统会与表 user 中的用户名进行比较。如果用户输入等于用户表中的用户名,系统将打印错误消息,否则系统将打印成功。

我尝试使用未来的构建器,但它不起作用。如何在 Test.dart 中进行验证?

谢谢。

这是我的代码:

SqliteHelper.dart

 Future getDat(UserAccount userAccount) async {
var dbClient = await db;
name = userAccount.username;
List<Map> result = await dbClient.query("UserAccount",
    where: "username =?", whereArgs: [userAccount.username]);
if (result.length == 1) {
 return  name;
}

}

Test.dart

_saveData() async {


  var db = UserAccountHelper();
  var mynote = UserAccount(cTitle.text);
  await db.getDat(mynote);
      FutureBuilder(
      future: db.getDat(mynote),
      builder: (context, snapshot) {
        if (snapshot.hasError) print(snapshot.error);
        var data = snapshot.data;
        if (snapshot.hasData) print("test 3");
        if(snapshot.data.toString() == cTitle.text.toString()) 
        {print("success")} 
        else{print("error")};
      });

}

【问题讨论】:

    标签: flutter sqflite


    【解决方案1】:
     Future<String> getDat(String username) async {
        var dbClient = await db;
        List<Map> result = await dbClient.query("UserAccount",
            where: "username =?", whereArgs: [username]);
    
        if (result.length == 1) {
          return  name;
        }
    
        return null;
    }
    
    
    _saveData() async {
    
      var db = UserAccountHelper();
      var username = cTitle.text;
      if(await db.getDat(username) != null) {
        print('Error');
        return;
      } 
    
      print('Success');
    }
    

    我修改的东西:

    • 您不需要 UserAccount 作为参数,因为您只使用其中的用户名。

    • 如果在数据库中找不到用户名,getDat 将返回 null;

    • _saveData 中,如果getDat 的结果不为空,则打印error,否则打印success

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 1970-01-01
      • 2019-10-15
      • 2018-04-25
      相关资源
      最近更新 更多