0
|
1 using System;
|
|
2 using System.Data;
|
|
3 using System.Data.Common;
|
|
4 using System.Data.OleDb;
|
|
5
|
|
6 namespace BLToolkit.Data.DataProvider
|
|
7 {
|
|
8 using Sql.SqlProvider;
|
|
9
|
|
10 /// <summary>
|
|
11 /// Implements access to the Data Provider for OLE DB.
|
|
12 /// </summary>
|
|
13 /// <remarks>
|
|
14 /// See the <see cref="DbManager.AddDataProvider(DataProviderBase)"/> method to find an example.
|
|
15 /// </remarks>
|
|
16 /// <seealso cref="DbManager.AddDataProvider(DataProviderBase)">AddDataManager Method</seealso>
|
|
17 public class OleDbDataProvider : DataProviderBase
|
|
18 {
|
|
19 /// <summary>
|
|
20 /// Creates the database connection object.
|
|
21 /// </summary>
|
|
22 /// <remarks>
|
|
23 /// See the <see cref="DbManager.AddDataProvider(DataProviderBase)"/> method to find an example.
|
|
24 /// </remarks>
|
|
25 /// <seealso cref="DbManager.AddDataProvider(DataProviderBase)">AddDataManager Method</seealso>
|
|
26 /// <returns>The database connection object.</returns>
|
|
27 public override IDbConnection CreateConnectionObject()
|
|
28 {
|
|
29 return new OleDbConnection();
|
|
30 }
|
|
31
|
|
32 /// <summary>
|
|
33 /// Creates the data adapter object.
|
|
34 /// </summary>
|
|
35 /// <remarks>
|
|
36 /// See the <see cref="DbManager.AddDataProvider(DataProviderBase)"/> method to find an example.
|
|
37 /// </remarks>
|
|
38 /// <seealso cref="DbManager.AddDataProvider(DataProviderBase)">AddDataManager Method</seealso>
|
|
39 /// <returns>A data adapter object.</returns>
|
|
40 public override DbDataAdapter CreateDataAdapterObject()
|
|
41 {
|
|
42 return new OleDbDataAdapter();
|
|
43 }
|
|
44
|
|
45 /// <summary>
|
|
46 /// Populates the specified <see cref="IDbCommand"/> object's Parameters collection with
|
|
47 /// parameter information for the stored procedure specified in the <see cref="IDbCommand"/>.
|
|
48 /// </summary>
|
|
49 /// <remarks>
|
|
50 /// See the <see cref="DbManager.AddDataProvider(DataProviderBase)"/> method to find an example.
|
|
51 /// </remarks>
|
|
52 /// <seealso cref="DbManager.AddDataProvider(DataProviderBase)">AddDataManager Method</seealso>
|
|
53 /// <param name="command">The <see cref="IDbCommand"/> referencing the stored procedure for which
|
|
54 /// the parameter information is to be derived. The derived parameters will be
|
|
55 /// populated into the Parameters of this command.</param>
|
|
56 public override bool DeriveParameters(IDbCommand command)
|
|
57 {
|
|
58 OleDbCommandBuilder.DeriveParameters((OleDbCommand)command);
|
|
59 return true;
|
|
60 }
|
|
61
|
|
62 public override object Convert(object value, ConvertType convertType)
|
|
63 {
|
|
64 switch (convertType)
|
|
65 {
|
|
66 case ConvertType.NameToQueryParameter:
|
|
67 case ConvertType.NameToCommandParameter:
|
|
68 case ConvertType.NameToSprocParameter:
|
|
69 return "@" + value;
|
|
70
|
|
71 case ConvertType.NameToQueryField:
|
|
72 case ConvertType.NameToQueryFieldAlias:
|
|
73 case ConvertType.NameToQueryTableAlias:
|
|
74 {
|
|
75 var name = value.ToString();
|
|
76
|
|
77 if (name.Length > 0 && name[0] == '[')
|
|
78 return value;
|
|
79 }
|
|
80
|
|
81 return "[" + value + "]";
|
|
82
|
|
83 case ConvertType.NameToDatabase:
|
|
84 case ConvertType.NameToOwner:
|
|
85 case ConvertType.NameToQueryTable:
|
|
86 {
|
|
87 var name = value.ToString();
|
|
88
|
|
89 if (name.Length > 0 && name[0] == '[')
|
|
90 return value;
|
|
91
|
|
92 if (name.IndexOf('.') > 0)
|
|
93 value = string.Join("].[", name.Split('.'));
|
|
94 }
|
|
95
|
|
96 return "[" + value + "]";
|
|
97
|
|
98 case ConvertType.SprocParameterToName:
|
|
99 if (value != null)
|
|
100 {
|
|
101 var str = value.ToString();
|
|
102 return str.Length > 0 && str[0] == '@'? str.Substring(1): str;
|
|
103 }
|
|
104
|
|
105 break;
|
|
106
|
|
107 case ConvertType.ExceptionToErrorNumber:
|
|
108 if (value is OleDbException)
|
|
109 {
|
|
110 var ex = (OleDbException)value;
|
|
111 if (ex.Errors.Count > 0)
|
|
112 return ex.Errors[0].NativeError;
|
|
113 }
|
|
114
|
|
115 break;
|
|
116 }
|
|
117
|
|
118 return value;
|
|
119 }
|
|
120
|
|
121 public override ISqlProvider CreateSqlProvider()
|
|
122 {
|
|
123 throw new NotSupportedException();
|
|
124 }
|
|
125
|
|
126 /// <summary>
|
|
127 /// Returns connection type.
|
|
128 /// </summary>
|
|
129 /// <remarks>
|
|
130 /// See the <see cref="DbManager.AddDataProvider(DataProviderBase)"/> method to find an example.
|
|
131 /// </remarks>
|
|
132 /// <seealso cref="DbManager.AddDataProvider(DataProviderBase)">AddDataManager Method</seealso>
|
|
133 /// <value>An instance of the <see cref="Type"/> class.</value>
|
|
134 public override Type ConnectionType
|
|
135 {
|
|
136 get { return typeof(OleDbConnection); }
|
|
137 }
|
|
138
|
|
139 public const string NameString = DataProvider.ProviderName.OleDb;
|
|
140
|
|
141 /// <summary>
|
|
142 /// Returns the data provider name.
|
|
143 /// </summary>
|
|
144 /// <remarks>
|
|
145 /// See the <see cref="DbManager.AddDataProvider(DataProviderBase)"/> method to find an example.
|
|
146 /// </remarks>
|
|
147 /// <seealso cref="DbManager.AddDataProvider(DataProviderBase)">AddDataProvider Method</seealso>
|
|
148 /// <value>Data provider name.</value>
|
|
149 public override string Name
|
|
150 {
|
|
151 get { return NameString; }
|
|
152 }
|
|
153 }
|
|
154 }
|