in src/Apache.IoTDB.Data/IoTDBCommand.cs [350:418]
private RowRecord BindParamters(IoTDBParameterCollection pms)
{
var measures = new List<string>();
var values = new List<object> ();
for (int i = 0; i < pms.Count; i++)
{
var tp = pms[i];
measures.Add(tp.ParameterName);
// _commandText = _commandText.Replace(tp.ParameterName, "?");
switch (TypeInfo.GetTypeCode(tp.Value?.GetType()))
{
case TypeCode.Boolean:
values.Add ((tp.Value as bool?).GetValueOrDefault());
break;
case TypeCode.Char:
values.Add(tp.Value as string);
break;
case TypeCode.Byte:
case TypeCode.SByte:
values.Add((tp.Value as byte?).GetValueOrDefault());
break;
case TypeCode.DateTime:
var t0 = tp.Value as DateTime?;
if (!t0.HasValue)
{
throw new ArgumentException($"InvalidArgumentOfDateTime{tp.Value}");
}
values.Add(t0.GetValueOrDefault());
break;
case TypeCode.DBNull:
break;
case TypeCode.Single:
values.Add((tp.Value as float?).GetValueOrDefault());
break;
case TypeCode.Decimal:
case TypeCode.Double:
values.Add((tp.Value as double?).GetValueOrDefault());
break;
case TypeCode.Int16:
values.Add((tp.Value as short?).GetValueOrDefault());
break;
case TypeCode.Int32:
values.Add((tp.Value as int?).GetValueOrDefault());
break;
case TypeCode.Int64:
values.Add((tp.Value as long?).GetValueOrDefault());
break;
case TypeCode.UInt16:
values.Add((tp.Value as short?).GetValueOrDefault());
break;
case TypeCode.UInt32:
values.Add((tp.Value as uint?).GetValueOrDefault());
break;
case TypeCode.UInt64:
values.Add((tp.Value as ulong?).GetValueOrDefault());
break;
case TypeCode.String:
default:
values.Add(tp.Value as string);
break;
}
}
return new RowRecord(DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),values,measures);
}