在Cassandra中插入时使用变量

时间:2014-10-31 18:41:01

标签: cassandra

我是Cassandra的新手并试图在C#中编写一个用于插入和删除的程序。 我想知道是否有一种方法可以在insert命令中使用变量而不是值? 当我尝试以下内容时:

string s1="A";
string s2="B";
session.Execute("insert into users (lastname, firstname) values (s1,s2)");

发生错误:类型' Cassandra.SyntaxError'的第一次偶然异常。发生在Cassandra.dll

2 个答案:

答案 0 :(得分:4)

假设您使用的是DataStax CQL3 C#驱动程序,最好的方法是使用预准备语句。设置完成后,绑定变量和Execute,如下所示:

string strCQL = "INSERT INTO users (lastname, firstname) VALUES (?,?)";
string s1 = "A";
string s2 = "B";

PreparedStatement preparedStatement = session.Prepare(strCQL);
BoundStatement boundStatement = preparedStatement.Bind(s1,s2);
session.Execute(boundStatement);

请不要使用string.Format(或字符串连接)构建CQL语句并执行它。 Cassandra / CQL也可以使用injection-based attacks,因此您应该始终使用预准备语句并将变量绑定到它。此外,如果你有一个声明要运行多次(例如:在一个循环中),你可以通过在循环之前准备它,并在其中绑定/执行来获得更好的性能。

答案 1 :(得分:0)