C
C
Azure Table Insert Entity
See more Azure Table Service Examples
Insert an entity into an Azure table.Chilkat C Downloads
#include <C_CkRest.h>
#include <C_CkAuthAzureStorage.h>
#include <C_CkJsonObject.h>
#include <C_CkStringBuilder.h>
void ChilkatSample(void)
{
BOOL success;
HCkRest rest;
BOOL bTls;
int port;
BOOL bAutoReconnect;
HCkAuthAzureStorage azAuth;
HCkJsonObject json;
HCkStringBuilder sbRequestBody;
HCkStringBuilder sbResponseBody;
int respStatusCode;
success = FALSE;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
rest = CkRest_Create();
// 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
bTls = TRUE;
port = 443;
bAutoReconnect = TRUE;
success = CkRest_Connect(rest,"myaccount.table.core.windows.net",port,bTls,bAutoReconnect);
if (success != TRUE) {
printf("ConnectFailReason: %d\n",CkRest_getConnectFailReason(rest));
printf("%s\n",CkRest_lastErrorText(rest));
CkRest_Dispose(rest);
return;
}
// Provide Azure Cloud credentials for the REST call.
azAuth = CkAuthAzureStorage_Create();
CkAuthAzureStorage_putAccessKey(azAuth,"AZURE_ACCESS_KEY");
// The account name used here should match the 1st part of the domain passed in the call to Connect (above).
CkAuthAzureStorage_putAccount(azAuth,"myaccount");
CkAuthAzureStorage_putScheme(azAuth,"SharedKey");
CkAuthAzureStorage_putService(azAuth,"Table");
// This causes the "x-ms-version: 2019-07-07" header to be automatically added.
CkAuthAzureStorage_putXMsVersion(azAuth,"2019-07-07");
success = CkRest_SetAuthAzureStorage(rest,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"
// }
json = CkJsonObject_Create();
CkJsonObject_UpdateString(json,"PartitionKey","mypartitionkey");
CkJsonObject_UpdateString(json,"RowKey","myrowkey");
CkJsonObject_UpdateString(json,"Timestamp","2013-08-22T01:12:06.2608595Z");
CkJsonObject_UpdateString(json,"Address","Mountain View");
CkJsonObject_UpdateInt(json,"Age",23);
CkJsonObject_UpdateNumber(json,"AmountDue","200.23");
CkJsonObject_UpdateString(json,"CustomerCode","c9da6455-213d-42c9-9a79-3e9149a57833");
CkJsonObject_UpdateString(json,"CustomerSince","2008-07-10T00:00:00");
CkJsonObject_UpdateBool(json,"IsActive",TRUE);
CkJsonObject_UpdateString(json,"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
CkRest_AddHeader(rest,"Accept","application/json;odata=nometadata");
CkRest_AddHeader(rest,"Prefer","return-no-content");
CkRest_AddHeader(rest,"Content-Type","application/json");
sbRequestBody = CkStringBuilder_Create();
CkJsonObject_EmitSb(json,sbRequestBody);
sbResponseBody = CkStringBuilder_Create();
// IMPORTANT: Change "mytable" to the name of your actual table.
success = CkRest_FullRequestSb(rest,"POST","/mytable",sbRequestBody,sbResponseBody);
if (success != TRUE) {
printf("%s\n",CkRest_lastErrorText(rest));
CkRest_Dispose(rest);
CkAuthAzureStorage_Dispose(azAuth);
CkJsonObject_Dispose(json);
CkStringBuilder_Dispose(sbRequestBody);
CkStringBuilder_Dispose(sbResponseBody);
return;
}
// A status code of 204 is a success response for the case where Prefer=return-no-content.
respStatusCode = CkRest_getResponseStatusCode(rest);
printf("Response Status Code = %d\n",respStatusCode);
if (respStatusCode >= 400) {
printf("Response Header:\n");
printf("%s\n",CkRest_responseHeader(rest));
printf("Response Body:\n");
printf("%s\n",CkStringBuilder_getAsString(sbResponseBody));
CkRest_Dispose(rest);
CkAuthAzureStorage_Dispose(azAuth);
CkJsonObject_Dispose(json);
CkStringBuilder_Dispose(sbRequestBody);
CkStringBuilder_Dispose(sbResponseBody);
return;
}
printf("Success.\n");
CkRest_Dispose(rest);
CkAuthAzureStorage_Dispose(azAuth);
CkJsonObject_Dispose(json);
CkStringBuilder_Dispose(sbRequestBody);
CkStringBuilder_Dispose(sbResponseBody);
}