无法使用 C 驱动程序为 Cassandra 连接到密钥空间
Not able to connect to a keyspace using C driver for Cassandra
我有以下代码用于插入 Cassandra 的简单查询。我在这里尝试使用准备好的语句,因为常规语句无法在 table time_demo
.
的时间戳列中插入时间戳
CassFuture* connect_future = NULL;
CassCluster* cluster = cass_cluster_new();
CassSession* session = cass_session_new();
char* hosts = "127.0.0.1";
time_t rt= time(NULL);
struct tm * timeinfo;
timeinfo = localtime ( &rt );
char lt[20];
strftime(lt, sizeof(lt), "%Y-%m-%d %T", timeinfo);
/* Add contact points */
cass_cluster_set_contact_points(cluster, hosts);
/* Provide the cluster object as configuration to connect the session with a specified keyspace*/
connect_future = cass_session_connect_keyspace(session, cluster,"test_keyspace");
//After this line program exits
CassFuture* prepare_future
= cass_session_prepare(session, "INSERT INTO time_demo(id,time) VALUES(now(),?);");
在最后一行之后我的程序突然结束了。我想连接到键空间 test_keyspace
,同时还使用准备好的语句。我猜该程序因此而终止,因为我没有为它正确编写代码。
任何人都可以指出我在这里犯的错误吗?我正在为 C 使用 Cassandra 2.13 驱动程序。
您需要等到连接建立 - 最简单的方法是使用类似的东西:
CassError rc = cass_future_error_code(connect_future);
从驱动程序那里得到 OK 后,您可以开始准备查询,但您还需要等待准备结果,也许 cass_future_error_code
也可以,或者其他方式。
否则,您将触发 2 个异步操作并且不等待结果,您的程序将完成 - C/C++ 驱动程序在设计上是异步的。请参阅描述如何正确使用它的 Getting Started 文档。
我有以下代码用于插入 Cassandra 的简单查询。我在这里尝试使用准备好的语句,因为常规语句无法在 table time_demo
.
CassFuture* connect_future = NULL;
CassCluster* cluster = cass_cluster_new();
CassSession* session = cass_session_new();
char* hosts = "127.0.0.1";
time_t rt= time(NULL);
struct tm * timeinfo;
timeinfo = localtime ( &rt );
char lt[20];
strftime(lt, sizeof(lt), "%Y-%m-%d %T", timeinfo);
/* Add contact points */
cass_cluster_set_contact_points(cluster, hosts);
/* Provide the cluster object as configuration to connect the session with a specified keyspace*/
connect_future = cass_session_connect_keyspace(session, cluster,"test_keyspace");
//After this line program exits
CassFuture* prepare_future
= cass_session_prepare(session, "INSERT INTO time_demo(id,time) VALUES(now(),?);");
在最后一行之后我的程序突然结束了。我想连接到键空间 test_keyspace
,同时还使用准备好的语句。我猜该程序因此而终止,因为我没有为它正确编写代码。
任何人都可以指出我在这里犯的错误吗?我正在为 C 使用 Cassandra 2.13 驱动程序。
您需要等到连接建立 - 最简单的方法是使用类似的东西:
CassError rc = cass_future_error_code(connect_future);
从驱动程序那里得到 OK 后,您可以开始准备查询,但您还需要等待准备结果,也许 cass_future_error_code
也可以,或者其他方式。
否则,您将触发 2 个异步操作并且不等待结果,您的程序将完成 - C/C++ 驱动程序在设计上是异步的。请参阅描述如何正确使用它的 Getting Started 文档。