تخفیف های ویژه عیدانه توسینسو
تا 60 درصد تخفیف ویژه
00ساعت 00دقیقه 00ثانیه
وحید صدر

خروجی گرفتن از Sql به صورت Json

سلام من یه نرم افزار دارم مینویسم در سوییفت و نیاز دارم که اطلاعات رو از SQL سرور 2008 به صورت جیسون دریافت کنم اگر امکانش هست راهنماییم کنید.

لذت یادگیری با توسینسو
به عنوان شخصی که مدت هاست از سایت توسینسو استفاده می کنم باید بگم که واقعاً یکی از بهترین مرجع ها برای ارتقاء دانش شخصی هست. دوره های سایت، راهکارها و مطالب، همگی عالی هستند.

سلام به شما دوست عزیز

این امکان در در SQL server 2016 وجود داره در ورژن های پایین تر کار شما سخت می شه چون باید به شکل xml بگیرید و اون رو تبدیل به json کنید.

کانال تلگرام، اینستاگرام، توییتر: @mehdiadeli9
وحید صدر

اگر امکان داره میتونید بگید چجوری باید خروجی Xml بگیرم؟

انتهای کوئری select بنویسید

FOR  xml AUTO

برای مثال

SELECT * FROM table1
FOR XML AUTO
کانال تلگرام، اینستاگرام، توییتر: @mehdiadeli9
وحید صدر

ممنونم از پاسخ و راهنماییت من اصلا با SQl کار نکردم بنابراین اگر سوالاتم یه مقدار ابتدایی هست عذر میخوام

اینکار انجام شد اول اینکه میخواستم ببین این خروجی که از XML گرفته کجا میره و دوم اینکه من میخوام هر 1 ثانیه یکببار اینکارو انجام بده خودکار آیا امکانش هست یا خیر ؟

با سلام

همان طور که دوست عزیزمون راهنماییتون کردن در sql server 2016 مطابق راهنمای خود میکروسافت می تونید از جداولتون خروجی json بگیرید :

این عکس و بنده از سایت خود مایکروسافت گرفتم :

وب سایت توسینسو

---------------------

اما برای نسخه های قبل از 2016 باید چیکار کرد :

استفاده از CLR : توابعی که به زبان های مبتنی بر دات نت نوشته میشن بعد به صورت اسمبلی به sql معرفی میشن

خوب برای تبدیل خروجی جداولتون به خروجی JSON :

سه تا اسمبلی باید توی sql ایجاد کنید با دسترسی Unrestricted : این نوع دسترسی دسترسی کامل است به گونه ایی که به این توابع دسترسی کامل به فایل ها و فولدرهای سرور خودتون هم می دید

ابتدا برای اینکه بتونید همچین اجازه ایی به خودتون بدین که اصلا همچین توابعی تعریف کنید ابتدا باید خاصیت TRUSTWORTHY پایگاه داده مربوطه on باشد همون طور که از معنی کلمه پیدا است با فعال کردن این گزینه بانک اطلاعاتی شما به صورت قابل اعتماد می تونه اسمبلی هایی رو به صورت Unrestricted تعریف کنه .

وب سایت توسینسو

بعد از اینکه TRUSTWORTHY رو فعال کردیم : بروی بانک اطلاعاتیمون راست کلیک می کنیم و در بخش Option از فغال شدن آن اطمینان حاصل می کنیم :

وب سایت توسینسو

بعد از این کار باید clr_option که اجازه میده اسمبلی های ما به توابع .net دسترسی داشته باشن و فعال کنیم :

ابتدا یک کوئری جدید میسازیم و اجراش می کنیم :

وب سایت توسینسو

خوب حالا وقتش رسیده که سه تا اسمبلی رو به Sql سرورمون اضافه کنیم :

سپس فایل های DLL رو به ترتیب پایین اضافه می کنیم به بخش اسمبلی ها :

وب سایت توسینسو

این سه فایل از آخر همین پست قابل دانلود هستن .

خوب حالا هر سه فایل رو باید در بخش اسمبلی ثبت کنیم یا اصطلاحا Register کنیم :

برای این کار طبق تصاویر پایین مراحل رو پیش میریم :

وب سایت توسینسو

بعد از پنجره ی ظاهر شده بروی Browse کلیک کرده و آدرس فایل DLL رو بهش می دیم :

وب سایت توسینسو

در اخر قبل از اینکه بروی ok کلیک کنیم باید Permission رو بروی Unrestricted بزاریم :

وب سایت توسینسو

خوب سه تا فایل DLL رو به همون ترتیبی که در عکس واستون مشخص کردم در بخش اسمبلی تعریف می کنید :

وب سایت توسینسو

خوب حالا پس از اضافه کردن سه اسمبلی باید از تابعی که داخل اون برای تبدیل خروجی جداول SQL به Json استفاده کنیم :

اسم اسمبلی هست : JSON.SQL

اسم کلاسمون هست : StoredProceduresAndFunctions

اسم فانکشن یا تابع ما هست : xfJSONQuery

به سه تا پارامتر بالا جهت استفاده از اسمبلی نیاز داریم :

خوب حالا باید یک فانکشن توی Sql ایجاد کنیم و بگیم که از اسمبلی با نام فلان و کلاس فلان و تابع فلان استفاده کن :

وب سایت توسینسو

خوب همون طور که میبینید پارامتر اول این تابع دستور SQL ی هست که قرار خروجی اون دستور تبدیل به JSON بشه و پارامتر دوم هم تعیین کننده ی این است که در پارامتر اول از تک کوت یا دابل کوت استفاده کردیم که باید 0 باشه .

وب سایت توسینسو

خوب حالا باید تابعمون و تستش کنیم :

اینم نتیجه ی نهایی :

وب سایت توسینسو

اطلاعات جدلمون این بوده که خروجی JSon ش شده این :

وب سایت توسینسو

دانلود فایل های DLL مورد نیاز

دوست عزیز واسه بخش اتوماتیک انجام شدن یه اسکریپت هم می تونید از SQL SERVER AGENT استفاده کنید

بعد job رو تعریف کنید زمان بندیش کنید که تکرار بشه

وب سایت توسینسو

*بهتون توصیه می کنم از تکنولوژی SignalR استفاده کنید : برنامه نویسی سمت سرور بدون وقفه

خیلی ساده می تونه منتظر بمونه به محض اینکه اتفاق جدید افتاد یه رویداد و صدا بزنه .*

این پست توسط امیرحسین کریم پور در تاریخ دوشنبه, 9 دی 1398 حذف شده است.

دلیل: درخواست لینک دانلود در توسینسو ممنوع است. متشکرم

منال مجموعه

حداقل لینک رو درست کنید لطفا بتونم dllها رو بردارم.پس این چه اموزشی

پاسخ شما
برای ارسال پاسخ خود وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....