这个 OleDbReader 有什么问题?

What is wrong with this OleDbReader?

在 VB 工作,我正在连接到一个访问数据库,并且需要从 table.

中获取一个值
    user = Environment.UserName
    command.CommandText = "SELECT 'nid', 'UserName' FROM qryUSERJOBS WHERE UserName = " & user
    command.Connection = connect
    Using reader As OleDbDataReader = command.ExecuteReader()
        While reader.Read()
            record = reader("nid").ToString
        End While
    End Using

当我的代码进入 Using 语句时,会创建 reader,并且我的 win 表单会立即显示,而无需读取数据库或点击包含的例程的 End Sub它。有什么想法吗?

将代码放入 Try...Catch 块后,我收到有关我的参数的错误。我的 user 变量需要单引号。

代码修复:

    user = Environment.UserName
    command.CommandText = "SELECT nid, UserName FROM qryUSERJOBS WHERE UserName = '" & user & "'"
    command.Connection = connect
    connect.Open()
    Try
        Using reader As OleDbDataReader = command.ExecuteReader()
            While reader.Read()
                record = reader("nid").ToString
            End While
        End Using
    Catch ex As Exception

    End Try

感谢大家的帮助和建议!

  • 使用参数化查询
  • 避免sql注入
  • 避免像这样的引用错误
  • 利用一次性物品

Using connect As New OleDbConnection(connectionString)
    connect.Open()
    Using command As New SqlCommand(
    "SELECT nid, UserName FROM qryUSERJOBS WHERE UserName = @user", 
    connect)
        user = Environment.UserName
        command.Parameters.Add(New OleDbParameter("@user", user))

        Using reader As OleDbDataReader = command.ExecuteReader()
            While reader.Read()
                record = reader("nid").ToString
            End While
        End Using

    End Using
End Using