当前位置: 首页 > 面试题库 >

从SQL Server数据库创建JSON结果

通俊发
2023-03-14
问题内容

我有一个具有以下布局的SQL Server

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

编辑:

我现在正在为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



 类似资料:
  • “我正在设置一个文件浏览器,并将文件夹的名称保存在数据库中。任何数量的文件夹都可以保存在数据库中,从保存的数据中,我想创建一个json树。 这是我的数据库表结构 parent\u id是一个外键,用于引用文件夹id。 这是我试图从上述数据库创建的json树结构,将来将添加更多父文件夹和子文件夹。是否可以从上面的表结构中创建json树?有人能帮我吗?

  • 本文向大家介绍JavaScript从JSON数据创建数组?,包括了JavaScript从JSON数据创建数组?的使用技巧和注意事项,需要的朋友参考一下 要根据JSON数据创建数组,请使用from JavaScript的概念。假设以下是我们的数据- 以下是根据上述数据创建数组的代码- 示例 要运行上述程序,您需要使用以下命令- 在这里,我的文件名为demo82.js。 输出结果 这将产生以下输出-

  • 问题内容: 是否可以从Java创建MySQL数据库? 我只看过这样的连接URL示例,其中在URL中指定了数据库名称: 当我只有登录名和密码时,如何创建MySQL数据库? 问题答案: jdbc连接中不需要数据库,因此您可以执行以下建议的操作:http://forums.mysql.com/read.php?39,99321,102211#msg-102211和http://marc.info /?l

  • 原文链接:Serverless 应用开发指南:Lambda + API Gateway + DynamoDB 制作 REST API 本文将介绍如何用 AWS Lambda + API Gateway + DynamoDB 创建一个 RESTful API 的示例。文中的示例是一个 TODO API 的示例,支持 GET、POST、PUT、DELETE 请求,即常规的 CRUD。 安装示例项目的命

  • 问题内容: 您能帮忙解决这个问题吗? 我正在尝试创建然后使用一个名为TIGER的数据库。 如果我在MySQL中创建数据库并且运行完美,我没有问题。 我想做的是从Java创建它。这样,当首次运行代码时,它将在初始启动过程中创建数据库。如果可能的话,我想用一种干净的方法将其装箱。 有人可以告诉我您实际将代码放置在哪里 这是代码 这是创建数据库的代码 在此先感谢,感谢您的帮助。 因为我是一个长期读者但还

  • 主要内容:创建非限制性数据库,创建限制性数据库命令用于在实例中创建数据库。所有数据库都是使用默认存储组创建的,该存储组是在创建实例时创建的。 在DB2中,所有数据库表都存储在中,后者使用各自的存储组。 创建非限制性数据库 命令用于创建非限制性数据库。 语法: 示例 假设要创建一个名称为“XYZ”的数据库 安装后,切换到用户才有权创建新数据库。根据安装的版本,可能会更改该用户名。 但DB2默认使用作为管理员用户。 查看目录,将看到一个新用户(最