Sample code for 30+ languages & platforms
Dart

Azure Table Insert Entity

See more Azure Table Service Examples

Insert an entity into an Azure table.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // This example requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  final rest = CkRest();

  // IMPORTANT: Make sure to change "myaccount" to your actual Azure Storage Account name.
  // IMPORTANT: Also change "mytable" to the name of your Azure table.
  // We're going to POST to this URL:  https://myaccount.table.core.windows.net/mytable
  final bTls = true;
  final port = 443;
  final bAutoReconnect = true;
  try {
    rest.connect('myaccount.table.core.windows.net', port, bTls, bAutoReconnect);
  } on ChilkatException catch (e) {
    print('ConnectFailReason: ${rest.connectFailReason}');
    print(e.lastErrorText);
    return;
  }

  // Provide Azure Cloud credentials for the REST call.
  final azAuth = CkAuthAzureStorage();
  azAuth.accessKey = 'AZURE_ACCESS_KEY';
  // The account name used here should match the 1st part of the domain passed in the call to Connect (above).
  azAuth.account = 'myaccount';
  azAuth.scheme = 'SharedKey';
  azAuth.service = 'Table';

  // This causes the "x-ms-version: 2019-07-07" header to be automatically added.
  azAuth.xMsVersion = '2019-07-07';
  rest.setAuthAzureStorage(azAuth);

  // Note: The application does not need to explicitly set the following
  // headers: Content-Length, x-ms-date, Authorization.  These headers
  // are automatically set by Chilkat.

  // Note: The above code does not need to be repeatedly called for each REST request.
  // The rest object can be setup once, and then many requests can be sent.  Chilkat will automatically
  // reconnect within a FullRequest* method as needed.  It is only the very first connection that is explicitly
  // made via the Connect method.

  // Use this online tool to generate code from sample JSON:
  // Generate Code to Create JSON

  // The following JSON is sent in the request body.

  // {  
  //    "PartitionKey":"mypartitionkey",  
  //    "RowKey":"myrowkey",  
  //    "Timestamp":"2013-08-22T01:12:06.2608595Z",  
  //    "Address":"Mountain View",  
  //    "Age":23,  
  //    "AmountDue":200.23,  
  //    "CustomerCode":"c9da6455-213d-42c9-9a79-3e9149a57833",  
  //    "CustomerSince":"2008-07-10T00:00:00",  
  //    "IsActive":true,  
  //    "NumberOfOrders":"255"  
  // }  

  final json = CkJsonObject();
  json.updateString('PartitionKey', 'mypartitionkey');
  json.updateString('RowKey', 'myrowkey');
  json.updateString('Timestamp', '2013-08-22T01:12:06.2608595Z');
  json.updateString('Address', 'Mountain View');
  json.updateInt('Age', 23);
  json.updateNumber('AmountDue', '200.23');
  json.updateString('CustomerCode', 'c9da6455-213d-42c9-9a79-3e9149a57833');
  json.updateString('CustomerSince', '2008-07-10T00:00:00');
  json.updateBool('IsActive', true);
  json.updateString('NumberOfOrders', '255');

  // IMPORTANT: Pay attention to the options for nometadata, minimalmetadata, or fullmetadata.
  // See the Azure table service API documentation at https://docs.microsoft.com/en-us/rest/api/storageservices/insert-entity
  rest.addHeader('Accept', 'application/json;odata=nometadata');
  rest.addHeader('Prefer', 'return-no-content');
  rest.addHeader('Content-Type', 'application/json');

  final sbRequestBody = CkStringBuilder();
  json.emitSb(sbRequestBody);
  final sbResponseBody = CkStringBuilder();
  // IMPORTANT: Change "mytable" to the name of your actual table.
  try {
    rest.fullRequestSb('POST', '/mytable', sbRequestBody, sbResponseBody);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // A status code of 204 is a success response for the case where Prefer=return-no-content.
  final respStatusCode = rest.responseStatusCode;
  print('Response Status Code = $respStatusCode');
  if (respStatusCode >= 400) {
    print('Response Header:');
    print(rest.responseHeader);
    print('Response Body:');
    print(sbResponseBody.getAsString());
    return;
  }

  print('Success.');
}