web-dev-qa-db-fra.com

Passage de type JSON en tant que paramètre dans une procédure stockée SQL Server 2016 à l'aide de ADO.Net dans un projet ASP.Net Core

Quelqu'un peut-il donner un exemple sur la manière de passer un type JSON en tant que paramètre d'une procédure stockée SQL Server 2016 à l'aide de ADO.Net dans un projet Api Web Core ASP.Net? Je souhaite voir un exemple de procédure stockée SQL Server 2016 et transmettre le type JSON dans C # ASP.Net Core Web Api. 

12
jump4791

Il n'y a pas de json data type dans le serveur sql, vous pouvez simplement envoyer votre json en tant que varchar à une procédure stockée. 

Si vous souhaitez mapper votre json sur une table, vous pouvez utiliser OPENJSON pour convertir les données en rows et columns.

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

AS
BEGIN

INSERT INTO [YourTable]
       ([ID]
       ,[JSONData])
 VALUES
       (@pID
       ,@pJson)
END

Si vous voulez mapper des objets JSON avec une table, vous pouvez le faire.

//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))

Ici est un très bon article détaillé qui vous donnera une idée détaillée à traiter avec json data

17
Mairaj

SQL Server 2016 prend en charge le format JSON natif - un nouveau type de données JSON (basé sur nvarchar) est présent, ainsi qu'une commande FOR JSON permettant de convertir le résultat d'une requête au format JSON.

Microsoft n'a pas inclus de type de données JSON distinct. Il existe plutôt un certain nombre de fonctions JSON (pour empaqueter des lignes de base de données dans JSON ou pour analyser JSON en données relationnelles) qui fonctionnent sur des colonnes de type NVARCHAR(n)

Si vous avez du texte JSON, vous pouvez extraire des données de JSON ou vérifier que JSON est correctement formaté à l'aide des fonctions intégrées JSON_VALUE, JSON_QUERY et ISJSON. Pour des requêtes et des analyses plus avancées, la fonction OPENJSON peut transformer un tableau d'objets JSON en un ensemble de lignes. Toute requête SQL peut être exécutée sur le jeu de résultats renvoyé. Enfin, il existe la clause FOR JSON qui vous permet de formater les résultats de la requête sous forme de texte JSON.

Je vous recommande donc d'utiliser NVARCHAR(MAX) comme paramètre de procédure stockée.

0
Saadi