annotate Source/Data/DataProvider/OdbcDataProvider.cs @ 9:1e85f66cf767 default tip

update bltoolkit
author nickolay
date Thu, 05 Apr 2018 20:53:26 +0300
parents f990fcb411a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Data;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using System.Data.Common;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using System.Data.Odbc;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 namespace BLToolkit.Data.DataProvider
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 using Sql.SqlProvider;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 /// <summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 /// Implements access to the Data Provider for ODBC.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 /// </summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 /// <remarks>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 /// See the <see cref="DbManager.AddDataProvider(DataProviderBase)"/> method to find an example.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 /// </remarks>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 /// <seealso cref="DbManager.AddDataProvider(DataProviderBase)">AddDataManager Method</seealso>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 public class OdbcDataProvider : DataProviderBase
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 /// <summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 /// Creates the database connection object.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 /// </summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 /// <remarks>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 /// See the <see cref="DbManager.AddDataProvider(DataProviderBase)"/> method to find an example.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 /// </remarks>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 /// <seealso cref="DbManager.AddDataProvider(DataProviderBase)">AddDataManager Method</seealso>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 /// <returns>The database connection object.</returns>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 public override IDbConnection CreateConnectionObject()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 return new OdbcConnection();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 /// <summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 /// Creates the data adapter object.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 /// </summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 /// <remarks>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 /// See the <see cref="DbManager.AddDataProvider(DataProviderBase)"/> method to find an example.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 /// </remarks>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 /// <seealso cref="DbManager.AddDataProvider(DataProviderBase)">AddDataManager Method</seealso>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 /// <returns>A data adapter object.</returns>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 public override DbDataAdapter CreateDataAdapterObject()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 return new OdbcDataAdapter();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 /// <summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 /// Populates the specified <see cref="IDbCommand"/> object's Parameters collection with
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 /// parameter information for the stored procedure specified in the <see cref="IDbCommand"/>.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 /// </summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 /// <remarks>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 /// See the <see cref="DbManager.AddDataProvider(DataProviderBase)"/> method to find an example.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 /// </remarks>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 /// <seealso cref="DbManager.AddDataProvider(DataProviderBase)">AddDataManager Method</seealso>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 /// <param name="command">The <see cref="IDbCommand"/> referencing the stored procedure for which the parameter
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 /// information is to be derived. The derived parameters will be populated into
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 /// the Parameters of this command.</param>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 public override bool DeriveParameters(IDbCommand command)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 OdbcCommandBuilder.DeriveParameters((OdbcCommand)command);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 return true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 public override object Convert(object value, ConvertType convertType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 switch (convertType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 case ConvertType.ExceptionToErrorNumber:
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 if (value is OdbcException)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 var ex = (OdbcException)value;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 if (ex.Errors.Count > 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 return ex.Errors[0].NativeError;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 return base.Convert(value, convertType);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 public override ISqlProvider CreateSqlProvider()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 throw new NotSupportedException();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 /// <summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 /// Returns connection type.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 /// </summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 /// <remarks>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 /// See the <see cref="DbManager.AddDataProvider(DataProviderBase)"/> method to find an example.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 /// </remarks>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 /// <seealso cref="DbManager.AddDataProvider(DataProviderBase)">AddDataManager Method</seealso>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 /// <value>An instance of the <see cref="Type"/> class.</value>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 public override Type ConnectionType
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 get { return typeof(OdbcConnection); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 public const string NameString = DataProvider.ProviderName.Odbc;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 /// <summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 /// Returns the data provider name.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 /// </summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 /// <remarks>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 /// See the <see cref="DbManager.AddDataProvider(DataProviderBase)"/> method to find an example.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 /// </remarks>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 /// <seealso cref="DbManager.AddDataProvider(DataProviderBase)">AddDataProvider Method</seealso>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 /// <value>Data provider name.</value>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 public override string Name
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 get { return NameString; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 }