Set rs = cmd.Execute
Dim col As Long
While Not rs.EOF
Debug.Print "----------------"
For col = 0 To rs.Fields.Count - 1
Debug.Print CStr(col) & ":" & rs.Fields(col).Name & " - " &
my_cstr(rs(col})
Next col
rs.MoveNext
Wend
cn.CommitTrans
End Sub
ΠΡΠ·ΠΎΠ² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ Π₯Π ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π»Π΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π₯Π Π² ΡΠΎΠΌ ΠΏΠ»Π°Π½Π΅, ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ SQL-Π·Π°ΠΏΡΠΎΡ EXECUTE PROCEDURE... ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠ΅Π· out-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. IBProvider ΡΠ°Π·Π»ΠΈΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ·ΠΎΠ² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ Π₯Π, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΡ ΡΠΈΠ³Π½Π°ΡΡΡΡ SQL-Π·Π°ΠΏΡΠΎΡΠ°. ΠΠ°ΡΡΠ΄Ρ Ρ SQL-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ EXECUTE PROCEDURE..., Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ InterBase, Π² ΡΠ΅ΠΊΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ EXECUTE ... ΠΈ ΠΠ₯ΠΠ‘ ... IBProvider ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π΅Ρ Π² ΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ ΠΏΠΎΠΏΡΡΠΊΡ Π²ΡΠ·ΠΎΠ²Π° ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ Π₯Π ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΡΠ΅ΠΊΡΡ SQL-Π·Π°ΠΏΡΠΎΡΠ° ΠΊ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠΌΡ Ρ InterBase. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ Π₯Π Π½ΡΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ out-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ (ADODB Command Paiameters.Refresh). ΠΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ Π·Π΄Π΅ΡΡ ΡΠ²Π»ΡΡΡΡΡ:
* Π ΡΠ΅ΠΊΡΡΠ΅ Π·Π°ΠΏΡΠΎΡΠ° out-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π΅ ΡΠΏΠΎΠΌΠΈΠ½Π°ΡΡΡΡ
* ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ out-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΠΎΡΠ»Π΅ in-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
* ΠΠ΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π²ΡΠ΅ out-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΡΠ΅ΡΠ΅Π· ADODB. ΡΡΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠ΅ out-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈΠ· Π²ΡΠ΅Π³ΠΎ ΡΠΏΠΈΡΠΊΠ° (ΠΏΡΠΎΠΏΡΡΠΊΠΈ Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ). ΠΡΠΈ ΠΏΡΡΠΌΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ Ρ OLE DB-ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΡ Π²ΡΡ ΠΎΠ΄ΡΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π₯Π, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΡ out-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ.
Π’Π΅ΡΡΠΎΠ²Π°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ employee.gdb Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π³ΠΎΡΠΎΠ²ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π₯Π, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ°Ρ Ρ ΡΠ°Π½ΠΈΠΌΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»Π½ΠΈΠΌΠΎΠΉ Ρ ΡΠ°Π½ΠΈΠΌΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ:
SQL
create procedure sp_calculate_values(x integer,Ρ integer)
returns(valuel integer,value2 varchar(64))
as
begin
valuel=x+y;
value2=x-y;
end
ΠΡΠ·ΠΎΠ² ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»Π½ΠΈΠΌΠΎΠΉ Ρ ΡΠ°Π½ΠΈΠΌΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ SP_CALCULATE_VALUES:
ADODB
Sub sproc_exec()
Dim en As New ADODB.Connection
cn.Open "file name=d:\database\employee.ibp"
cn.BeginTrans
Dim cmd As New ADODB.Command
cmd.ActiveConnection = cn
'Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²
cmd.CommandText = "exec sp_calculate_values(:xl,:x2)"
cmd('x1") =200
cmd("x2") = 100
cmd.Execute
Debug.Print "outl=" & CStr(cmd("valuel"))
Debug.Print "out2=" & CStr(cmd("value2"))
' ΡΠ²Π½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²
cmd.CommandText = "execute sp_calculate_values(?,?)"
cmd.Parameters.Append cmd.CreateParameter(, adlnteger,
adParamlnput, , 200)
cmd.Parameters.Append cmd.CreateParameter(, adlnteger,
adParamlnput, , 300)
cmd.Parameters.Append cmd.CreateParameter("vl", adlnteger,
adParamOutput)
cmd.Parameters.Append cmd.CreateParameter("v2", adBSTR,
adParamOutput)
cmd.Execute
Debug.Print "vl=" & CStr(cmd("vl"))
Debug.Print "v2=" & CStr(cmd("v2"))
Ρn.CommitTrans
End Sub
ΠΡΠΈ ΡΠ²Π½ΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΈΡΠΏΡΡΠ°ΡΡ ΠΌΡΠΎΠ²Π°Π½ ΠΊ'Ρ Π½Π° "ΠΏΡΠΎΡΠ½ΠΎΡΡΡ", Π·Π°Π΄Π°Π² Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ½Π°ΡΠ°Π»Π° out-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΏΠΎΡΠΎΠΌ in-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π‘ΠΠ-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ
Π‘Π°ΠΌΡΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ OLEDB ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π½Π°ΡΠ°Π» ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (application servers). ΠΠ΄Π½Π°ΠΊΠΎ Π½ΠΈΡΡΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ re ΠΆΠ΅ ΡΠ°ΠΌΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΎΠ±ΡΡΠ½ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΠΎΠΉ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΈΡΡΠ΅Π·Π°ΡΡ ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ ΠΈ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΡΡΡΠΎΠ² ΡΠ΅ΡΠ²Π΅ΡΠ° Π±Π°Π· Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ»Ρ ΠΌΠ°Π»ΠΎΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π² ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΈ ΡΠ΅ΡΡΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² Π²ΠΈΠ΄Π΅ Π‘ΠΠ-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΠΎ Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΡ ΡΡΠ΅ΡΡΠΈΠΊΠΎΠΌ ΡΡΡΠ»ΠΎΠΊ. ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ ΠΎΠΏΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ Π‘ΠΠ-ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅, ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
ΠΡΡ ΠΎΠ΄Ρ ΠΈΠ· Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΡΡΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΊΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π½Π° C++, VBA ΠΈ VBScript, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΡΠΊΡΡΡΡ Π‘ΠΠ-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²:
* ΠΡΠ°Π»ΡΠ½ΡΠΉ (dual) ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. ΠΡΠΎΡ ΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Connection Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ADODB-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ. ΠΠ°ΠΊ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ ΡΠ°Π½Π΅Π΅, ADODB.Connection ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ΅ΡΡΠΈΠ΅ΠΉ.
* ΠΠ±ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ (Π½Π°ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ILJnknown) Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ITJnknown ΡΠ΅ΡΡΠΈΠΈ.
* ΠΠ½ΡΡΡΠ΅Π½Π½ΡΡ ΡΠ°Π±ΠΎΡΠ° Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ OLEDB ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΊΠ»Π°ΡΡΠΎΠ² C++. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈΠ·ΠΎΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΎΡ ADODB ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ².
ΠΡΠΈΠ½ΡΠΈΠΏ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΡΠΉ - ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ²Π΅ΡΡΠΈ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ ΡΠΈΡΠ»ΠΎ ΡΠΎΠ·Π΄Π°ΡΡΠΈΡ ΡΡ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠ°Π²Π»ΠΈΠ²Π°ΡΡΠΈΡ ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄. Π’Π°ΠΊ ΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π² ΠΏΠ°ΠΌΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°Π±Π»ΠΈΡ, Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΈ Ρ ΡΠ°Π½ΡΡΠΈΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΠΎΠ΄ ΡΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠΎΠ². Π’ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ ΠΈΠ· Π·Π°ΠΏΡΠΎΡΠΎΠ² Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠΊΠΈ ΡΡΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΡΡΠΎ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅, ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ADODB ΠΈ OLEDB Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π²Π΅ ΡΡΠΈΠ»ΠΈΡΡ:
* construct_adodb_connection - ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ADODB ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π° Π±Π°Π·Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ΅ΡΡΠΈΠΈ;
* get_adodb_session - ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ OLEDB-ΡΠ΅ΡΡΠΈΠΈ, ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ADODB-ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΠΎΡΠΊΡΡΠ²Π°ΡΡΠΈΠ΅ΡΡ Π² ΡΠ²ΡΠ·ΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ IBProvider ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Ρ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π΄ΡΠΎΠ±Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Π°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ InterBase Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ, Π³Π»Π°Π²Π½ΠΎΠ΅ Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΡΠ΅ΡΠ΄ΡΡΠ²ΠΎΠ²Π°ΡΡ. ΠΠ΅ ΡΡΠΎΠΈΡ Π΄Π΅Π»Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ, Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ. ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ 4-5 ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ:
* Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅
* ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ°.
* ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
* ΠΡΠ±ΠΎΡΠΊΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°.
* Π Π°Π·ΡΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ Π³ΡΡΠΏΠΏΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π³ΡΡΠΏΠΏΠΎΠ²Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΈ Π·Π°ΠΏΠΈΡΡ, ΠΎΡΠ΄Π΅Π»Π΅Π½Π½Π°Ρ ΠΎΡ ΡΠ°ΠΌΠΈΡ Π΄Π°Π½Π½ΡΡ .
ΠΡΠ΅ ΠΎΠ΄Π½ΠΎΠΉ Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΠΈΠ΄Π΅Π΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²Π½Π΅ Π³ΡΠ°Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π‘ΠΎΠ³Π»Π°ΡΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° ΠΈ Π‘ΠΠ-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π΅ΡΡΠ°Π²Π½ΠΈΠΌΡΡ ΡΡΠΈΠ»ΠΈΠΉ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅, ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π‘ΠΠ-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ ΡΠ΅ΡΠ΅Π· Π‘ΠΠ-ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ ΠΈ Π½Π° Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΎΡΡΠ°ΡΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ "ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ" Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΡΠΈΠ»Π΅
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Π‘ΠΠ-ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ ΡΠ΅ΡΡΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° (ΡΠΌ. Π³Π»Π°Π²Ρ "Π’Π°Π±Π»ΠΈΡΡ ΠΠ΅ΡΠ²ΠΈΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠΈ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ" (Ρ. 1)). ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠΌΡΡ Π»ΠΈΡΡ IDL-ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ Π΄Π²ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠ· Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° IBProvider I.6.2. Π ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎΡ ΠΊΠΎΠ΄, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, Π»ΡΡΡΠ΅ ΠΎΡΠΎΡΠΌΠΈΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π’ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ADODB ΠΈ OLEDB. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° ΡΠ°Π±ΠΎΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π° GenID Π΄Π»Ρ ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π΄Π»Ρ ΡΠ»ΡΡΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.
IDL-ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ²:
////////////////////////////////////////////////////////////
//interface IDBSessionObject
// ΡcΡΠ°Π½ΠΎΠ²ΠΊΠ°/ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ΅ΠΉ OLEDB-ΡΠ΅ΡΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
[
object,
uuid(98E5AB40-333E-llD6-AC8F-OOAOC907DB93),
pointer_default(unique)
]
interface IDBSessionObject:IUnknown
{
HRESULT SetDBSession([in] lUnknown* pSession);
HRESULT GetDBSession([out]lUnknown** ppSession);
};//interface IDBSessionObject
/////////////////////////////////////////////
//interface IDBGenID
// ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°
[
object,
uuid(98E5AB41-333E-llD6-AC8F-OOAOC907DB93),
dual,
oleautomation,
pointer_default(unique),
nonextensible
]
interface IDBGenID:IDispatch
{
[propput]
HRESULT Connection([in]IDispatch* pConnection);
[propget]
HRESULT Connection([out,retval]IDispatch** ppConnection);
HRESULT Convert([in]BSTR GenName,
[in]LONG Count,
[out,retval]LONG* pResult);
};//interface IDBGenID
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ΅ΡΡΠΈΠΈ:
//m_spADODBConnection - ΡΠ»Π΅Π½ ΠΊΠ»Π°ΡΡΠ°,
// ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ADODB-ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
//m_spSession - ΡΠ»Π΅Π½ ΠΊΠ»Π°ΡΡΠ°,
// ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ OLEDB-ΡΠ΅ΡΡΠΈΡ
//m_Cmd - ΠΊΠΎΠΌΠ°Π½Π΄Π° (t_db_command) ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°
//IDBSessionObject interface ------------------------------
HRESULT _stdcall TDBGenID::SetDBSession(lUnknown* pSession)
{
::SetErrorlnfo(0,NULL);
HRESULT hr=S_OK;
_OLE_TRY_
{
//ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΠΌ ADODB connection
m_spADODBConnection.Release();
m_spSession=pSession;
//ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ
m_Cmd destroy();
}
_OLE_DIS P_CATCHES_
return hr;
}//SetDBSession
HRESULT _stdcall TDBGenID::GetDBSession(lUnknown** ppSession)
{
::SetErrorlnfo(0,NULL);
return m_spSession.CopyTo(ppSession);
}//GetDBSession
//IOC2_ObjectLoader interface -----------
HRESULT _stdcall TDBGenID::put_Connection
(IDispatch* pConnection)
{
::SetErrorInf0(0,NULL);
HRESULT hr=NOERROR;
_OLE_TRY_
{
IDispatchPtr spConnection(pConnection) ; //Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΠΌ Π² ΠΏΠ°ΠΌΡΡΠΈ