To establish a connection to a Snowflake data source, the ADO.NET Provider can be used through the C1SnowflakeConnection class. This class requires a connection string to be provided as an argument, which can be created in either of the following ways:
The following code shows how to use the C1SnowflakeConnectionStringBuilder class to configure the connection string for Snowflake, which can then be consumed by the C1SnowflakeConnection class to establish a connection to Snowflake server. Through that connection, the data source can be queried.
The ADO.NET provider for Snowflake allows you to use either the Key-Pair or the OAuth 2.0 authentication.
All the connection string properties below are mandatory for key pair authentication:
private key: is the generated file together with a public key that contains the private key, in this property should be specified the path of the file
fingerprint: the fingerprint can be retrieved in the Snowflake console using the query ‘DESC USER username’;
username: the username used to log in to the Snowflake console
The following code shows how the C1SnowflakeConnectionStringBuilder class can be used to configure the connection string for Snowflake and consumed by the C1SnowflakeConnection class to create a connection to the server. Here, you can query the data.
C# |
Copy Code |
---|---|
//Create connection string using C1SnowflakeConnectionStringBuilder C1SnowflakeConnectionStringBuilder builder = new C1SnowflakeConnectionStringBuilder(); builder.Account = "****.eu-west-2.aws"; builder.Url = "https://****.eu-west-2.aws.snowflakecomputing.com"; builder.Warehouse = "****"; builder.Database = "****"; builder.Schema = "****"; builder.Role = "****"; builder.PrivateKey = "****"; builder.PrivateKeyPassword = "****"; builder.Fingerprint = "****"; builder.Username = "****"; //Create and establish a connection C1SnowflakeConnection conn = new C1SnowflakeConnection(builder); |
Alternatively, the connection string can be written directly as a string literal like in the code example below.
C# |
Copy Code |
---|---|
static string connectionString = $"account={Account};warehouse={Warehouse};schema={Schema};role={Role};database={Database};url={Url};" + $"private key={KeyPath};private key password ={PrivateKeyPassword};fingerprint={Fingerprint};username={User};"; C1SnowflakeConnection conn = new C1SnowflakeConnection(connectionString); |
Snowflake OAuth authentication is based on OAuth 2.0.
The following code shows how the C1SnowflakeConnectionStringBuilder class can be used to configure the connection string for Snowflake and consumed by the C1SnowflakeConnection class to create a connection to the server. Here, you can query the data.
C# |
Copy Code |
---|---|
//Create a connection string using C1SnowflakeConnectionStringBuilder C1SnowflakeConnectionStringBuilder builder = new C1SnowflakeConnectionStringBuilder(); builder.Account = "****.eu-west-2.aws"; builder.Url = "https://****.eu-west-2.aws.snowflakecomputing.com"; builder.Warehouse = "****"; builder.Database = "****"; builder.Schema = "****"; builder.Role = "****"; builder.OAuthTokenEndpoint = "****.snowflakecomputing.com/oauth/token-request"; builder.OAuthClientId = "****"; builder.OAuthClientSecret = "****"; builder.OAuthRefreshToken = "****"; builder.OAuthAccessToken = "****"; //Create and establish the connection C1SnowflakeConnection conn = new C1SnowflakeConnection(builder); |
Alternatively, the connection string can be written directly as a string literal like in the code example below.
C# |
Copy Code |
---|---|
static string connectionString = $"account={Account};warehouse={Warehouse};schema={Schema};role={Role};database={Database};url={Url};" + $"OAuth Client Secret={OAuthClientSecret};OAuth Client Id={OAuthClientId};OAuth Access Token={OAuthAccessToken};OAuth Refresh Token={OAuthRefreshToken};Oauth Token Endpoint={OAuthTokenEndpoint};"; C1SnowflakeConnection conn = new C1SnowflakeConnection(builder); |