0

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

我的查询是

SELECT CME 
  FROM Personnel 
 WHERE CME = '11349D'

如果 objOleDbCom.ExecuteScalar() > 0 那么

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

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

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

我的数据库是Access 2007

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

请建议。

谢谢。

4

4 回答 4

1

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

SELECT COUNT(1) FROM Personnel WHERE CME = '11349D'
于 2010-03-23T07:14:59.333 回答
0

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

当您尝试时会发生什么:

SELECT CME 
  FROM Personnel 
 WHERE CME = 11349
于 2010-03-23T07:11:51.260 回答
0

其中 CME = '11349D'

应该

其中芝商所 = 11349

不 '

于 2010-03-23T07:13:42.957 回答
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

问题解决了

于 2010-03-23T09:25:33.337 回答