参数化 SQL SELECT 语句
Paramterising an SQL SELECT statement
我最近一直在对我的 SQL 语句进行参数化处理,并成功地为我的 INSERT
、UPDATE
和 DELETE
查询做到了这一点。但是,我正在努力用 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
语句来确保即使在出现错误的情况下它也会被关闭。
我最近一直在对我的 SQL 语句进行参数化处理,并成功地为我的 INSERT
、UPDATE
和 DELETE
查询做到了这一点。但是,我正在努力用 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
语句来确保即使在出现错误的情况下它也会被关闭。