using System; using System.Collections.Generic; using System.Text; using System.ComponentModel; using System.Data.Common; using System.Data.OleDb; using FastReport.Utils; namespace FastReport.Data { /// /// Represents a connection to MS Access database (.mdb file). /// /// This example shows how to add a new connection to the report. /// /// Report report1; /// MsAccessDataConnection conn = new MsAccessDataConnection(); /// conn.DataSource = @"c:\data.mdb"; /// report1.Dictionary.Connections.Add(conn); /// conn.CreateAllTables(); /// /// public partial class MsAccessDataConnection : DataConnectionBase { internal static string strUserID = "User ID"; internal static string strPassword = "Jet OLEDB:Database Password"; /// /// Contains supported list of providers /// public static string[] ProviderList = { "Microsoft.Jet.OLEDB.4.0", "Microsoft.ACE.OLEDB.12.0" }; /// /// Gets or sets the datasource file name. /// [Category("Data")] public string DataSource { get { OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder(ConnectionString); return builder.DataSource; } set { OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder(ConnectionString); builder.DataSource = value; ConnectionString = builder.ToString(); } } /// /// Gets or sets the datasource file name. /// [Category("Data")] public string Provider { get { OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder(ConnectionString); if (builder.Provider == "") return ProviderList[0]; return builder.Provider; } set { OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder(ConnectionString); builder.Provider = value; ConnectionString = builder.ToString(); } } /// /// Gets or sets the user name. /// [Category("Data")] public string UserName { get { OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder(ConnectionString); object userName; builder.TryGetValue(strUserID, out userName); return userName == null ? "" : userName.ToString(); } set { OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder(ConnectionString); if (!String.IsNullOrEmpty(value)) builder.Add(strUserID, value); else builder.Remove(strUserID); ConnectionString = builder.ToString(); } } /// /// Gets or sets the password. /// [Category("Data")] [PasswordPropertyText(true)] public string Password { get { OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder(ConnectionString); object password; builder.TryGetValue(strPassword, out password); return password == null ? "" : password.ToString(); } set { OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder(ConnectionString); if (!String.IsNullOrEmpty(value)) builder.Add(strPassword, value); else builder.Remove(strPassword); ConnectionString = builder.ToString(); } } /// protected override void SetConnectionString(string value) { OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder(value); base.SetConnectionString(builder.ToString()); } /// protected override string GetConnectionStringWithLoginInfo(string userName, string password) { OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder(ConnectionString); builder.Remove(strUserID); builder.Add(strUserID, userName); builder.Remove(strPassword); builder.Add(strPassword, password); return builder.ToString(); } /// 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); } /// public override string QuoteIdentifier(string value, DbConnection connection) { return "[" + value + "]"; } /// /// Initializes a new instance of the class with default settings. /// public MsAccessDataConnection() { ConnectionString = ""; } } }