2010-08-07 19 views
11

Bu sorunun kil pidgeon çekimine benzediğini düşünüyorum ... "çek ... bang!" .. vuruldu .. ama yine de, inanıyorum diye sormaya değer.SQL 2008: veri satırlarını JSON olarak döndürüyor musunuz?

JS çerçevelerinin birçoğu bu günlerde JSON kullanıyor ve iyi bir sebepten dolayı biliyorum. Klasik soru "verileri JSON'a dönüştürmek" dir.

Boru hattındaki bir noktada, veri erişim katmanında (JSON.NET'e bakıyorum) veriyi JSON'a dönüştürmeniz gerektiğini veya .NET 4.x'e inanıyorum. JSON olarak çıkış/serileştirme yöntemleri.

Soru şu: JSON olarak çıkacak bir SQL işlevi düşünmek gerçekten kötü bir fikir mi?

Nitelikle niteleyici: Bunun gibi 1000 satırlık çıktılar denemeyi anlıyorum iyi bir fikir değil - aslında gerçekten gerekmedikçe web uygulamaları için gerçekten iyi bir fikir değil. Benim gereksinim için, bir seferde muhtemelen 100 satır gerekir ...

cevap

5

Yanıt gerçekten: ,'a bağlıdır. Uygulamanız çok fazla kullanılmayan küçük bir işlemse, tüm bunları veritabanında yapın.

Bununla birlikte akılda tutulması gereken şey, , uygulamanız 12 ayda 10 kata kadar kullanıcı tarafından kullanıldığında ne olur??

Web kodunuz yerine, saklı yordamlarınızda JSON kodlamasını hızlı, basit ve kolay bir şekilde gerçekleştirmenizi sağlar ve uygulamanızı dışarıda ve kullanımda almanızı sağlarsa, işte bu açıkça yoldur. Bununla birlikte, diğer cevaplarda önerilmiş olan çözümlerle "düzgün bir şekilde" yapmak için çok fazla çaba göstermiyor.

Uzun ve kısa olanı, mevcut gereksinimlerinize en uygun çözümü alırken, gelecekte değiştirmeniz gerektiğinde etkiyi düşünün.

1

Standart veri erişim tekniğinizi kullanarak yüklemek ve daha sonra JSON'a dönüştürmek için daha iyi. Daha sonra .NET'deki standart nesnelerde ve istemci tarafındaki javascript'te kullanabilirsiniz.

0

.net mvc kullanılıyorsa, sonuçlarınızı denetleyicilerinize serileştirirsiniz ve bir JsonResult çıkarırsınız, sizin için bunu yapan bir Controller.Json() yöntemi vardır. Web formları kullanıyorsanız bir http işleyicisi ve JavascriptSerializer sınıfı gitmenin yolu olacaktır.

2

Bu nedenle, [WebMethod] (WebMethodAttribute) var.

2

Verileri program parçasına yüklemek ve daha sonra JSON olarak geri yüklemek en iyisidir.

.NET 4'ün json'u döndürmek için bir desteği var ve bunu bir ASP.NET MVC sitesinin bir parçası olarak yaptım ve oldukça basit ve anlaşılır bir şeydi.

ben sql server bu daha iyi uygulama kodu yapıldığını diğer yanıtlayan katılıyorum

2

dışına dönüşümünü taşımak önerilir. Ancak ... bu teorik olarak SQL Server'ın create assembly sözdizimini kullanarak veritabanına CLR derlemeleri dahil etme yeteneğini kullanarak mümkündür. Seçim gerçekten senin. .net içinde çeviri yapmak için bir derleme oluşturabilir, bu derlemeyi SQL Server'a tanımlayın ve depolanmış yordamlarınızdan geri dönüş değerleri olarak JSON'a serileştirmek için içerdiği yöntem (ler) kullanın ...

0

Tüm cevaplar için teşekkürler ... hala bana kaç insanın yardım edecek zamanı olduğu beni şaşırtıyor.

Tüm çok iyi puanlar ve uygulama/katmanı dönüştürme işine izin verdiğimi kesinlikle doğruladım - gerçek veriler ile önyüz arasındaki yapıştırıcı olarak. Ben MVC veya SQL-2008 ile çok fazla devam etmedim sanırım, ve aşağı izleme değer bazı nuggets olsaydı emin değildi.

o (bazı bağlantılar burada yayınlanan ve ayrıca balıkçılık sonrasında) Ben zaman olduğu için aşağıdakileri yapmayı seçmesi (şu anda .NET 3.5 kullanılarak geri kalmış ve hiçbir MVC ..) çalıştı gibi:

  1. bir seri hale getirilebilir listesi için basit bir datatable> toplama (sözlük) dönüştürmeyi kullanma bir datatable/datareader
  2. olarak SQL veri alma
  3. şimdi ben javascript broker olarak hareket etmek bir ashx sayfasını kullanıyorum Çünkü (yani bir JQuery AJAX çağrısı aracılığıyla ), benim ASHX sayfamda:var context.Response.ContentType = "application/json"; System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer();

  4. Sonra konu olabilir: json.serialize (<>)

geriye biraz görünüyor olabilir, ama o .. gayet iyi çalışıyor ve ana uyarı her zamankinden büyük miktarda dönen olmamasıdır Bir seferde veri.

Bir kez daha, tüm replikler için teşekkürler!

+0

Niçin [WebMethod] ile yönteminizi süslemiyorsunuz, bu nedenle bu klişe kodunu elle yazmak zorunda değilsiniz? – Hut8