using System; using System.Data.Common; using System.Data.OleDb; namespace FastReport.Data { /// /// Represents a connection to any OLE DB database. /// /// This example shows how to add a new connection to the report. /// /// Report report1; /// OleDbDataConnection conn = new OleDbDataConnection(); /// conn.ConnectionString = "your_connection_string"; /// report1.Dictionary.Connections.Add(conn); /// conn.CreateAllTables(); /// /// public partial class OleDbDataConnection : DataConnectionBase { /// protected override string GetConnectionStringWithLoginInfo(string userName, string password) { OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder(ConnectionString); builder.Remove("User ID"); builder.Add("User ID", userName); builder.Remove("Password"); builder.Add("Password", password); return builder.ToString(); } /// public override string QuoteIdentifier(string value, DbConnection connection) { // already quoted? if (value.EndsWith("\"") || value.EndsWith("]") || value.EndsWith("'") || value.EndsWith("`")) return value; // OleDb is universal connection, so we need quoting dependent on used database type using (OleDbCommandBuilder builder = new OleDbCommandBuilder()) { return builder.QuoteIdentifier(value, connection as OleDbConnection); } } /// public override Type GetConnectionType() { return typeof(OleDbConnection); } /// public override DbDataAdapter GetAdapter(string selectCommand, DbConnection connection, CommandParameterCollection parameters) { OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommand, connection as OleDbConnection); foreach (CommandParameter p in parameters) { OleDbParameter parameter = adapter.SelectCommand.Parameters.Add(p.Name, (OleDbType)p.DataType, p.Size); parameter.Value = p.Value; } return adapter; } /// public override Type GetParameterType() { return typeof(OleDbType); } } }