无法使用cassandra的c驱动程序连接到键空间

wvyml7n5  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(357)

我有下面的代码,用于一个简单的插入cassandra的查询。我在这里尝试使用prepared语句,因为常规语句不能在表的timestamp列中插入时间戳 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 同时也要使用事先准备好的语句。我猜程序会因此而终止,因为我没有为它正确地编写代码。
谁能指出我在这里犯的错误吗?我使用Cassandra2.13驱动程序的c。

jaql4c8m

jaql4c8m1#

您需要等到连接被设置完毕—最简单的方法是使用以下内容:

CassError rc = cass_future_error_code(connect_future);

在驱动程序确定之后,您可以开始准备查询,但是您还需要等待准备的结果,可能是使用 cass_future_error_code 或者其他方式。
否则,启动2个异步操作,不等待结果,程序就完成了—c/c++驱动程序在设计上是异步的。请参阅说明如何正确使用的入门文档。

相关问题