Exemplo n.º 1
0
        public override DbConnection GetConnection()
        {
            // Look up configuration
            var cs = ConfigurationManager.ConnectionStrings[FileOrName];

            if (cs != null)
            {
                return(new ProviderConnectionSetting(cs.ProviderName, cs.ConnectionString).GetConnection());
            }

            // Access file?
            if (FileOrName.EndsWith(".accdb") || FileOrName.EndsWith(".mdb"))
            {
                var builder = new System.Data.Odbc.OdbcConnectionStringBuilder();
                builder.Add("Driver", "{Microsoft Access Driver (*.mdb, *.accdb)}");
                builder.Add("Dbq", FileOrName);

                var conn = new System.Data.Odbc.OdbcConnection();
                conn.ConnectionString = builder.ConnectionString;
                conn.Open();

                return(conn);
            }

            // Assume a SQLite file
            // Restricts to an exsiting file to prevent mistyping from creating a new database
            if (File.Exists(FileOrName))
            {
                var builder = new System.Data.SQLite.SQLiteConnectionStringBuilder();
                builder.Add("Data Source", FileOrName);

                var conn = new System.Data.SQLite.SQLiteConnection();
                conn.ConnectionString = builder.ConnectionString;
                conn.Open();

                return(conn);
            }

            throw new RuntimeException(String.Format("'{0}' is not a database file name nor connection string name", FileOrName));
        }