Mercurial > pub > bltoolkit
diff Source/Data/DataProvider/OdbcDataProvider.cs @ 0:f990fcb411a9
Копия текущей версии из github
author | cin |
---|---|
date | Thu, 27 Mar 2014 21:46:09 +0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Source/Data/DataProvider/OdbcDataProvider.cs Thu Mar 27 21:46:09 2014 +0400 @@ -0,0 +1,112 @@ +using System; +using System.Data; +using System.Data.Common; +using System.Data.Odbc; + +namespace BLToolkit.Data.DataProvider +{ + using Sql.SqlProvider; + + /// <summary> + /// Implements access to the Data Provider for ODBC. + /// </summary> + /// <remarks> + /// See the <see cref="DbManager.AddDataProvider(DataProviderBase)"/> method to find an example. + /// </remarks> + /// <seealso cref="DbManager.AddDataProvider(DataProviderBase)">AddDataManager Method</seealso> + public class OdbcDataProvider : DataProviderBase + { + /// <summary> + /// Creates the database connection object. + /// </summary> + /// <remarks> + /// See the <see cref="DbManager.AddDataProvider(DataProviderBase)"/> method to find an example. + /// </remarks> + /// <seealso cref="DbManager.AddDataProvider(DataProviderBase)">AddDataManager Method</seealso> + /// <returns>The database connection object.</returns> + public override IDbConnection CreateConnectionObject() + { + return new OdbcConnection(); + } + + /// <summary> + /// Creates the data adapter object. + /// </summary> + /// <remarks> + /// See the <see cref="DbManager.AddDataProvider(DataProviderBase)"/> method to find an example. + /// </remarks> + /// <seealso cref="DbManager.AddDataProvider(DataProviderBase)">AddDataManager Method</seealso> + /// <returns>A data adapter object.</returns> + public override DbDataAdapter CreateDataAdapterObject() + { + return new OdbcDataAdapter(); + } + + /// <summary> + /// Populates the specified <see cref="IDbCommand"/> object's Parameters collection with + /// parameter information for the stored procedure specified in the <see cref="IDbCommand"/>. + /// </summary> + /// <remarks> + /// See the <see cref="DbManager.AddDataProvider(DataProviderBase)"/> method to find an example. + /// </remarks> + /// <seealso cref="DbManager.AddDataProvider(DataProviderBase)">AddDataManager Method</seealso> + /// <param name="command">The <see cref="IDbCommand"/> referencing the stored procedure for which the parameter + /// information is to be derived. The derived parameters will be populated into + /// the Parameters of this command.</param> + public override bool DeriveParameters(IDbCommand command) + { + OdbcCommandBuilder.DeriveParameters((OdbcCommand)command); + return true; + } + + public override object Convert(object value, ConvertType convertType) + { + switch (convertType) + { + case ConvertType.ExceptionToErrorNumber: + if (value is OdbcException) + { + var ex = (OdbcException)value; + if (ex.Errors.Count > 0) + return ex.Errors[0].NativeError; + } + break; + } + + return base.Convert(value, convertType); + } + + public override ISqlProvider CreateSqlProvider() + { + throw new NotSupportedException(); + } + + /// <summary> + /// Returns connection type. + /// </summary> + /// <remarks> + /// See the <see cref="DbManager.AddDataProvider(DataProviderBase)"/> method to find an example. + /// </remarks> + /// <seealso cref="DbManager.AddDataProvider(DataProviderBase)">AddDataManager Method</seealso> + /// <value>An instance of the <see cref="Type"/> class.</value> + public override Type ConnectionType + { + get { return typeof(OdbcConnection); } + } + + public const string NameString = DataProvider.ProviderName.Odbc; + + /// <summary> + /// Returns the data provider name. + /// </summary> + /// <remarks> + /// See the <see cref="DbManager.AddDataProvider(DataProviderBase)"/> method to find an example. + /// </remarks> + /// <seealso cref="DbManager.AddDataProvider(DataProviderBase)">AddDataProvider Method</seealso> + /// <value>Data provider name.</value> + public override string Name + { + get { return NameString; } + } + } +}