【问题标题】:How to Pass String parameter to cypher query如何将字符串参数传递给密码查询
【发布时间】:2019-01-29 17:08:01
【问题描述】:

我想将一个字符串参数传递给我的密码查询。但我得到了错误。 例如

 String ner="Jon";
  String ADD_MEMBER_QUERY = "CREATE (a:person{ name: $ner }) RETURN a.name";
        session.run(ADD_MEMBER_QUERY);

我遇到错误

org.neo4j.driver.v1.exceptions.ClientException: Expected parameter(s): ner

【问题讨论】:

  • 你遇到了什么错误?
  • org.neo4j.driver.v1.exceptions.ClientException:预期参数:ner
  • Expected parameter(s): ner 表示您必须传递名称为ner 的参数。不是吗?
  • @Ruslan 是的,很明显。问题是如何做到这一点。
  • 我已经传递了参数ner。这是语法问题。

标签: java neo4j cypher


【解决方案1】:

run() 方法调用可以在 String 查询本身之后接受查询参数的附加参数,这可以是 Map<String, Object>RecordValue 对象。

参见接口StatementRunner,它同时被Session和Transaction扩展。

还值得查看驱动程序文档的sessions and transactions section 以获取示例和最佳实践。

【讨论】:

    【解决方案2】:

    调用run()方法时可以添加参数:

    String ner="Jon";
    String ADD_MEMBER_QUERY = "CREATE (a:person{ name: $ner }) RETURN a.name";
    session.run(ADD_MEMBER_QUERY, Values.parameters("ner", ner));
    

    Map<String, Object> parameters = new HashMap<String, Object>();
    parameters.put("ner", "Jon");
    
    String ADD_MEMBER_QUERY = "CREATE (a:person{ name: $ner }) RETURN a.name";
    session.run(ADD_MEMBER_QUERY, parameters);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      相关资源
      最近更新 更多