Клиент Cassandra C# Datastax вставляет большой двоичный объект

привет, интересно, есть ли более элегантный способ вставки большого двоичного объекта вместо преобразования массива байтов в строку, например:

string strblob = "0x00" + BitConverter.ToString(stream2.GetBuffer()).Replace("-", "");

ISession session = cluster.Connect("abc");

session.Execute(string.Format("insert into events(blob) values ({0})", blobStr));

person Community    schedule 26.10.2015    source источник
comment
Насколько мне известно, преобразование двоичных данных в формат шестнадцатеричной строки и добавление префикса 0x — единственный способ загрузить двоичные данные в Cassandra с помощью Datastax.   -  person Alex    schedule 26.10.2015
comment
спасибо Жако. кажется много траты памяти... /:   -  person    schedule 26.10.2015
comment
также при получении данных нужно снимать 0x... //:   -  person    schedule 26.10.2015
comment
Аналогичный вопрос, который также может вам помочь: stackoverflow.com/questions/32072373/   -  person Aaron    schedule 26.10.2015


Ответы (1)


Существует более элегантное и более эффективное решение — использовать связанный оператор.

byte[] blob = stream2.GetBuffer();
ISession session = cluster.Connect("abc");

PreparedStatement preparedStatement = session.Prepare("INSERT INTO events(blob) VALUES (?)");
BoundStatement boundStatement = preparedStatement.Bind(blob);

session.Execute(boundStatement);

Идея PreparedStatement состоит в том, чтобы один раз проанализировать строковый запрос и повторно использовать его столько раз, сколько вам нужно, с разными значениями. Так что следите за своими подготовленными заявлениями.

person Adpi2    schedule 26.10.2015