2014-10-31 63 views
1

我是Cassandra的新手,嘗試在C#中編寫用於插入和刪除的程序。 我想知道是否有一種方法可以使用變量而不是插入命令中的值? 當我嘗試以下方法:在Cassandra中插入時使用變量

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

出現的錯誤:類型的第一個機會異常「Cassandra.SyntaxError」發生在Cassandra.dll

回答

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(或字符串連接)一個定製列表語句並執行它。 Cassandra/CQL也可能受到injection-based attacks的約束,所以您應該始終使用準備好的語句並將變量綁定到它。另外,如果你有一個聲明你要運行多次(例如:在一個循環中),你可以通過在循環之前準備好它並在其中進行綁定/執行來獲得更好的性能。