【问题标题】:Can't use an sql query in Form.Load无法在 Form.Load 中使用 sql 查询
【发布时间】:2015-04-10 14:36:49
【问题描述】:

我目前正试图在 SQL 方面做得更好,目前我正在开发一个与数据库交互的小型 Windows 窗体程序。我正在使用实体框架来实现这一点。我刚刚遇到了一个我自己似乎无法解决的问题。我正在尝试使用数据库表中的项目填充 ListBox。为此,我的意图是在 Form.Load 期间访问表中的所有条目,然后将它们添加到 ListBox。我遇到的问题是,由于某种原因,当我将 SQL 代码放在 Form.Load 函数中时,它似乎没有执行。如果我创建一个按钮并在点击事件中使用它,它会按预期工作,这就是我有点困惑的原因。代码就这么简单:

这行得通:

    private void btnAdd_Click(object sender, EventArgs e)
    {
        dbConnection db = new dbConnection();

        var heroes = db.Hero.SqlQuery("Select * from Hero").ToList();
    }

这不起作用:

    private void AddMatchForm_Load(object sender, EventArgs e)
    {
        dbConnection db = new dbConnection();

        var heroes = db.Hero.SqlQuery("Select * from Hero").ToList();
    }

【问题讨论】:

  • 获得了“英雄”之后,你会怎么做?据我所知,当它超出范围时它会丢失(除非你错过了一些代码)
  • “不起作用”是什么意思?你有什么例外吗?
  • 您是否尝试在加载 evnt 上添加 breakpoint?
  • _Load 中的异常在 64 位窗口上的 32 位应用程序中被静默吞下,同时调试,包裹在 try/catch 中,看看是否有异常。
  • @AlexK。好的,我添加了 try/catch,现在我得到了异常。所以这就解释了。我进行测试以强制错误的原因是因为表格的内容没有添加到我的列表框中,但我猜我的代码中的其他内容有问题。

标签: c# sql winforms entity-framework


【解决方案1】:

SQL 语句看起来不错。但是您是否曾经调用过 AddMatchForm_Load?仅仅因为您将其命名为“_Load”并不意味着表单实际上已绑定到它。即使你是,你也没有对你的“英雄”变量做任何事情。因此,一旦您离开 AddMatchForm_Load 方法,它就会消失。

【讨论】:

  • 我试过放置一个断点,它确实被调用了。我在那里编写的其他代码按预期工作。在我提供的小代码 sn-p 中,我什么都不做,但我尝试在 SQL 语句中添加随机字符,这应该会产生异常但没有这样做。如果我在点击事件中添加相同的随机字符,我确实会得到那个异常
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
  • 2019-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多