从SQL Server数据库创建JSON结果

我有一个具有以下布局的SQL服务器

Table ( id int title varchar(40), start Date(), end Date(), allDay bool, username varchar(40) ); 

我从这个博客中获得了以下代码,以便根据我想要使用的数据创建一个JSON对象,但是他的数据存储方式不同。 如何从数据库中提取相同的对象?

我猜我需要将文件设为.cshtml文件而不是.js文件并使用此文件:

 @{ var db = Database.Open("events"); var selectQueryString = "SELECT * FROM events"; } @foreach(var row in db.Query(selectQueryString)){ } 

但是,如何调整此代码以生成相同的JSON对象?

以下是博客的相关代码,我的尝试如下:

 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(); 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); } 

编辑:

我现在正在使用GetEvents命令的以下.cshtml代码,但它不起作用。 有人有什么想法吗?

  @{ 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"; } 

WebMatrix WebPages中没有控制器和操作。 您需要编写一个单独的.cshtml页面来查询数据库并将JSON提供给响应:

 @{ 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"; } 

然后在另一个要显示日历的页面中,您可以配置它:

 $(document).ready(function() { $('#calendar').fullCalendar({ theme: true, header: { left: '', center: '', right: '' }, defaultView: 'agendaDay', editable: false, events: '/events.cshtml' }); }); 

更新:以下是如何使用参数化查询的示例:

 @{ var origin = new DateTime(1970, 1, 1, 0, 0, 0, 0); var fromDate = origin.AddSeconds(int.Parse(Request["start"])); var toDate = origin.AddSeconds(int.Parse(Request["end"])); var db = Database.Open("events"); var sql = "SELECT * FROM events WHERE start >= @0 AND end <= @1"; var result = db.Query(sql, fromDate, toDate); 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"; } 

现在您可以像这样查询页面: /events.cshtml?start=5&end=10

 DECLARE @listCol VARCHAR(2000) DECLARE @query VARCHAR(4000) SELECT @listCol = STUFF(( SELECT distinct '], [' + [PSize] FROM Pattern FOR XML PATH('') ), 1, 2, '') + ']' SET @query = 'SELECT * FROM (SELECT PColour as Colour_Size_Matrix, PSize, PCode FROM Pattern ) src PIVOT (Count(PCode) FOR PSize IN (' + @listCol + ')) AS pvt' EXECUTE ( @query ) 

我希望此查询的结果为JSON