1
C++でneo4j_clientの使用例を探しています。 test suiteにはneo4j_result_tがありますが、名前でフィールドを繰り返したり呼び出したりする例はありません。それは可能ですか?C++でneo4j_clientの結果を反復する
C++でneo4j_clientの使用例を探しています。 test suiteにはneo4j_result_tがありますが、名前でフィールドを繰り返したり呼び出したりする例はありません。それは可能ですか?C++でneo4j_clientの結果を反復する
結果は、結果行のストリームを表すneo4j_result_stream_t
として返されます。結果の列の数はneo4j_nfields
で、neo4j_fieldname
での名前はneo4j_result_stream_t
ポインタをパラメータとして取ります。
結果の行を反復処理するには、neo4j_fetch_next
を使用してneo4j_result_t
を返します。行(フィールド)から各列の値を抽出するには、ポインタをneo4j_result_field
(列のインデックスとともに)に渡します。
の例では、このようなものになるだろう:
neo4j_result_stream_t *results =
neo4j_run(session, "MATCH (n) RETURN n.name, n.age", neo4j_null);
if (results == NULL)
{
neo4j_perror(stderr, errno, "Failed to run statement");
return EXIT_FAILURE;
}
int ncolumns = neo4j_nfields(results);
if (ncolumns < 0)
{
neo4j_perror(stderr, errno, "Failed to retrieve results");
return EXIT_FAILURE;
}
neo4j_result_t *result;
while ((result = neo4j_fetch_next(results)) != NULL)
{
unsigned int i;
for (i = 0; i < ncolumns; ++i)
{
if (i > 0)
{
printf(", ");
}
neo4j_value_t value = neo4j_result_field(result, i);
neo4j_fprint(value, stdout);
}
printf("\n");
}
多くのおかげで、フォローアップ:あなたは名前でフィールドを呼び出すことができますか? 'neo4j_result_field(result、" age ")'のように?それほど知的ではありません:私は年をどのようにして「int」として戻しますか?私はあなたの 'string'の例を見ました。 –
残念ながら。 [Bolt Protocol](http://boltprotocol.org)は、結果の各列に一意の名前が付いていることを保証していないので、あいまいな結果が返される可能性があります。 –
これは、私がチェックして、Neo4jは重複した列名を返すCypherコマンドの実行を拒否します。実際にはこれに遭遇する可能性は低いので、おそらくラッパー関数をかなり安全に作成することができます。 –