【问题标题】:Conversion from string to type 'Double' is not valid从字符串到类型“Double”的转换无效
【发布时间】:2010-03-23 07:07:21
【问题描述】:

在运行 select 语句(使用 OleDbCommand)时出现以下错误。

我的查询是

SELECT CME 
  FROM Personnel 
 WHERE CME = '11349D'

如果 objOleDbCom.ExecuteScalar() > 0 那么

当我执行上述语句时,我得到了这个错误

从字符串“11349D”到类型“Double”的转换无效。

我的字段 CME 数据类型是文本

我的数据库是 Access 2007

我尝试直接在数据库中运行我的查询,它运行良好。

请提出建议。

谢谢。

【问题讨论】:

  • 为什么在 Access 中使用 ADO/OLEDB?它不是 Jet/ACE 数据或任何其他数据源的首选数据访问接口。

标签: ms-access oledbcommand


【解决方案1】:

ExecuteScalar 只返回 sql 返回的表中的第 0 列第 0 行字段。我想你真正想要的是

SELECT COUNT(1) FROM Personnel WHERE CME = '11349D'

【讨论】:

    【解决方案2】:

    double 是一个数字(CME 似乎属于这种类型),而 '11249D' 是一个字符串。它们无法比较。

    当你尝试时会发生什么:

    SELECT CME 
      FROM Personnel 
     WHERE CME = 11349
    

    【讨论】:

    • 如果他的栏目是文本,则无济于事
    • @pdr:他说他正在执行代码,所以我假设(但我可能错了)类型转换错误来自数据库,而不是编译器。由于 '11249D' 是一个字符串,我认为 CME 必须是双精度的。但是,既然我不知道 Access,我可能走错了路??
    • @lexu:按照我的理解,他说 CME 是 Text,它在 If 上失败了。这是有道理的,因为 ExecuteScalar 返回一个对象(字符串“11249D”),然后尝试将其与一个数字(> 0)进行比较。也就是说,我对它甚至可以编译感到有点惊讶。
    • @pdr:我想我们需要 Adnan Badar 提供更多信息才能了解更多信息!
    • @pdr, @lexu:我只是尝试过,实际上我在检查记录是否存在时做错了。我期望通过运行 objOleDbCom.ExecuteScalar() 然后在 if 语句中匹配“If objOleDbCom.ExecuteScalar() > 0 Then”的记录计数
    【解决方案3】:

    CME = '11349D'

    应该是

    CME = 11349

    没有'

    【讨论】:

      【解决方案4】:

      我只是尝试过,实际上我在检查记录是否存在时做错了。

      我期望通过运行 objOleDbCom.ExecuteScalar() 然后在 if 语句中匹配记录数

      "如果 objOleDbCom.ExecuteScalar() > 0 那么"

      现在我正在使用

      Dim _strSelectCME As String = "SELECT CME FROM Personnel WHERE CME = '"
      Public Function IsPersonnelExits(ByVal p_strCME As String) As Boolean
      Dim objOleDbCom As 
          New OleDbCommand(_strSelectCME & p_strCME & "'"
                           , DBRelated.GetDBConnection()
                          )
      
      Dim objObject As Object = objOleDbCom.ExecuteScalar()
      If Not IsNothing(objObject) Then
        Return True    
        Exit Function    
      End If
      Return False
      End Function
      

      问题解决了

      【讨论】:

        猜你喜欢
        • 2011-07-30
        • 2015-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多