Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cassandra c datastax客户端插入blob_Cassandra_Cassandra 2.0_Datastax_Datastax Enterprise_Cassandra Cli - Fatal编程技术网

cassandra c datastax客户端插入blob

cassandra c datastax客户端插入blob,cassandra,cassandra-2.0,datastax,datastax-enterprise,cassandra-cli,Cassandra,Cassandra 2.0,Datastax,Datastax Enterprise,Cassandra Cli,您好,我想知道是否有一种更优雅的方法插入blob,而不是将字节数组转换为字符串: string strblob = "0x00" + BitConverter.ToString(stream2.GetBuffer()).Replace("-", ""); ISession session = cluster.Connect("abc"); session.Execute(string.Format("insert into events(blob) values ({0})", blobSt

您好,我想知道是否有一种更优雅的方法插入blob,而不是将字节数组转换为字符串:

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

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

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

有一种更优雅、更有效的解决方案,那就是使用绑定语句

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背后的思想是对字符串查询进行一次解析,并使用不同的值尽可能多地重用它。因此,请跟踪您准备的语句。

据我所知,将二进制数据转换为十六进制字符串格式并加上前缀0x是使用Datastax将二进制数据加载到Cassandra的唯一方法。谢谢Jaco。似乎有很多内存浪费…/:此外,在检索数据时,还需要提取0x…/:类似的问题也可能对您有所帮助: