From 16c0e12eb8283b461a80ac6d0bc07c1e16029a45 Mon Sep 17 00:00:00 2001 From: pigwing Date: Wed, 26 May 2021 15:11:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=97=A0=E7=AC=A6=E5=8F=B7?= =?UTF-8?q?=E6=95=B0,=E5=B9=B6=E4=BF=AE=E6=AD=A3demo=E5=87=BA=E7=8E=B0?= =?UTF-8?q?=E7=9A=84=E5=BC=82=E5=B8=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Example/Program.cs | 7 +-- .../Driver/TDengineDriver.cs | 16 ++++++- src/Maikebing.Data.Taos/TaosCommand.cs | 2 +- src/Maikebing.Data.Taos/TaosDataReader.cs | 44 +++++++++++++++++++ 4 files changed, 64 insertions(+), 5 deletions(-) diff --git a/src/Example/Program.cs b/src/Example/Program.cs index c74bd2a..eddbcab 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 6e3d866..fa6959d 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 9d01897..699364a 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 21fc802..dc07756 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; -- Gitee