使用SQL从Access数据库中选择一个整数

时间:2010-12-03 03:50:20

标签: sql vb.net

尝试使用VB中的SQL语句从Access数据库中选择一个整数

Dim cmdAutoTypes As New OleDbCommand
Dim AutoTypesReader As OleDbDataReader

cmdAutoTypes.CommandText = "SELECT * FROM AutoTypes WHERE TypeId = '" & cboTypeIds.Text & "'"

AutoTypesReader = cmdAutoTypes.ExecuteReader

错误消息说:“OleDbException未处理:条件表达式中的数据类型不匹配。”并指向AutoTypesReader = cmdAutoTypes.ExecuteReader行

5 个答案:

答案 0 :(得分:1)

而是使用OleDbParameter Class

这也将避免Sql Injection

答案 1 :(得分:0)

您不需要查询字符串中的引号。你正在搜索一个数字,而不是一个字符串。

cmdAutoTypes.CommandText = "SELECT * FROM AutoTypes WHERE TypeId = " & cboTypeIds.Text

答案 2 :(得分:0)

您好在访问SQL中,您不能在整数类型周围使用单引号。

所以 命令文本将是..“SELECT * FROM AutoTypes WHERE TypeId =”& cboTypeIds.Text& “和......”

答案 3 :(得分:0)

在Access SQL中,不要引用数字常量。

并测试是否IsNull(cboTypeIds)。在选择值之前,您无法执行您计划执行的操作。

答案 4 :(得分:0)

在构建SQL查询时不要使用字符串连接,而是使用参数。

Dim cmd As OledbCommand = Nothing
Dim reader as OleDbDataReader = Nothing
Try
    Dim query As String = "SELECT * FROM AutoTypes WHERE TypeId = @Id"
    cmd = New OledbCommand(query, connection)
    //adding parameter implicitly
    cmd.Parameters.AddWithValue("@Id", cboTypeIds.Text)
    reader = cmd.ExecuteReader()
Catch ex As Exception
    Messagebox.Show(ex.Message, MsgBoxStyle.Critical)
End Try

您还可以明确说明参数数据类型。

cmd.Parameters.Add("@Id", OleDbType.Integer).Value = cboTypeIds.Text

希望这有帮助。