/
SqlFactoryAbstract.prg
149 lines (109 loc) · 4.35 KB
/
SqlFactoryAbstract.prg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
//
// Copyright (c) XSharp B.V. All Rights Reserved.
// Licensed under the Apache License, Version 2.0.
// See License.txt in the project root for license information.
//
USING System.Data
USING System.Data.Odbc
USING System.Data.Common
USING System.Reflection
USING System.Text
USING System.Runtime.InteropServices
/// <summary>This is the base class for most ISqlFactory implementations.</summary>
/// <remarks>This class creates connections, commands etc by calling the appropriate methods on a protected DbProvider instance.</remarks>
ABSTRACT CLASS XSharp.Data.AbstractSqlFactory IMPLEMENTS XSharp.Data.ISqlFactory
#region Static
STATIC PROPERTY DefaultFactory AS ISqlFactory AUTO
STATIC CONSTRUCTOR
DefaultFactory := OdbcFactory{}
#endregion
PROTECTED oInstance AS System.Data.Common.DbProviderFactory
/// <inheritdoc />
VIRTUAL PROPERTY QuoteChar AS STRING GET ""
/// <inheritdoc />
VIRTUAL PROPERTY Name AS STRING GET "AbstractFactory"
/// <inheritdoc />
VIRTUAL PROPERTY ParameterPrefix AS CHAR GET c"?"
/// <inheritdoc />
VIRTUAL PROPERTY ParameterNameInQuery AS LOGIC GET FALSE
/// <inheritdoc />
VIRTUAL PROPERTY CanCreateDataSourceEnumerator AS LOGIC GET oInstance:CanCreateDataSourceEnumerator
CONSTRUCTOR
oInstance := NULL
/// <inheritdoc />
VIRTUAL METHOD CreateConnection AS DbConnection
RETURN oInstance:CreateConnection()
/// <inheritdoc />
VIRTUAL METHOD CreateCommand AS DbCommand
RETURN oInstance:CreateCommand()
/// <inheritdoc />
VIRTUAL METHOD CreateCommandBuilder AS DbCommandBuilder
RETURN oInstance:CreateCommandBuilder()
/// <inheritdoc />
VIRTUAL METHOD CreateParameter AS DbParameter
RETURN oInstance:CreateParameter()
/// <inheritdoc />
VIRTUAL METHOD CreateDataAdapter AS DbDataAdapter
RETURN oInstance:CreateDataAdapter()
/// <inheritdoc />
VIRTUAL METHOD CreateConnectionStringBuilder AS DbConnectionStringBuilder
RETURN oInstance:CreateConnectionStringBuilder()
/// <inheritdoc />
VIRTUAL METHOD CreateDataSourceEnumerator() AS DbDataSourceEnumerator
RETURN oInstance:CreateDataSourceEnumerator()
/// <inheritdoc />
VIRTUAL METHOD AfterConnect(oConnection AS DbConnection) AS VOID
RETURN
/// <inheritdoc />
VIRTUAL METHOD BeforeConnect(cString AS STRING, cUser AS STRING, cPassword AS STRING) AS STRING
IF !cString:Contains("=") .AND. ! String.IsNullOrEmpty(cString)
cString := "DSN="+cString+";"
ENDIF
IF !String.IsNullOrEmpty(cUser)
cString += "UID="+cUser+";"
ENDIF
IF !String.IsNullOrEmpty(cPassword)
cString += "PWD="+cPassword+";"
ENDIF
RETURN cString
/// <inheritdoc />
VIRTUAL METHOD BeforeDisConnect(oConnection AS DbConnection) AS VOID
RETURN
/// <inheritdoc />
VIRTUAL METHOD AfterDisConnect(oConnection AS DbConnection) AS VOID
RETURN
/// <inheritdoc />
VIRTUAL METHOD BeforeRollBack(oConnection AS DbTransaction) AS VOID
RETURN
/// <inheritdoc />
VIRTUAL METHOD AfterRollBack(oConnection AS DbTransaction) AS VOID
RETURN
/// <inheritdoc />
VIRTUAL METHOD BeforeCommit(oConnection AS DbTransaction) AS VOID
RETURN
/// <inheritdoc />
VIRTUAL METHOD AfterCommit(oConnection AS DbTransaction) AS VOID
RETURN
/// <inheritdoc />
VIRTUAL METHOD GetName(oConn AS DbConnection) AS STRING
RETURN oConn:GetType():FullName
/// <inheritdoc />
VIRTUAL METHOD DriverConnect(hWindow AS IntPtr, uCompletion AS OBJECT, cConnectionString AS OBJECT) AS STRING
RETURN ""
/// <inheritdoc />
VIRTUAL METHOD EnhanceException(oEx AS System.Exception) AS System.Exception
RETURN oEx
/// <inheritdoc />
VIRTUAL METHOD HandleSpecialValue(oValue AS OBJECT, oFS AS OBJECT, lDateTimeAsDate AS LOGIC) AS OBJECT
RETURN oValue
/// <inheritdoc />
VIRTUAL METHOD TranslateStatement(cStatement AS STRING) AS STRING
RETURN cStatement
/// <inheritdoc />
VIRTUAL METHOD AfterOpen(oDataReader AS DbDataReader) AS DbDataReader
RETURN oDataReader
/// <inheritdoc />
ABSTRACT METHOD GetMetaDataColumnValues(oRow AS DataRow) AS OBJECT[]
/// <inheritdoc />
ABSTRACT METHOD GetMetaDataTableValues(oRow AS DataRow) AS OBJECT[]
END CLASS