当前位置: 首页 > 知识库问答 >
问题:

使用省道将数据插入Postgres数据库

凌伟泽
2023-03-14

我有一个postgres数据库,包含一个名为“users”的表。该表有四个字段:

  • id BIGSERIAL主键
  • 显示名称文本不为空,
  • 电子邮件文本不为空
  • 电话号码文本

我想从dart代码中添加数据。我的尝试是这样的:

import "dart:io";
import "package:postgres/postgres.dart";
void main() async{
  var connection = PostgreSQLConnection(
        "localhost", 5432, "test",
        username: "something", password: "notTellingYou");
    try {
      await connection.open();
    } catch (e) {
      print(e);
    }

  Map<String, dynamic> data = {
    "display_name": "foo",
    "email": "foo@gmail.com"
  };
  await setData(connection, "users", data);
  
}

Future<void> setData(PostgreSQLConnection connection, String table, Map<String, dynamic> data) async {
  await connection.query("""
    INSERT INTO $table(${data.keys})
    VALUES ${data.values};
  """);
}

问题是我遇到了一个例外

(PostgreSQLSeverity.error 42601:在“display_name”处或附近出现语法错误)

共有1个答案

章鸿光
2023-03-14

尝试使用变量替换:

import "dart:io";
import "package:postgres/postgres.dart";

Future<void> main() async {
  final connection = PostgreSQLConnection("localhost", 5432, "test",
      username: "something", password: "notTellingYou");
  await connection.open();

  final data = <String, dynamic>{
    "display_name": "foo",
    "email": "foo@gmail.com"
  };
  await setData(connection, "users", data);
  await connection.close();
}

Future<void> setData(PostgreSQLConnection connection, String table,
    Map<String, dynamic> data) async {
  await connection.execute(
      'INSERT INTO $table (${data.keys.join(', ')}) VALUES (${data.keys.map((k) => '@$k').join(', ')})',
      substitutionValues: data);
}

这里生成的文本将是:“插入用户(显示名称,电子邮件)值(@display\u名称,电子邮件)”,每个变量(以@开头)将自动替换为地图中每个键的值。

这也将确保值中特殊字符的正确转义。

 类似资料:
  • 问题内容: 我使用Google Maps API制作了一个非常简单的页面,其中有几个字段,用户将在其中放置一些数据。看起来像- http://aiworker2.usask.ca/marker_field_db.html 我要做的是使用javascript / Ajax将数据存储到MySQL数据库中。我发现了几个使用Jquery的示例。我是这个javascript / Ajax / Jquery平

  • 本文向大家介绍Android 将数据插入数据库,包括了Android 将数据插入数据库的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 我有Cassandra数据库,可以通过Apache Spark使用SparkSQL从该数据库分析数据。现在我想将那些分析过的数据插入PostgreSQL中。除了使用PostgreSQL驱动程序之外,是否有其他方法可以直接实现此目的(我想通过postREST和Driver实现它,我想知道是否有类似的方法)? 问题答案: 目前,尚无将RDD写入任何DBMS的本地实现。这里是Spark用户列

  • 我正在尝试从我创建的一个简单的联系人表单中插入数据。我正在使用phpMyAdmin 下面是PHP(出于安全考虑,我删除了define语句,但我可以毫无问题地建立到数据库的链接。) 当有人点击论坛上的submit按钮后,代码就会运行,据我所知,这是正常工作的。 该错误发生在php代码的末尾。正在输出“SLQ Insert Statement FAILD”,但未发布mysql错误。 我的数据库/表的设

  • 事情是这样的 我不知道发生了什么,如果有人能帮忙,我会非常感激的。THX!