using (SqlDataReader sdr = cmd.ExecuteReader())
{
try
{
while(sdr.Read()) //进入while循环之后,窗体一闪而过
{
provin P1 = new provin();
P1.pro = sdr.GetString(sdr.GetOrdinal("proName"));
P1.city = sdr.GetString(sdr.GetOrdinal("cityName"));
cbPro.Items.Add(P1.pro);
}
sdr.Close();
}
catch
{
MessageBox.Show("报错");
}
}
如上所述当进入while循环后,窗体一闪而过,究竟是什么原因,求指导?
其中个provin是一个自定义类:
public class provin
{
public string pro { get; set; }
public string city { get; set; }
}
你是用的控制台吗?如果没有Console.ReadKey();中断的话,是会一闪而过的哦~
不是,是winform把数据库的数据加载到combox控件列表
不是,是winform把数据库的数据加载到combox控件列表
@ljzh: 具体不了解。你可以试试将sdr.GetString(sdr.GetOrdinal("proName")); 改为sdr["proName"].ToString();
刚才那个连接字符错了,也是这样,但是改过来,运行这代码也是这样。
@ljzh: 你用try catch把整个方法全部包裹,看报什么错误,现在的错误太不明显了....
先把断点下到cbPro.Items.Add(P1.pro); 后面的大括号,还有catch中放个断点,看看items有值没,我怀疑你都没查询出来东西
如果到数据库的连接正常,单从你这块代码看暂时没发现什么问题,需要整体逻辑
我经常遇到LZ说的问题.我觉得是正常情况.以下是自己的分析,有达人看到的话希望指点一二,不要误人子弟。
在页面/界面绑定数据库的东西时,比如下拉框、list等等,在执行到读数据时,界面总会一闪而过,个人感觉,应该是多线程引起。读库是一个后台线程,而界面是一个前台线程,界面的绑定数据操作 调用了后台的读库,异步回调实现把拿到的数据和控件绑定,拿数据时激活了前台线程,但前台暂时无任务,自动放弃CPU时间片,而后台程序有任务,再次激活,造成一闪而过。