cassandra c datastax客户端插入blob
您好,我想知道是否有一种更优雅的方法插入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
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…/:类似的问题也可能对您有所帮助: