我是Cassandra专柜的新手。所以我创建了一个测试环境。 我可以成功插入数据库,但是当我尝试从数据库中选择时,我收到以下错误:
Cassandra.dll中发生了未处理的“System.InvalidCastException”类型异常 附加信息:指定的演员表无效。
我有以下数据库:
create table counterInt (
MeterID int,
DayStamp timestamp,
NumberOfValues counter,
Value1 counter,
PRIMARY KEY ((MeterID), Daystamp));
这是我的选择方法:
编辑:当它到达row.GetValue<double>("value1");
时发生错误
主键被选中。
public List<CSVMeter> selectBasic()
{
Connect();
var resultList = new List<CSVMeter>();
RowSet result = session.Execute("select * FROM counterInt");
foreach (Row row in result.GetRows())
{
CSVMeter csvMeter = new CSVMeter();
csvMeter.MeterID = row.GetValue<int>("meterid");
csvMeter.PeriodStart = row.GetValue<DateTime>("daystamp");
csvMeter.Value = row.GetValue<double>("value1");
csvMeter.NumberOfValues = row.GetValue<double>("numberofvalues");
resultList.Add(csvMeter);
}
CloseConnection();
return resultList;
}
我的对象:
public int MeterID { get; set; }
public DateTime PeriodStart { get; set; }
public double Value { get; set; }
public double Value2 { get; set; }
public CSVMeter(int meterID, DateTime periodStart, double value, double numberOfValues)
{
this.MeterID = meterID;
this.PeriodStart = periodStart;
this.Value = value;
this.Value2 = value2;
this.NumberOfValues = numberOfValues;
this.qualityScore = qualityScore;
}
counterInt
表中有值。我做错了吗?
答案 0 :(得分:3)
Specified cast is not valid
问题当然是因为您使用的是double
类型,它是十进制类型,但计数器是整数,不能转换为十进制。你当然应该使用long
。
答案 1 :(得分:3)
计数器列值是64位有符号整数
您正在将其检索为double
。你应该使用long来代替:
csvMeter.Value = row.GetValue<long>("value1");