使用ASP.Net Core项目中的ADO.Net将JSON类型作为参数传递给SQL Server 2016存储过程

jum*_*791 12 c# asp.net json sql-server-2016

有人可以举例说明如何使用C#ASP.Net Core Web Api项目中的ADO.Net将JSON类型作为参数传递给SQL Server 2016存储过程吗?我想在C#ASP.Net Core Web Api中看到SQL Server 2016存储过程的示例和JSON类型的传递.

Mai*_*mad 19

有没有json data type在SQL割断你可以简单地把你jsonvarchar存储过程.

如果要将json映射到表,可以使用use OPENJSON将数据转换为rowscolumns.

CREATE PROCEDURE SaveJSON
@pID int,
@pJson nvarchar(max)

AS
BEGIN

INSERT INTO [YourTable]
       ([ID]
       ,[JSONData])
 VALUES
       (@pID
       ,@pJson)
END
Run Code Online (Sandbox Code Playgroud)

如果要将json对象与表映射,可以执行此操作

//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))
Run Code Online (Sandbox Code Playgroud)

是一篇非常好的详细文章,它将为您提供详细的处理方法json data


Saa*_*adi 5

SQL Server 2016 确实具有原生 JSON 支持 - 存在新的 JSON 数据类型(基于nvarchar),以及用于将查询输出转换为 JSON 格式的 FOR JSON 命令

Microsoft 没有包含单独的 JSON 数据类型 - 相反,有许多 JSON 函数(将数据库行打包为 JSON,或将 JSON 解析为关系数据)对类型的列进行操作 NVARCHAR(n)

如果你有JSON文本,你可以从JSON中提取数据或验证JSON是使用内置函数格式正确的JSON_VALUEJSON_QUERYISJSON。对于更高级的查询和分析,该OPENJSON函数可以将一组 JSON 对象转换为一组行。可以对返回的结果集执行任何 SQL 查询。最后,有一个FOR JSON子句可以让您将查询结果格式化为 JSON 文本。

因此,我建议您将其NVARCHAR(MAX)用作存储过程参数。