diff --git a/src/Example/Program.cs b/src/Example/Program.cs index c74bd2ade489dd7948e9f05db928306fe06a63d2..eddbcab796a7f7b014c8b3dfabc505a1b5174c14 100644 --- a/src/Example/Program.cs +++ b/src/Example/Program.cs @@ -72,7 +72,7 @@ static void Main(string[] args) connection.CreateCommand("DROP DATABASE IF EXISTS IoTSharp").ExecuteNonQuery(); connection.CreateCommand("CREATE DATABASE IoTSharp KEEP 365 DAYS 10 BLOCKS 4;").ExecuteNonQuery(); connection.ChangeDatabase("IoTSharp"); - connection.CreateCommand("CREATE TABLE IF NOT EXISTS telemetrydata (ts timestamp,value_type tinyint, value_boolean bool, value_string binary(10240), value_long bigint,value_datetime timestamp,value_double double) TAGS (deviceid binary(32),keyname binary(64));").ExecuteNonQuery(); + connection.CreateCommand("CREATE STABLE IF NOT EXISTS telemetrydata (ts timestamp,value_type tinyint, value_boolean bool, value_string binary(10240), value_long bigint,value_datetime timestamp,value_double double) TAGS (deviceid binary(32),keyname binary(64));").ExecuteNonQuery(); //connection.CreateCommand($"CREATE TABLE dev_Thermometer USING telemetrydata TAGS (\"Temperature\")").ExecuteNonQuery(); var devid = $"{Guid.NewGuid():N}"; UploadTelemetryData(connection, devid, "Temperature", 999); @@ -82,7 +82,8 @@ static void Main(string[] args) UploadTelemetryData(connection, devid2, "Humidity", 666); var reader2 = connection.CreateCommand("select last_row(*) from telemetrydata group by deviceid,keyname ;").ExecuteReader(); ConsoleTableBuilder.From(reader2.ToDataTable()).WithFormat(ConsoleTableBuilderFormat.Default).ExportAndWriteLine(); - + + Console.WriteLine("DROP DATABASE IoTSharp", database, connection.CreateCommand($"DROP DATABASE IoTSharp;").ExecuteNonQuery()); connection.Close(); @@ -121,7 +122,7 @@ static void UploadTelemetryData( TaosConnection connection, string devid, strin { for (int i = 0; i < count; i++) { - connection.CreateCommand($"INSERT INTO device_{devid}_{keyname} USING telemetrydata TAGS(\"{devid}\",\"{keyname}\") (ts,value_type,value_long) values (now,2,{i});").ExecuteNonQuery(); + connection.CreateCommand($"INSERT INTO device_{devid}_{keyname} USING telemetrydata TAGS(\"{devid}\",\"{keyname}\") values (now,2,true,'{i}',{i},now,{i});").ExecuteNonQuery(); } } } diff --git a/src/Maikebing.Data.Taos/Driver/TDengineDriver.cs b/src/Maikebing.Data.Taos/Driver/TDengineDriver.cs index 6e3d866f378a57781bd79f81487fcb938b50df49..fa6959d58fb79d1de7e51008bc0fa9172750a113 100644 --- a/src/Maikebing.Data.Taos/Driver/TDengineDriver.cs +++ b/src/Maikebing.Data.Taos/Driver/TDengineDriver.cs @@ -380,7 +380,11 @@ internal enum TDengineDataType TSDB_DATA_TYPE_DOUBLE = 7, TSDB_DATA_TYPE_BINARY = 8, TSDB_DATA_TYPE_TIMESTAMP = 9, - TSDB_DATA_TYPE_NCHAR = 10 + TSDB_DATA_TYPE_NCHAR = 10, + TSDB_DATA_TYPE_UTINYINT = 11, + TSDB_DATA_TYPE_USMALLINT = 12, + TSDB_DATA_TYPE_UINT = 13, + TSDB_DATA_TYPE_UBIGINT = 14 } public enum TSDB_TIME_PRECISION : int { @@ -411,17 +415,27 @@ public string TypeName() return "BOOLEAN"; case TDengineDataType.TSDB_DATA_TYPE_TINYINT: + case TDengineDataType.TSDB_DATA_TYPE_UTINYINT: return "BYTE"; case TDengineDataType.TSDB_DATA_TYPE_SMALLINT: return "SHORT"; + case TDengineDataType.TSDB_DATA_TYPE_USMALLINT: + return "USHORT"; + case TDengineDataType.TSDB_DATA_TYPE_INT: return "INT"; + case TDengineDataType.TSDB_DATA_TYPE_UINT: + return "UINT"; + case TDengineDataType.TSDB_DATA_TYPE_BIGINT: return "LONG"; + case TDengineDataType.TSDB_DATA_TYPE_UBIGINT: + return "ULONG"; + case TDengineDataType.TSDB_DATA_TYPE_FLOAT: return "FLOAT"; diff --git a/src/Maikebing.Data.Taos/TaosCommand.cs b/src/Maikebing.Data.Taos/TaosCommand.cs index 9d01897ff4b489962fa72576e559f710cc642ce1..699364ad0a2f43c99f6b507a0b861888f9e9d8c8 100644 --- a/src/Maikebing.Data.Taos/TaosCommand.cs +++ b/src/Maikebing.Data.Taos/TaosCommand.cs @@ -298,7 +298,7 @@ public override void Prepare() Debug.WriteLine($"_commandText:{_commandText}"); #endif var _endcommandtext = _commandText; - if ( _parameters.IsValueCreated && _commandText?.ToLower().TrimStart().StartsWith("insert")==true) + if ( _parameters.IsValueCreated /*&& _commandText?.ToLower().TrimStart().StartsWith("insert")==true*/) { var pms = _parameters.Value; for (int i = 0; i < pms.Count; i++) diff --git a/src/Maikebing.Data.Taos/TaosDataReader.cs b/src/Maikebing.Data.Taos/TaosDataReader.cs index 21fc802277b4d8bbeccf1a3a97a28ca2380d0533..dc07756fc90b6c5d70cbd345cfc6ad65adf0e274 100644 --- a/src/Maikebing.Data.Taos/TaosDataReader.cs +++ b/src/Maikebing.Data.Taos/TaosDataReader.cs @@ -207,17 +207,27 @@ public override Type GetFieldType(int ordinal) type = typeof(bool); break; case TDengineDataType.TSDB_DATA_TYPE_TINYINT: + case TDengineDataType.TSDB_DATA_TYPE_UTINYINT: type = typeof(byte); break; case TDengineDataType.TSDB_DATA_TYPE_SMALLINT: type = typeof(short); break; + case TDengineDataType.TSDB_DATA_TYPE_USMALLINT: + type = typeof(ushort); + break; case TDengineDataType.TSDB_DATA_TYPE_INT: type = typeof(int); break; + case TDengineDataType.TSDB_DATA_TYPE_UINT: + type = typeof(uint); + break; case TDengineDataType.TSDB_DATA_TYPE_BIGINT: type = typeof(long); break; + case TDengineDataType.TSDB_DATA_TYPE_UBIGINT: + type = typeof(ulong); + break; case TDengineDataType.TSDB_DATA_TYPE_FLOAT: type = typeof(float); break; @@ -341,6 +351,13 @@ public virtual TimeSpan GetTimeSpan(int ordinal) /// The value of the column. public override short GetInt16(int ordinal) => (short)GetValue(ordinal); + /// + /// Gets the value of the specified column as a . + /// + /// The zero-based column ordinal. + /// The value of the column. + public ushort GetUInt16(int ordinal) => (ushort)GetValue(ordinal); + /// /// Gets the value of the specified column as a . /// @@ -348,6 +365,13 @@ public virtual TimeSpan GetTimeSpan(int ordinal) /// The value of the column. public override int GetInt32(int ordinal) => (int)GetValue(ordinal); + /// + /// Gets the value of the specified column as a . + /// + /// The zero-based column ordinal. + /// The value of the column. + public uint GetUInt32(int ordinal) => (uint)GetValue(ordinal); + /// /// Gets the value of the specified column as a . /// @@ -355,6 +379,13 @@ public virtual TimeSpan GetTimeSpan(int ordinal) /// The value of the column. public override long GetInt64(int ordinal) => (long)GetValue(ordinal); + /// + /// Gets the value of the specified column as a . + /// + /// The zero-based column ordinal. + /// The value of the column. + public ulong GetUInt64(int ordinal) => (ulong)GetValue(ordinal); + /// /// Gets the value of the specified column as a . /// @@ -504,6 +535,7 @@ public override object GetValue(int ordinal) result = v1; break; case TDengineDataType.TSDB_DATA_TYPE_TINYINT: + case TDengineDataType.TSDB_DATA_TYPE_UTINYINT: byte v2 = Marshal.ReadByte(data); result = v2; break; @@ -511,14 +543,26 @@ public override object GetValue(int ordinal) short v3 = Marshal.ReadInt16(data); result = v3; break; + case TDengineDataType.TSDB_DATA_TYPE_USMALLINT: + ushort v12 = (ushort)Marshal.ReadInt16(data); + result = v12; + break; case TDengineDataType.TSDB_DATA_TYPE_INT: int v4 = Marshal.ReadInt32(data); result = v4; break; + case TDengineDataType.TSDB_DATA_TYPE_UINT: + uint v13 = (uint)Marshal.ReadInt32(data); + result = v13; + break; case TDengineDataType.TSDB_DATA_TYPE_BIGINT: long v5 = Marshal.ReadInt64(data); result = v5; break; + case TDengineDataType.TSDB_DATA_TYPE_UBIGINT: + ulong v14 = (ulong)Marshal.ReadInt64(data); + result = v14; + break; case TDengineDataType.TSDB_DATA_TYPE_FLOAT: float v6 = (float)Marshal.PtrToStructure(data, typeof(float)); result = v6;