我在运行select语句时遇到以下错误(使用OleDbCommand)。
我的查询是
SELECT CME
FROM Personnel
WHERE CME = '11349D'
如果objOleDbCom.ExecuteScalar()> 0然后
当我执行上述声明时,我收到了此错误
从字符串“11349D”转换为“Double”类型无效。
我的字段CME数据类型为文字
我的数据库是 Access 2007
我尝试直接在数据库中运行查询,运行正常。
请建议。
感谢。
答案 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
问题解决了