簡體   English   中英

如何在Cassandra C ++ DataStax中綁定十進制類型

[英]How to bind decimal type in Cassandra C++ DataStax

我正在使用DataStax Cassandra驅動程序,試圖將程序行插入cassandra表中。 如果表是十進制類型,則為列之一。 我的查詢是

插入表格(id,價格)值(?,?)

我准備語句cass_session_prepare,然后將cass_statement_bind_int32_by_name綁定為ID。

當我嘗試綁定十進制時,問題開始。 該方法的原型是

  CassError cass_statement_bind_decimal ( statement, index, varint, varint_size, scale )

其中varint是指向字節的指針,varint_size字節數,而scale是小數位數。

所以,最后我的問題是如何計算應該傳遞給該方法的字節數組的內容? 首先,我天真地認為,如果我僅傳遞數字的字符表示形式(“ 1234.56”),它將起作用。 但是我當然不工作。 現在,我了解到我應該傳遞的字節數組在Java中稱為BigInteger。 但是我不知道如何將字符串或雙精度數轉換為這個BigInteger數組。 我認為Cassandra驅動程序API不能提供任何可以幫助我進行此轉換的東西。 因此,如果有人可以幫助我解決這個問題,我將不勝感激

您可以利用許多庫來執行轉換:

如果您研究DataStax C / C ++驅動程序的集成測試,您會發現使用OpenSSL BIGNUM庫的基本BigNumber實現 此實現不執行算術運算,但可以讓您輕松地將字節數組(帶比例)轉換為BigNumber以進行比較和顯示。

注意:已知OpenSSL BIGNUM實現比許多其他庫慢。 在使用GMP庫的DataStax PHP驅動程序GitHub存儲庫中可以找到更完整的實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM