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

时间:2010-03-23 07:07:22

标签: ms-access oledbcommand

我在运行select语句时遇到以下错误(使用OleDbCommand)。

我的查询是

SELECT CME 
  FROM Personnel 
 WHERE CME = '11349D'

如果objOleDbCom.ExecuteScalar()> 0然后

当我执行上述声明时,我收到了此错误

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

我的字段CME数据类型为文字

我的数据库是 Access 2007

我尝试直接在数据库中运行查询,运行正常。

请建议。

感谢。

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

尝试时会发生什么:

SELECT CME 
  FROM Personnel 
 WHERE CME = 11349

答案 2 :(得分:0)

WHERE CME ='11349D'

应该是

WHE CME = 11349

不'

答案 3 :(得分:0)

我刚试过,实际上我正在以错误的方式检查记录是否存在。

我期望通过运行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

问题解决了