You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter:从Sql_conn返回的JSON提取用户名并转字符串(去空格)

解决Sql_conn查询结果中字符串的空格去除问题

核心解决方案

你的查询结果是List<Map<String, dynamic>>类型,只需从结果集中提取UserName字段,再调用trim()方法即可去除前后所有空格:

修改后的代码示例

如果需要获取处理后的用户名,可调整函数返回类型:

Future<String?> getTrimmedUserName(String userInput) async {
  try {
    await SqlConn.connect(
      ip: "192.16****5",
      port: "1433",
      databaseName: "XXXXXXXXX",
      username: "c***",
      password: "As******1",
    );
    // 改用参数化查询避免SQL注入风险
    var sql = "SELECT UserName FROM Users WHERE UserName = @userInput";
    var resultSet = await SqlConn.readData(sql, parameters: {"userInput": userInput});
    
    if (resultSet.isNotEmpty) {
      // 提取字段并去除前后空格
      String trimmedUserName = resultSet.first["UserName"].toString().trim();
      print(trimmedUserName); // 输出: Practica1
      return trimmedUserName;
    }
    return null;
  } catch (e) {
    print(e.toString());
    return null;
  }
}

如果要保留原checkUserExists函数的逻辑,同时处理空格验证:

Future<bool> checkUserExists(String userInput) async {
  try {
    await SqlConn.connect(
      ip: "192.16****5",
      port: "1433",
      databaseName: "XXXXXXXXX",
      username: "c***",
      password: "As******1",
    );
    var sql = "SELECT UserName FROM Users WHERE UserName = @userInput";
    var resultSet = await SqlConn.readData(sql, parameters: {"userInput": userInput});
    
    if (resultSet.isNotEmpty) {
      // 同时trim数据库返回值和用户输入,确保匹配准确
      String dbUserName = resultSet.first["UserName"].toString().trim();
      return dbUserName == userInput.trim();
    }
    return false;
  } catch (e) {
    print(e.toString());
    return false;
  }
}

关键说明

  • 提取字段:resultSet.first["UserName"] 直接获取第一个查询结果的UserName值,因为返回格式是[{"UserName":"xxx"}]这样的列表
  • 去除空格:trim()方法会移除字符串前后的所有空白字符(包括空格、制表符、换行符等)
  • 安全提醒:原代码使用字符串拼接SQL存在严重的SQL注入风险,必须改用参数化查询(Sql_conn支持通过parameters传递参数)

内容的提问来源于stack exchange,提问作者Dima C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 13:17:33