【问题标题】:dataAdapter.Fill(dataSet) stops executing for no apparent reasondataAdapter.Fill(dataSet) 无故停止执行
【发布时间】:2016-03-15 21:06:55
【问题描述】:

我最近在自己的个人笔记本电脑(64 位)上为我工作场所的现有系统开发 Windows 窗体(在 VB.NET 中)。一切正常,直到我最近获得了一台速度更快的笔记本电脑(i7 也是 64 位)。

所以我直接将项目文件夹从旧笔记本电脑复制到新笔记本电脑,安装了完全相同版本的 Visual Studio 和 MySQL,然后开始工作。

最初的几个错误涉及 Crystal Report 引用的目标处理器与应用程序的处理器不同。经过一番研究后,我通过将 Target CPU 更改为 x64 迅速解决了这个问题,但我遇到了 Form 的 [Design] View 无法加载的问题,因为 listViews “从未声明过”。在多次尝试清理和重建解决方案但没有成功后,我最终通过将目标 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()

但还是什么都没有。

任何帮助将不胜感激。

【问题讨论】:

  • 将代码放在 Try...Catch 语句中......如果有异常消息,则显示异常消息。
  • 代码在哪里?如果它在表单加载事件中,则可能存在您没有看到的异常。插入关于连接 SQL 而不是 SQL 参数并将日期视为字符串的标准警告
  • 您能否使用 Visual Studio 中的服务器资源管理器连接到数据库,并将生成的文本作为查询运行,然后查看返回的内容?如果适配器正在播放,这应该是一个好主意,如果是这样,您可能有损坏的 mySqlAdapter 安装。
  • 好吧,所以我添加了一个 Try...Catch 语句并显示异常“'where 子句'中的未知列'HIDDEN'”。太棒了!我现在知道为什么执行停止了,但我不明白为什么如果我不必使用 Try...Catch 就不会“显示”异常?

标签: mysql vb.net processor


【解决方案1】:

我最终发现执行只是停止的原因是因为没有选择 Exception Settings 下的适当异常,即使是默认情况也是如此。

我设法让 Visual Studio 通过以下方式显示适当的异常:

  1. ctrl + alt + E

  2. 选中 Common Language Runtime Exceptions 框以选择其所有子项

【讨论】:

    猜你喜欢
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 2021-11-25
    • 2020-03-05
    • 2016-04-09
    • 1970-01-01
    相关资源
    最近更新 更多