SQL Server
SQL Server
Firebase PUT - Writing Data
See more Firebase Examples
Demonstrates how to PUT new data to a Firebase JSON database. The data used in this example is at Chilkat Firebase Pigs Database, and is shown here:
Chilkat SQL Server Downloads
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
DECLARE @hr int
DECLARE @iTmp0 int
-- Important: Do not use nvarchar(max). See the warning about using nvarchar(max).
DECLARE @sTmp0 nvarchar(4000)
DECLARE @sTmp1 nvarchar(4000)
DECLARE @success int
SELECT @success = 0
-- Demonstrates how to PUT new data to a Firebase JSON database.
-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
-- This example assumes a JWT authentication token, if required, has been previously obtained.
-- See Get Firebase Access Token from JSON Service Account Private Key for sample code.
-- Load the previously obtained Firebase access token into a string.
DECLARE @fac int
EXEC @hr = sp_OACreate 'Chilkat.FileAccess', @fac OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
DECLARE @accessToken nvarchar(4000)
EXEC sp_OAMethod @fac, 'ReadEntireTextFile', @accessToken OUT, 'qa_data/tokens/firebaseToken.txt', 'utf-8'
EXEC sp_OAGetProperty @fac, 'LastMethodSuccess', @iTmp0 OUT
IF @iTmp0 <> 1
BEGIN
EXEC sp_OAGetProperty @fac, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @fac
RETURN
END
DECLARE @rest int
EXEC @hr = sp_OACreate 'Chilkat.Rest', @rest OUT
-- Make the initial connection (without sending a request yet).
-- Once connected, any number of requests may be sent. It is not necessary to explicitly
-- call Connect before each request.
EXEC sp_OAMethod @rest, 'Connect', @success OUT, 'chilkat.firebaseio.com', 443, 1, 1
IF @success <> 1
BEGIN
EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @fac
EXEC @hr = sp_OADestroy @rest
RETURN
END
DECLARE @authGoogle int
EXEC @hr = sp_OACreate 'Chilkat.AuthGoogle', @authGoogle OUT
EXEC sp_OASetProperty @authGoogle, 'AccessToken', @accessToken
EXEC sp_OAMethod @rest, 'SetAuthGoogle', @success OUT, @authGoogle
-- Chilkat's sample data (pig-rescue data) is publicly readable at: https://chilkat.firebaseio.com/.json
-- This data is publicly readable, but not writable. You'll need to
-- run against your own database..
-- Generate a new push ID.
DECLARE @prng int
EXEC @hr = sp_OACreate 'Chilkat.Prng', @prng OUT
DECLARE @pushId nvarchar(4000)
EXEC sp_OAMethod @prng, 'FirebasePushId', @pushId OUT
-- We're going to add a new pig with just the name.
DECLARE @pigRecord int
EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @pigRecord OUT
EXEC sp_OAMethod @pigRecord, 'AppendString', @success OUT, 'name', 'William'
DECLARE @path int
EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @path OUT
EXEC sp_OAMethod @path, 'Append', @success OUT, '/pig-rescue/animal/'
EXEC sp_OAMethod @path, 'Append', @success OUT, @pushId
EXEC sp_OAMethod @path, 'Append', @success OUT, '.json'
-- The string content of the last arg passed is {"name":"William"}
DECLARE @jsonResponse nvarchar(4000)
EXEC sp_OAMethod @path, 'GetAsString', @sTmp0 OUT
EXEC sp_OAMethod @pigRecord, 'Emit', @sTmp1 OUT
EXEC sp_OAMethod @rest, 'FullRequestString', @jsonResponse OUT, 'PUT', @sTmp0, @sTmp1
EXEC sp_OAGetProperty @rest, 'LastMethodSuccess', @iTmp0 OUT
IF @iTmp0 <> 1
BEGIN
-- Something happened in the communications (either no request was sent, or no response was received.
-- (The Chilkat REST API also has lower-level methods where an app can send the request in one call,
-- and then receive the response in another call.)
EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @fac
EXEC @hr = sp_OADestroy @rest
EXEC @hr = sp_OADestroy @authGoogle
EXEC @hr = sp_OADestroy @prng
EXEC @hr = sp_OADestroy @pigRecord
EXEC @hr = sp_OADestroy @path
RETURN
END
-- Check the response status code. A 200 response status indicates success.
EXEC sp_OAGetProperty @rest, 'ResponseStatusCode', @iTmp0 OUT
IF @iTmp0 <> 200
BEGIN
EXEC sp_OAGetProperty @rest, 'ResponseStatusText', @sTmp0 OUT
PRINT @sTmp0
PRINT @jsonResponse
PRINT 'Failed.'
EXEC @hr = sp_OADestroy @fac
EXEC @hr = sp_OADestroy @rest
EXEC @hr = sp_OADestroy @authGoogle
EXEC @hr = sp_OADestroy @prng
EXEC @hr = sp_OADestroy @pigRecord
EXEC @hr = sp_OADestroy @path
RETURN
END
PRINT @jsonResponse
PRINT 'Success.'
-- Note: In many of the Chilkat examples, you may notice strange ways
-- of doing something that should be simpler and shorter. For example,
-- building the path (above) could've been written differently,
-- with some simple string concatenation.
--
-- The reason is that the Chilkat examples are written in a
-- proprietary "example code" scripting language,
-- and then automatically generated to each of the different programming
-- languages you see on example-code.com. The code generation is
-- limited in what it can do. For example, string concatentation
-- is not yet a feature of the "example code" scripting language (as of May 2016),
-- and therefore you won't see the use of a programming language's string
-- concatentation operators in any example.
--
EXEC @hr = sp_OADestroy @fac
EXEC @hr = sp_OADestroy @rest
EXEC @hr = sp_OADestroy @authGoogle
EXEC @hr = sp_OADestroy @prng
EXEC @hr = sp_OADestroy @pigRecord
EXEC @hr = sp_OADestroy @path
END
GO