参数化 SQL SELECT 语句

Paramterising an SQL SELECT statement

我最近一直在对我的 SQL 语句进行参数化处理,并成功地为我的 INSERTUPDATEDELETE 查询做到了这一点。但是,我正在努力用 SELECT 这样做......有人能帮助我吗?我觉得是因为我用的是 OleDbDataAdapter,而不是 OleDbCommand?

    Public Shared Function getPerson(ByVal personID As Integer, m_cn As OleDbConnection)

    Dim Dt As New DataTable

    Dim Da As New OleDbDataAdapter
    Da = New OleDbDataAdapter("SELECT * FROM tblPerson WHERE personID = " & personID, m_cn)

    Da.Fill(Dt)

    Return Dt

End Function

OleDbDataAdapter.SelectCommand 具有用于 select 记录的 SQL 语句(或存储过程)的参数:

Using da = New OleDbDataAdapter("SELECT * FROM tblPerson WHERE personID = @PersonID", m_cn)
    da.SelectCommand.Parameters.Add("@PersonID", OleDbType.Integer).Value = personID
    Da.Fill(Dt)
End Using

我建议不要重复使用该连接(甚至 static/shared),因为这会导致各种问题。而是在任何需要的地方创建、打开和使用它,因此在这种方法中,最好使用 Using 语句来确保即使在出现错误的情况下它也会被关闭。