使用C#中的计数器更新Cassandra

时间:2016-10-13 14:45:37

标签: c# cassandra

我想增加使用带计数器的表。所以我得到了下表:

  

create table counterInt(MeterID int,DayStamp timestamp,NumberOfValues counter,Value1 counter,Value2 counter,qualityScore counter,PRIMARY KEY((MeterID),DayStamp))

我还有一个对象列表,我填写对象列表并迭代它

 public void insertBasic(List<CSVMeter> meterList)
    {
        try
        {
            Connect();
            var statement = session.Prepare("Update counterInt SET NumberOfValues = NumberOfValues + ?, Value1 = Value1 + ?, Value2 = Value2 + ?, QualityScore = QualityScore + ?, ID, DayStamp, ) VALUES (?,?,?,?,?,?)");
            var tasks = new List<Task>();
            foreach (CSVMeter meter in meterList)
            {
                var bind = statement.Bind( meter.NumberOfValues, meter.Value, meter.Value2, meter.qualityScore, meter.MeterID, meter.PeriodStart);
                var resultSetFuture = session.ExecuteAsync(bind);
                tasks.Add(resultSetFuture);
            }
            Task.WaitAll(tasks.ToArray());
            CloseConnection();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

这是我在C#中的对象

    public CSVMeter(int meterID, DateTime periodStart, double value, double value2, int numberOfValues, double qualityScore)
    {//getters setters that kind of stuff nothing weird}

为什么我会收到以下错误,如何解决?另外,我可以使用这个例子中准备好的语句吗?

  

counterTest.exe中出现未处理的“Cassandra.SyntaxError”类型异常   补充信息:第1:136行输入','(= = QualityScore + ?, ID [,] ...)

另外一个问题:是否可以用双精度而不是整数增量?

1 个答案:

答案 0 :(得分:1)

正如错误消息告诉您:cql命令中存在语法错误。

对于UPDATE命令,您应该使用WHERE子句,不应使用VALUE子句。

仔细观察您的查询,看起来您合并了INSERTUPDATE命令。