Sample code for 30+ languages & platforms
SQL Server

Save Email Credentials in Apple Keychain or Windows Credentials Manager

See more Apple Keychain Examples

This example demonstrates how to save (or update) email credentials in the Apple Keychain.

Chilkat SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    -- This example requires the Chilkat API to have been previously unlocked.
    -- See Global Unlock Sample for sample code.

    DECLARE @secrets int
    EXEC @hr = sp_OACreate 'Chilkat.Secrets', @secrets OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    -- On Windows, this is the Windows Credentials Manager
    -- On MacOS/iOS, it is the Apple Keychain
    EXEC sp_OASetProperty @secrets, 'Location', 'local_manager'

    -- Specify the name of the secret.
    -- service and username are required.
    -- appName and domain are optional.
    -- Note: The values are arbitrary and can be anything you want.
    DECLARE @json int
    EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT

    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'appName', 'MyEmailApp'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'service', 'SMTP'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'domain', 'example.com'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'username', 'joe@example.com'

    -- Create or update the secret.
    -- This secret is the SMTP password for the above email account.
    EXEC sp_OAMethod @secrets, 'UpdateSecretStr', @success OUT, @json, 'joes_password'
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @secrets, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @secrets
        EXEC @hr = sp_OADestroy @json
        RETURN
      END

    -- Let's save the IMAP secret for an account we'll read using IMAP..
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'appName', 'MyEmailApp'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'service', 'IMAP'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'domain', 'example2.com'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'username', 'jane@example2.com'

    EXEC sp_OAMethod @secrets, 'UpdateSecretStr', @success OUT, @json, 'janes_password'
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @secrets, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @secrets
        EXEC @hr = sp_OADestroy @json
        RETURN
      END


    PRINT 'Success.'

    EXEC @hr = sp_OADestroy @secrets
    EXEC @hr = sp_OADestroy @json


END
GO