【问题标题】:Sql/ VB.net - Invalid Operation ExceptionSql/VB.net - 无效操作异常
【发布时间】:2017-03-07 03:39:46
【问题描述】:

这是一个数据库驱动的货币转换器,程序必须从数据库中获取汇率并显示它们。我使用 Microsoft Access 创建了数据库,所有数据类型都设置为“货币”,但日期字段为“日期/时间”。

这是我到目前为止所做的。

sql = "SELECT TOP 1 USD,EUR,GBP FROM dbexchangeRates WHERE Date='" & DateTimePicker1.Text.ToString & "'"

    Using connection As New OleDb.OleDbConnection(strConnectionString),
      command As New OleDb.OleDbCommand(sql, connection),
      adapter As New OleDb.OleDbDataAdapter(command)

        connection.Open()

        adapter.Fill(ds, "rates")

        connection.Close()

    End Using

此“在 System.Data.dll 中发生类型为 'System.Data.OleDb.OleDbException' 的异常,但未在用户代码中处理。附加信息:条件表达式中的数据类型不匹配。”当我跑步时出现。 我被告知要运行数据验证,但我不确定我应该使用哪些验证。

谢谢。

【问题讨论】:

    标签: sql vb.net exception oledb type-mismatch


    【解决方案1】:

    问题可能是DateTimePicker1.Text.ToString 没有返回有效日期,这导致查询失败。可能的原因:

    • 这不是日期(我假设选择器强制执行日期值,但仍然可能存在空值或其他内容)。在这种情况下,您需要更改 DateTimePicker1_ValueChanged 来处理这种情况,而不是调用该查询。
    • Excel 中的日期格式与 Access 的预期不符。在这种情况下,您可以更改 Excel 或 Access 中的日期格式(您可以在其他问题中找到很多关于此的帮助,等)。

    要解决这个问题,请使用调试器或简单的打印语句查看sql 的内容。

    当您看到它时,问题可能很明显;如果没有,您也可以尝试在 Access 中手动运行该 sql 语句,看看会发生什么。

    【讨论】:

      猜你喜欢
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      • 2017-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多