dotConnect for SQL Server Documentation
Devart.Data.SqlServer.SqlTypes Namespace / SqlJson Class
Members Example

In This Topic
    SqlJson Class
    In This Topic
    Represents the JSON datatype in SQL Server.
    Syntax
    'Declaration
     
    Public Class SqlJson 
       Implements System.Data.SqlTypes.INullable 
    public class SqlJson : System.Data.SqlTypes.INullable  
    Example
    using Devart.Data.SqlServer;
    using Devart.Data.SqlServer.SqlTypes;
    using System.Data;
    
    namespace SqlJsonConsoleApp
    {
            internal class Program
            {
                    static void Main(string[] args)
                    {
                            string connString = @"Data Source=localhost;Integrated Security=False;User ID=sa;TrustServerCertificate=True;Database=dbname";
    
                            CreateTableAndProcedure(connString);
                            InsertData(connString);
                            ReadJsonData(connString);
                            ReadJsonParam(connString);
                    }
    
                    private static void CreateTableAndProcedure(string connectionString)
                    {
                            using (SqlConnection connection = new SqlConnection(connectionString))
                            {
                                    connection.Open();
                                    using (SqlCommand command = connection.CreateCommand())
                                    {
                                            string tableCreate = "CREATE TABLE [JsonTable] (Id INT IDENTITY(1,1) PRIMARY KEY, Data json NULL);";
                                            string storedProcCreate = $@"CREATE PROCEDURE GetJsonProc
                                                    @id int,
                                                    @data json OUTPUT
                                                    AS
                                                    BEGIN
                                                    SELECT @data = (SELECT Data FROM JsonTable WHERE Id = @id)
                                                    END;";
    
                                            command.CommandText = "DROP TABLE IF EXISTS [JsonTable]";
                                            command.ExecuteNonQuery();
                                            command.CommandText = tableCreate;
                                            command.ExecuteNonQuery();
    
                                            command.CommandText = "DROP PROCEDURE IF EXISTS GetJsonProc";
                                            command.ExecuteNonQuery();
                                            command.CommandText = storedProcCreate;
                                            command.ExecuteNonQuery();
                                    }
                            }
                    }
    
                    private static void InsertData(string connectionString)
                    {
                            using (SqlConnection connection = new SqlConnection(connectionString))
                            {
                                    connection.Open();
                                    using (SqlCommand command = new SqlCommand("INSERT INTO JsonTable (Data) VALUES (@data)", connection))
                                    {
                                            // Insert JSON value
                                            string jsonString = @"{ ""company"": ""Devart"", ""industry"": ""Software Development"", ""products"": [ ""dotConnect"", ""Entity Developer"", ""dbForge Studio"" ], ""website"": ""www.devart.com"" }";
                                            SqlParameter jsonParam = new SqlParameter("@data", SqlType.Json);
                                            jsonParam.SqlValue = new SqlJson(jsonString);
                                            command.Parameters.Add(jsonParam);
                                            command.ExecuteNonQuery();
    
                                            // Insert null value
                                            command.Parameters.Clear();
                                            jsonParam.Value = new SqlJson();
                                            command.Parameters.Add(jsonParam);
                                            command.ExecuteNonQuery();
                                    }
                            }
                    }
    
                    private static void ReadJsonData(string connectionString)
                    {
                            using (SqlConnection connection = new SqlConnection(connectionString))
                            {
                                    connection.Open();
                                    using (SqlCommand command = new SqlCommand("SELECT Data FROM JsonTable", connection))
                                    {
                                            using (SqlDataReader reader = command.ExecuteReader())
                                            {
                                                    while (reader.Read())
                                                    {
                                                            if (!reader.IsDBNull(0))
                                                            {
                                                                    // Read JSON with GetSqlJson
                                                                    SqlJson sqlJson = reader.GetSqlJson(0);
                                                                    Console.WriteLine($"JSON data by GetSqlJson: {sqlJson}");
    
                                                                    // Read JSON with GetString
                                                                    string jsonString = reader.GetString(0);
                                                                    Console.WriteLine($"JSON data by GetString: {jsonString}");
                                                            }
                                                            else
                                                                    Console.WriteLine("JSON data: NULL");
                                                    }
                                            }
                                    }
                            }
                    }
    
                    private static void ReadJsonParam(string connectionString)
                    {
                            using (SqlConnection connection = new SqlConnection(connectionString))
                            {
                                    connection.Open();
                                    using (SqlCommand command = new SqlCommand("GetJsonProc", connection))
                                    {
                                            command.CommandType = CommandType.StoredProcedure;
                                            command.Parameters.Add(new SqlParameter("@id", SqlType.Int) { Direction = ParameterDirection.Input, Value = 1 });
    
                                            SqlParameter jsonParam = new SqlParameter("@data", SqlType.Json) { Direction = ParameterDirection.Output };
                                            command.Parameters.Add(jsonParam);
    
                                            command.ExecuteNonQuery();
                                            Console.WriteLine($"JSON data from StoredProcedure: {jsonParam.Value}");
                                    }
                            }
                    }
            }
    }
    Inheritance Hierarchy

    System.Object
       Devart.Data.SqlServer.SqlTypes.SqlJson

    See Also