Prepared Statements adalah

Prepared Statements adalah

Prepared Statements adalah

Prepared Statements adalah

Stored Procedure yang terdapat didalam database server adalah sebuah statement SQL yang sudah di-compiled oleh Database server tersebut (pre-compiled SQL Statement). Statement tersebut sudah dipersiapkan dan ditentukan rencana eksekusinya (Execution Plan) oleh database engine. Tetapi setiap database server mempunyai mekanisme yang berbeda dalam menangani stored procedure, sehingga tidak begitu portable.

Dengan menggunakan ODBC API, RDO dan ADO, kita dapat membuat sebuah prepared statements yang mensimulasikan sebuah stored procedure. Perpared statement adalah sebuah statement SQL yang dibuat oleh Visual Basic dan dikirimkan ke database server untuk di-compile dan dieksekusi. Tetapi statement tersebut tidak akan “dibuang” oleh database server sampai connection diputus. Prepared statement sangat cocok digunakan untuk meng-eksekusi perintah SQL yang sering digunakan didalam aplikasi.

Perbedaan waktu eksekusi

Sekarang marilah kita lihat perbedaan waktu yang diperlukan oleh sebuah perintah SQL biasa vs prepared statement.

Private Sub cmdTimings_Click()
Dim cmdPrep As New Command
Dim cmdNonPrep As New Command
Dim connPrep As New Connection
Dim connNonPrep As New Connection

Dim strSQL As String
Dim sngStart As Single
Dim sngEnd As Single
Dim intLoop As Integer

Dim strConn As String

strConn = “Provider = sqloledb” & _
“;Data Source = (local)” & _
“;Initial Catalog = Barang” & _
“;User Id = sa” & tblOptions!UserID & _
“;Password = xxx”

Set connPrep = New ADODB.Connection
Set connNonPrep = New ADODB.Connection

Const conNumber As Integer = 100

‘Ingat: Gunakan 2 buah Connection yang berbeda untuk setiap statement
‘agar mendapatkan waktu yang akurat

Screen.MousePointer = vbHourglass
cmdTimings.Enabled = False

strSQL = “Select * FROM tblBarang”

‘Membuat Non-Prepared Command Object
connNonPrep.ConnectionString = strConn
connNonPrep.Open
With cmdNonPrep
Set .ActiveConnection = connNonPrep
.CommandText = strSQL
.Prepared = False
End With

‘Eksekusi SQL Statement (Looping) sebanyak 100 kali
sngStart = Timer
For intLoop = 1 To conNumber
cmdNonPrep.Execute
Next intLoop
sngEnd = Timer
msgBox “Waktu yang dibutuhkan adalah: ” & sngEnd – sngStart
Set cmdNonPrep.ActiveConnection = Nothing
Set cmdNonPrep = Nothing

‘Membuat Prepared Statements Command Object
connPrep.ConnectionString = strConn
connPrep.Open
With cmdPrep
Set .ActiveConnection = connPrep
.CommandText = strSQL
.Prepared = True
End With

‘Eksekusi SQL Statement (Looping) sebanyak 100 kali
sngStart = Timer
For intLoop = 1 To conNumber
cmdPrep.Execute
Next intLoop
sngEnd = Timer
msgBox “Waktu yang dibutuhkan adalah: ” & sngEnd – sngStart
Set cmdPrep.ActiveConnection = Nothing
Set cmdPrep = Nothing

Screen.MousePointer = vbDefault
cmdTimings.Enabled = True

Sumber : https://usgsprojects.org/