La création d'un résultat JSON à partir de base de données SQL server
J'ai un serveur SQL avec la mise en page suivante
Table ( id int
title varchar(40),
start Date(),
end Date(),
allDay bool,
username varchar(40)
);
J'ai obtenu le code suivant à partir ce blog pour créer un objet JSON à partir des données que je veux utiliser, mais ses données sont stockées de manière différente. Comment puis-je créer le même objet, extrait de ma base de données?
Je suppose que j'ai besoin de faire la file un .cshtml fichier plutôt qu'une .fichier js et utiliser ceci :
@{
var db = Database.Open("events");
var selectQueryString = "SELECT * FROM events";
}
@foreach(var row in db.Query(selectQueryString)){ }
Mais comment puis-je adapter ce code pour produire le même objet JSON?
Voici le code à partir du blog, mon but est ci-dessous :
public JsonResult GetEvents(double start, double end)
{
var userName = Session["UserName"] as string;
if(string.IsNullOrEmpty(userName))
{
return null;
}
var fromDate = ConvertFromUnixTimestamp(start);
var toDate = ConvertFromUnixTimestamp(end);
var rep = Resolver.Resolve<IEventRepository>();
var events = rep.ListEventsForUser(userName,fromDate,toDate);
var eventList = from e in events
select new {
id = e.Id,
title = e.Title,
start = e.FromDate.ToString("s"),
end = e.ToDate.ToString("s"),
allDay = false
};
var rows = eventList.ToArray();
return Json(rows,JsonRequestBehavior.AllowGet);
}
Edit :
Je travaille maintenant avec le suivant .cshtml code de la GetEvents de commande, mais il ne fonctionnera pas. Quelqu'un a une idée ?
@{
var origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
var fromDate = origin.AddSeconds((Request["start"]));
var toDate = origin.AddSeconds(Request["end"]);
var db = Database.Open("events");
var result = db.Query("SELECT * FROM events");
var data = result.Select(x => new
{
id = x.id,
title = x.title,
start = x.start.ToString("s"),
end = x.end.ToString("s"),
allDay = false
}).ToArray();
Json.Write(data, Response.Output);
Response.ContentType = "application/json";
}
JavacriptSerializer
?Comment puis-je utiliser JavascriptSerializer dans ce cas?
OriginalL'auteur Simon Kiely | 2012-02-23
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas des contrôleurs et des actions de WebMatrix Pages web. Vous avez besoin d'écrire un distinct
.cshtml
page, qui va interroger la base de données et de servir le JSON pour la réponse:et puis dans une autre page dans laquelle vous souhaitez afficher le calendrier, vous pouvez configurer:
Mise à JOUR: Voici un exemple de comment vous pouvez utiliser des requêtes paramétrées:
Maintenant, vous pouvez lancer une requête sur la page comme ceci:
/events.cshtml?start=5&end=10
Aussi, dans mon code ci-dessus, le début et l'heure de fin de l'affichage en cours sont fournis en tant que paramètres, mais dans votre C# fonction, ces données ne semble pas être utilisé?
dans la mise à jour de votre réponse, vous semblez être à l'aide de quelque chose qui ne ressemble pas à la syntaxe C#. Vous concaténer la chaîne SQL avec des points. Aussi, vous semblez être l'appel de la
ConvertFromUnixTimestamp
fonction avec des variables non définies:start
etend
. Si vous voulez lire ce à partir de la demande que vous auriez utiliséRequest["start"]
etRequest["end"]
. Je vous recommande cependant d'abord de rendre ce travail sans filtrage supplémentaire des paramètres. Aussi, vous enveloppé le code dans un fichier HTML et n'ont pas retourné les données JSON. Aussi regarder avec FireBug si le script envoie correct JSON.voir ma réponse mis à jour pour un exemple de comment utiliser correctement les requêtes paramétrées avec des pages web. Aussi, vous pouvez mettre des points d'arrêt dans votre code et essayer de le déboguer.
Oui, je suis entièrement d'accord avec vous que FireBug est fantastique. Si vous souhaitez vous rendre pour un utilisateur spécifique, vous pouvez utiliser le nom d'utilisateur de la colonne dans la requête SQL pour limiter le jeu de résultats.
OriginalL'auteur Darin Dimitrov
Je veux le résultat de cette requête JSON
OriginalL'auteur Vitthal