2015-02-10 72 views
1

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

这个工程:

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

一旦你拥有了“英雄”,你会怎么做?据我所见,当它超出范围时将会丢失(除非你缺少一些代码) – Andrew 2015-02-10 14:13:21

+1

你是什么意思的“不工作”?你有一些例外吗? – 2015-02-10 14:14:02

+1

你试过在load evnt上放一个'breakpoint'吗? – Rohit 2015-02-10 14:14:10

回答

0

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

+0

我试过放置一个中断点,它确实被调用。我在那里写的其他代码按预期工作。在我提供的小代码片段中,我什么也没做,但是我尝试在SQL语句中添加随机字符,这应该会产生一个异常,但不会这样做。如果我在click事件中添加相同的随机字符,确实会得到该异常 – 2015-02-10 14:19:39