从 Sql VB.NET System.Data.OleDb.OleDbException 检索 "Number":'Data type mismatch in criteria expression.'
Retrieving "Number" From Sql VB.NET System.Data.OleDb.OleDbException: 'Data type mismatch in criteria expression.'
如果我想检索在访问数据库中保存为数字的值。
我正在使用以下内容:
Dim sql As String = "SELECT ArithmeticScore FROM " & tablename & " WHERE DateAscending = '" & todaysdate & "'"
Using connection As New OleDbConnection(getconn)
Using command As New OleDbCommand(sql, connection)
connection.Open()
scorevalue = CDec(command.ExecuteScalar()) 'Data type mismatch in criteria expression.
connection.Close()
End Using
End Using
MsgBox(scorevalue)
getconn
= 连接字符串作为字符串
scorevalue
= 没有十进制
字段 ArithmeticScore
在 table 中设置为 Number
。
现在单元格中的确切值是 50
,但程序应该允许任何小数值。
我收到的错误是 "Data type mismatch in criteria expression"。
错误信息中提到的criteria expression
并不是指ArithmeticScore
的输出。它在谈论 WHERE
子句。 todaysdate
的内容与数据库对 DateAscending
列的期望不匹配。
由于 OleDb 是一个通用的提供程序,我们不知道您正在使用哪种数据库,但是大多数数据库都有办法在 SQL 中获取当前日期值:getdate()
, current_timestamp
, 等。使用该机制可能会解决冲突,并且首先不需要为此使用字符串连接。
Dim sql As String = "SELECT ArithmeticScore FROM " & tablename & " WHERE DateAscending = Date()"
解决此问题的另一种方法是使用适当的参数化查询,无论如何您都应该这样做。 从不 可以使用字符串连接将数据替换为 SQL 查询,如果您发现自己需要考虑如何格式化日期或数字字符串以用于SQL命令,你几乎总是做错事。
如果我想检索在访问数据库中保存为数字的值。
我正在使用以下内容:
Dim sql As String = "SELECT ArithmeticScore FROM " & tablename & " WHERE DateAscending = '" & todaysdate & "'"
Using connection As New OleDbConnection(getconn)
Using command As New OleDbCommand(sql, connection)
connection.Open()
scorevalue = CDec(command.ExecuteScalar()) 'Data type mismatch in criteria expression.
connection.Close()
End Using
End Using
MsgBox(scorevalue)
getconn
= 连接字符串作为字符串
scorevalue
= 没有十进制
字段 ArithmeticScore
在 table 中设置为 Number
。
现在单元格中的确切值是 50
,但程序应该允许任何小数值。
我收到的错误是 "Data type mismatch in criteria expression"。
错误信息中提到的criteria expression
并不是指ArithmeticScore
的输出。它在谈论 WHERE
子句。 todaysdate
的内容与数据库对 DateAscending
列的期望不匹配。
由于 OleDb 是一个通用的提供程序,我们不知道您正在使用哪种数据库,但是大多数数据库都有办法在 SQL 中获取当前日期值:getdate()
, current_timestamp
, 等。使用该机制可能会解决冲突,并且首先不需要为此使用字符串连接。
Dim sql As String = "SELECT ArithmeticScore FROM " & tablename & " WHERE DateAscending = Date()"
解决此问题的另一种方法是使用适当的参数化查询,无论如何您都应该这样做。 从不 可以使用字符串连接将数据替换为 SQL 查询,如果您发现自己需要考虑如何格式化日期或数字字符串以用于SQL命令,你几乎总是做错事。