我最近在我自己的个人笔记本电脑(64 位)上为工作场所的现有系统开发 Windows 窗体(在 VB.NET 中)。一切都工作正常,直到最近我得到了一台更快的笔记本电脑(i7 也是 64 位)。
因此,我将项目文件夹直接从旧笔记本电脑复制到新笔记本电脑,安装了完全相同版本的 Visual Studio 和 MySQL,然后开始工作。
前几个错误涉及 Crystal Report 引用针对与应用程序不同的处理器。经过一番研究后,当我遇到由于 listView“从未声明”而无法加载表单的 [设计] 视图的问题时,我立即通过将目标 CPU 更改为x64解决了该问题。在多次尝试清理和重建解决方案但没有成功后,我最终通过将目标 CPU 更改为AnyCPU来修复它。
但是现在出现了一个更奇怪的问题。
为了方便起见,这是我的代码外观的简化示例:
myConnection.ConnectionString = "Server=localhost;Database=myDB;Uid=root;Password=Root;"
myCommand = myConnection.CreateCommand()
myConnection.Open()
lstDealers.BeginUpdate()
With lstDealers
.View = View.Details
.Scrollable = True
.GridLines = True
.FullRowSelect = True
With .Columns
.Add("MONTH", 50, HorizontalAlignment.Left)
.Add("DEAL NUMBER", -2, HorizontalAlignment.Right)
.Add("DEALER", -2, HorizontalAlignment.Left)
.Add("CLIENT", -2, HorizontalAlignment.Left)
End With
End With
Dim myDataAdapter As MySqlDataAdapter = New MySqlDataAdapter
Dim myDataTable As DataTable
Dim myDataSet As DataSet = New DataSet
myCommand.CommandText = "SELECT MONTH, " +
"DEAL_NO, " +
"DEALER, " +
"CUSTOMER " +
"FROM deals " +
"WHERE MONTH >= '" + searchDate + "' AND HIDDEN = 0 " +
"ORDER BY MONTH, DEAL_NO"
myDataAdapter.SelectCommand = myCommand
myDataAdapter.Fill(myDataSet)
注意最后一行:
myDataAdapter.Fill(myDataSet)
执行就是在这里停止的。似乎没有抛出任何错误或异常。当我单步执行代码时,它在这里返回到数据不完整的表单视图,因为许多代码没有通过该行到达。
我做了一些研究,(这个问题似乎再次与目标处理器有关)并且我尝试将目标CPU更改回x86只是为了看看它是否可以按该行运行,但无济于事。
我什至尝试过:
myConnection.Close()
myDataAdapter.Fill(myDataSet)
myConnection.Open()
但还是什么都没有。
如有任何帮助,我们将不胜感激。
我最终发现执行只是停止的原因是因为即使默认情况下也没有选择异常设置下的适当异常。
我设法让 Visual Studio 显示适当的异常:
按 ctrl + alt + E
检查公共语言运行时例外框以选择其所有子项
卡在数据适配器填充(da.fill)的简单解决方案,只需更改 sql 中的函数或存储过程,然后加载数据,这解决了我的问题....
谢谢你