【问题标题】:SQL Server query: Uncaught TypeError: content is nullSQL Server 查询:未捕获的类型错误:内容为空
【发布时间】:2022-01-27 23:50:37
【问题描述】:

我想做的是从我的数据库中查询并填充我的Index.cshtml 中的列。

下面是我的代码:

这是来自我的HomeController

SqlConnection con = new SqlConnection("Data Source=LAPTOP;Initial Catalog=SchedulerEvent;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework");

public JsonResult GetEvents()
{
    con.Open();

    SqlCommand command = new SqlCommand("SELECT * FROM Event", con);
    command.ExecuteNonQuery();
    var events = command;
    return new JsonResult { Data = events, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}

这是我的数据库的样子:

进一步检查显示它为空的区域

我在我的前端控制台登录,下面的图片就是它打印的内容:

这不应该是这样,因为我的查询是SELECT * FROM Event,但它没有获取我的表的内容。

但问题是,正如您从我的数据库截图中看到的那样,Subject 列不是空的或 null。

感谢任何建议

【问题讨论】:

  • 看起来你所做的只是打开连接,实际从数据库中获取事件的查询在哪里?
  • 我编辑了我的答案以包括从我的数据库中查询的命令,仍然有同样的错误
  • 您是否添加了断点以确保将某些内容发送回视图?如果是这样,我会在读取内容之前使用 debugger; 以查看您拥有的值以及客户端数据的结构。
  • 显然是在打印连接对象,而不是查询结果。您需要存储执行实际查询的结果。请参阅 SqlCommand 的文档。
  • 您正在使用.ExecuteNonQuery() - 但这仅适用于您执行UPDATEDELETEINSERT - 任何不返回结果集的操作。在这里,使用SELECT,您想要将数据作为结果集取回 - 因此您需要使用 ExecuteReader(然后遍历返回的行) - 或使用类似可以为您处理所有细节的低级代码的 Dapper!

标签: c# asp.net-mvc-4 sqlcommand


【解决方案1】:

您正在返回“SqlCommand”类型的“命令”,它不包含查询返回的结果/数据。

你需要实现 ExecuteReader()

using (SqlDataReader oReader = command.ExecuteReader())
{
    while (oReader.Read())
    {
        // prepare your object to return here.
        Console.WriteLine(oReader["EventId"].ToString());
        Console.WriteLine(oReader["Subject"].ToString());
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-09
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多