有人可以举例说明如何使用C#ASP.Net Core Web Api项目中的ADO.Net将JSON类型作为参数传递给SQL Server 2016存储过程吗? 我想在C#ASP.Net Core Web Api中看到SQL Server 2016存储过程的示例和JSON类型的传递。
有人可以举例说明如何使用C#ASP.Net Core Web Api项目中的ADO.Net将JSON类型作为参数传递给SQL Server 2016存储过程吗? 我想在C#ASP.Net Core Web Api中看到SQL Server 2016存储过程的示例和JSON类型的传递。
没有 json data type
在sql sever中你可以简单地发送你的 json
如 varchar
到存储过程。
如果要将json映射到表,可以使用 OPENJSON
将数据转换为 rows
和 columns
。
CREATE PROCEDURE SaveJSON
@pID int,
@pJson nvarchar(max)
AS
BEGIN
INSERT INTO [YourTable]
([ID]
,[JSONData])
VALUES
(@pID
,@pJson)
END
如果要将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))
这里 是一篇非常好的,详细的文章,会给你详细的想法来处理 json data
SQL Server 2016确实具有本机JSON支持 - 一种新的JSON数据类型(基于 nvarchar
),以及FOR JSON命令将查询的输出转换为JSON格式
Microsoft没有包含单独的JSON数据类型 - 相反,有许多JSON函数(将数据库行打包成JSON,或将JSON解析为关系数据),这些函数对类型的列进行操作 NVARCHAR(n)
如果您有JSON文本,则可以从JSON中提取数据或使用内置函数验证JSON是否已正确格式化 JSON_VALUE
, JSON_QUERY
,和 ISJSON
。对于更高级的查询和分析, OPENJSON
function可以将JSON对象数组转换为一组行。可以在返回的结果集上执行任何SQL查询。最后,还有 FOR JSON
使您能够将查询结果格式化为JSON文本的子句。
所以,我建议你使用 NVARCHAR(MAX)
作为您的存储过程参数。