Mercurial > pub > bltoolkit
comparison Source/Data/DataProvider/OleDbDataProvider.cs @ 0:f990fcb411a9
Копия текущей версии из github
author | cin |
---|---|
date | Thu, 27 Mar 2014 21:46:09 +0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:f990fcb411a9 |
---|---|
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 } |