OdbcDataConnection.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Data;
  5. using System.Data.Common;
  6. using System.Data.Odbc;
  7. using FastReport.Utils;
  8. namespace FastReport.Data
  9. {
  10. /// <summary>
  11. /// Represents a connection to any database through ODBC.
  12. /// </summary>
  13. /// <example>This example shows how to add a new connection to the report.
  14. /// <code>
  15. /// Report report1;
  16. /// OdbcDataConnection conn = new OdbcDataConnection();
  17. /// conn.ConnectionString = "your_connection_string";
  18. /// report1.Dictionary.Connections.Add(conn);
  19. /// conn.CreateAllTables();
  20. /// </code>
  21. /// </example>
  22. public partial class OdbcDataConnection : DataConnectionBase
  23. {
  24. /// <inheritdoc/>
  25. protected override string GetConnectionStringWithLoginInfo(string userName, string password)
  26. {
  27. OdbcConnectionStringBuilder builder = new OdbcConnectionStringBuilder(ConnectionString);
  28. builder.Remove("uid");
  29. builder.Add("uid", userName);
  30. builder.Remove("pwd");
  31. builder.Add("pwd", password);
  32. return builder.ToString();
  33. }
  34. /// <inheritdoc/>
  35. public override string QuoteIdentifier(string value, DbConnection connection)
  36. {
  37. // already quoted?
  38. if (value.EndsWith("\"") || value.EndsWith("]") || value.EndsWith("'") || value.EndsWith("`"))
  39. return value;
  40. // Odbc is universal connection, so we need quoting dependent on used database type
  41. using (OdbcCommandBuilder builder = new OdbcCommandBuilder())
  42. {
  43. return builder.QuoteIdentifier(value, connection as OdbcConnection);
  44. }
  45. }
  46. /// <inheritdoc/>
  47. public override Type GetConnectionType()
  48. {
  49. return typeof(OdbcConnection);
  50. }
  51. /// <inheritdoc/>
  52. public override DbDataAdapter GetAdapter(string selectCommand, DbConnection connection,
  53. CommandParameterCollection parameters)
  54. {
  55. OdbcDataAdapter adapter = new OdbcDataAdapter(selectCommand, connection as OdbcConnection);
  56. foreach (CommandParameter p in parameters)
  57. {
  58. OdbcParameter parameter = adapter.SelectCommand.Parameters.Add(p.Name, (OdbcType)p.DataType, p.Size);
  59. parameter.Value = p.Value;
  60. }
  61. return adapter;
  62. }
  63. /// <inheritdoc/>
  64. public override Type GetParameterType()
  65. {
  66. return typeof(OdbcType);
  67. }
  68. }
  69. }