2022-09-05 09:50:06 +00:00
|
|
|
using System;
|
2024-11-19 02:35:32 +00:00
|
|
|
using System.Text;
|
|
|
|
|
using TDengine.Driver;
|
|
|
|
|
using TDengine.Driver.Client;
|
2022-09-02 10:51:12 +00:00
|
|
|
|
|
|
|
|
namespace Cloud.Examples
|
|
|
|
|
{
|
|
|
|
|
public class STMTExample
|
|
|
|
|
{
|
|
|
|
|
static void Main(string[] args)
|
|
|
|
|
{
|
2024-11-19 02:35:32 +00:00
|
|
|
var numOfSubTable = 10;
|
|
|
|
|
var numOfRow = 10;
|
|
|
|
|
var random = new Random();
|
2024-11-20 06:36:55 +00:00
|
|
|
var cloudEndPoint = Environment.GetEnvironmentVariable("TDENGINE_CLOUD_ENDPOINT");
|
|
|
|
|
var cloudToken = Environment.GetEnvironmentVariable("TDENGINE_CLOUD_TOKEN");
|
2024-11-20 03:30:25 +00:00
|
|
|
var connectionString = $"protocol=WebSocket;host={cloudEndPoint};port=443;useSSL=true;token={cloudToken};";
|
2024-11-19 02:35:32 +00:00
|
|
|
// Connect to TDengine server using WebSocket
|
2024-11-20 03:30:25 +00:00
|
|
|
var builder = new ConnectionStringBuilder(connectionString);
|
|
|
|
|
|
2024-11-19 02:35:32 +00:00
|
|
|
try
|
2022-09-02 10:51:12 +00:00
|
|
|
{
|
2024-11-19 02:35:32 +00:00
|
|
|
// Open connection with using block, it will close the connection automatically
|
|
|
|
|
using (var client = DbDriver.Open(builder))
|
|
|
|
|
{
|
|
|
|
|
// use database
|
|
|
|
|
client.Exec("USE test");
|
|
|
|
|
// assume table has been created.
|
|
|
|
|
using (var stmt = client.StmtInit())
|
|
|
|
|
{
|
|
|
|
|
String sql = "INSERT INTO ? USING meters TAGS(?,?) VALUES (?,?,?,?)";
|
|
|
|
|
stmt.Prepare(sql);
|
|
|
|
|
for (int i = 1; i <= numOfSubTable; i++)
|
|
|
|
|
{
|
|
|
|
|
var tableName = $"d_bind_{i}";
|
|
|
|
|
// set table name
|
|
|
|
|
stmt.SetTableName(tableName);
|
|
|
|
|
// set tags
|
|
|
|
|
stmt.SetTags(new object[] { i, $"location_{i}" });
|
|
|
|
|
var current = DateTime.Now;
|
|
|
|
|
// bind rows
|
|
|
|
|
for (int j = 0; j < numOfRow; j++)
|
|
|
|
|
{
|
|
|
|
|
stmt.BindRow(new object[]
|
|
|
|
|
{
|
|
|
|
|
current.Add(TimeSpan.FromMilliseconds(j)),
|
|
|
|
|
random.NextSingle() * 30,
|
|
|
|
|
random.Next(300),
|
|
|
|
|
random.NextSingle()
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
// add batch
|
|
|
|
|
stmt.AddBatch();
|
|
|
|
|
// execute
|
|
|
|
|
stmt.Exec();
|
|
|
|
|
// get affected rows
|
|
|
|
|
var affectedRows = stmt.Affected();
|
|
|
|
|
Console.WriteLine($"Successfully inserted {affectedRows} rows to {tableName}.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-09-02 10:51:12 +00:00
|
|
|
}
|
2024-11-19 02:35:32 +00:00
|
|
|
catch (TDengineError e)
|
2022-09-02 10:51:12 +00:00
|
|
|
{
|
2024-11-19 02:35:32 +00:00
|
|
|
// handle TDengine error
|
|
|
|
|
Console.WriteLine("Failed to insert to table meters using stmt, ErrCode: " + e.Code + ", ErrMessage: " + e.Error);
|
|
|
|
|
throw;
|
2022-09-02 10:51:12 +00:00
|
|
|
}
|
2024-11-19 02:35:32 +00:00
|
|
|
catch (Exception e)
|
2022-09-02 10:51:12 +00:00
|
|
|
{
|
2024-11-19 02:35:32 +00:00
|
|
|
// handle other exceptions
|
|
|
|
|
Console.WriteLine("Failed to insert to table meters using stmt, ErrMessage: " + e.Message);
|
|
|
|
|
throw;
|
2022-09-02 10:51:12 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|