OleDbDataConnection.cs 2.2 KB

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