Passing JSON type as parameter to SQL Server 2016 stored procedure using ADO.Net in ASP.Net Core project

前端 未结 3 1214
梦谈多话
梦谈多话 2021-02-19 01:16

Can someone give example how to pass JSON type as parameter to SQL Server 2016 stored procedure using ADO.Net in C# ASP.Net Core Web Api project ? I want to see example of SQL

相关标签:
3条回答
  • 2021-02-19 01:29

    There is no json data type in sql sever you can simply send your json as varchar to stored procedure.

    If you want to map your json to table you can use use OPENJSON to convert data to rows and columns.

    CREATE PROCEDURE SaveJSON
    @pID int,
    @pJson nvarchar(max)
    
    AS
    BEGIN
    
    INSERT INTO [YourTable]
           ([ID]
           ,[JSONData])
     VALUES
           (@pID
           ,@pJson)
    END
    

    If you want to map json objects with table you can do this

    //json would be something like this
    [
     { "id" : 2,"name": "John"},
     { "id" : 5,"name": "John"}
    ]
    
    INSERT INTO YourTable (id,Name)
    SELECT id, name
    FROM OPENJSON(@pJson)
    WITH (id int,
    name nvarchar(max))
    

    Here is a very good and detailed article which will give you detailed idea to deal with json data

    0 讨论(0)
  • 2021-02-19 01:31

    SQL Server 2016 do have native JSON support - a new JSON datatype (which is based on nvarchar) is there, as well as a FOR JSON command to convert output from a query into JSON format

    Microsoft did not include a separate JSON datatype - instead, there are a number of JSON functions (to package up database rows into JSON, or to parse JSON into relational data) which operate on columns of type NVARCHAR(n)

    If you have JSON text, you can extract data from JSON or verify that JSON is properly formatted using built-in functions JSON_VALUE, JSON_QUERY, and ISJSON. For more advanced querying and analysis, the OPENJSON function can transform an array of JSON objects into a set of rows. Any SQL query can be executed on the returned result set. Finally, there is the FOR JSON clause that enables you to format query results as JSON text.

    So, I recommend you use NVARCHAR(MAX) as your stored procedure parameter.

    0 讨论(0)
  • 2021-02-19 01:41

    For a simple example that shows the C# and the SQL, please see: https://chris.koester.io/index.php/2018/03/21/load-json-into-sql-server-using-a-stored-procedure-and-csharp/

    You probably have some higher level data layer approach in your C#, like with EF or something, but this will let you get a simple test setup using a good ol' ADO.Net SQLCommand.

    0 讨论(0)
提交回复
热议问题