【问题标题】:Cassandra update with counters in C#Cassandra 使用 C# 中的计数器进行更新
【发布时间】:2016-10-13 22:55:42
【问题描述】:

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

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[,]...) 处没有可行的替代方案

还有一个问题:是否可以用双精度而不是整数来增加?

【问题讨论】:

    标签: c# cassandra


    【解决方案1】:

    正如错误消息告诉你的那样:你的 cql 命令中有语法错误。

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

    仔细观察您的查询,您似乎合并了 INSERTUPDATE 命令。

    【讨论】:

      猜你喜欢
      • 2015-11-09
      • 2015-06-17
      • 1970-01-01
      • 2014-09-14
      • 1970-01-01
      • 1970-01-01
      • 2015-01-09
      • 2017-10-12
      • 2015-10-28
      相关资源
      最近更新 更多