Пример #1
0
        /// <summary>
        /// Same as <see cref="Connect(string, string)"/>(string, string) only this uses an enumeration.
        /// </summary>
        /// <param name="driver">The driver enumeration for you DBMS system</param>
        /// <param name="pluginName">The name of the plugin</param>
        /// <param name="connectionString">A valid connection string for you DBMS</param>
        /// <returns></returns>
        public bool Connect(dbDriver driver, string pluginName, string connectionString)
        {
            Reset();

            string dbName;
            int    index;

            _connectionString = connectionString.Replace("\"", "");
            _driver           = driver;

            #region not fully implemented yet

/*
 *          InternalDriver drv = InternalDriver.Get(settings.DbDriver);
 *          if (drv != null)
 *          {
 *              this._driverString = drv.DriverId;
 *              this.StripTrailingNulls = drv.StripTrailingNulls;
 *              this.requiredDatabaseName = drv.RequiredDatabaseName;
 *
 *              IDbConnection con = null;
 *                      try
 *                      {
 *                  ClassFactory = drv.CreateBuildInClass();
 *                  if (ClassFactory != null)
 *                      con = ClassFactory.CreateConnection();
 *                  else
 *                  {
 *                      IMyMetaPlugin plugin = drv.CreateMyMetaPluginClass();
 *                      if (plugin != null)
 *                      {
 *                          MyMetaPluginContext pluginContext = new MyMetaPluginContext(drv.DriverId, this._connectionString);
 *                          plugin.Initialize(pluginContext);
 *                          con = plugin.NewConnection;
 *                      }
 *                  }
 *                  if (con != null)
 *                  {
 *                      con.ConnectionString = this._connectionString;
 *                                  // cn.Open();
 *                  }
 *                              this._defaultDatabase = drv.GetDataBaseName(cn);
 *                      }
 *                      catch(Exception Ex)
 *                      {
 *                              throw Ex;
 *                      } finally {
 *                  if (con != null)
 *                                  cn.Close();
 *              }
 *          }
 *          else
 *          {
 *              // Error
 *          }
 */

            #endregion not fully implemented yet

            switch (_driver)
            {
            case dbDriver.SQL:

                ConnectUsingOleDb(_driver, _connectionString);
                _driverString        = MyMetaDrivers.SQL;
                StripTrailingNulls   = false;
                requiredDatabaseName = true;
                ClassFactory         = new ClassFactory();
                break;

            case dbDriver.Oracle:

                ConnectUsingOleDb(_driver, _connectionString);
                _driverString        = MyMetaDrivers.Oracle;
                StripTrailingNulls   = false;
                requiredDatabaseName = true;
                ClassFactory         = new Oracle.ClassFactory();
                break;

            case dbDriver.Access:

                ConnectUsingOleDb(_driver, _connectionString);
                _driverString        = MyMetaDrivers.Access;
                StripTrailingNulls   = false;
                requiredDatabaseName = false;
                ClassFactory         = new Access.ClassFactory();
                break;

            case dbDriver.MySql:

                ConnectUsingOleDb(_driver, _connectionString);
                _driverString        = MyMetaDrivers.MySql;
                StripTrailingNulls   = true;
                requiredDatabaseName = true;
                ClassFactory         = new MySql.ClassFactory();
                break;

            case dbDriver.MySql2:

                using (var mysqlconn = new MySqlConnection(_connectionString))
                {
                    mysqlconn.Close();
                    mysqlconn.Open();
                    _defaultDatabase = mysqlconn.Database;
                }

                _driverString        = MyMetaDrivers.MySql2;
                StripTrailingNulls   = true;
                requiredDatabaseName = true;
                ClassFactory         = new MySql5.ClassFactory();
                break;

            case dbDriver.DB2:

                ConnectUsingOleDb(_driver, _connectionString);
                _driverString        = MyMetaDrivers.DB2;
                StripTrailingNulls   = false;
                requiredDatabaseName = false;
                ClassFactory         = new DB2.ClassFactory();
                break;

            case dbDriver.ISeries:

                ConnectUsingOleDb(_driver, _connectionString);
                _driverString        = MyMetaDrivers.ISeries;
                StripTrailingNulls   = false;
                requiredDatabaseName = false;
                ClassFactory         = new ISeries.ClassFactory();
                break;

            case dbDriver.Pervasive:

                ConnectUsingOleDb(_driver, _connectionString);
                _driverString        = MyMetaDrivers.Pervasive;
                StripTrailingNulls   = false;
                requiredDatabaseName = false;
                ClassFactory         = new Pervasive.ClassFactory();
                break;

            case dbDriver.PostgreSQL:

                using (var cn = new NpgsqlConnection(_connectionString))
                {
                    cn.Open();
                    _defaultDatabase = cn.Database;
                }

                _driverString        = MyMetaDrivers.PostgreSQL;
                StripTrailingNulls   = false;
                requiredDatabaseName = false;
                ClassFactory         = new PostgreSQL.ClassFactory();
                break;

            case dbDriver.PostgreSQL8:

                using (var cn8 = new NpgsqlConnection(_connectionString))
                {
                    cn8.Open();
                    _defaultDatabase = cn8.Database;
                }

                _driverString        = MyMetaDrivers.PostgreSQL8;
                StripTrailingNulls   = false;
                requiredDatabaseName = false;
                ClassFactory         = new PostgreSQL8.ClassFactory();
                break;

            case dbDriver.Firebird:

                using (var cn1 = new FbConnection(_connectionString))
                {
                    cn1.Open();
                    dbName = cn1.Database;
                }

                try
                {
                    index = dbName.LastIndexOfAny(new[] { '\\' });
                    if (index >= 0)
                    {
                        _defaultDatabase = dbName.Substring(index + 1);
                    }
                }
                catch {}

                _driverString        = MyMetaDrivers.Firebird;
                StripTrailingNulls   = false;
                requiredDatabaseName = false;
                ClassFactory         = new Firebird.ClassFactory();
                break;

            case dbDriver.Interbase:

                using (var cn2 = new FbConnection(_connectionString))
                {
                    cn2.Open();
                    _defaultDatabase = cn2.Database;
                }

                _driverString        = MyMetaDrivers.Interbase;
                StripTrailingNulls   = false;
                requiredDatabaseName = false;
                ClassFactory         = new Firebird.ClassFactory();
                break;

            case dbDriver.SQLite:

                using (var sqliteConn = new SQLiteConnection(_connectionString))
                {
                    sqliteConn.Open();
                    dbName = sqliteConn.Database;
                }
                _driverString        = MyMetaDrivers.SQLite;
                StripTrailingNulls   = false;
                requiredDatabaseName = false;
                ClassFactory         = new SQLite.ClassFactory();
                break;

#if !IGNORE_VISTA
            case dbDriver.VistaDB:

                try
                {
                    var mh = new MetaHelper();
                    dbName = mh.LoadDatabases(_connectionString);

                    if (dbName == "")
                    {
                        return(false);
                    }

                    _defaultDatabase = dbName;

                    _driverString        = MyMetaDrivers.VistaDB;
                    StripTrailingNulls   = false;
                    requiredDatabaseName = false;
                    ClassFactory         = new VistaDB.ClassFactory();
                }
                catch
                {
                    throw new Exception("Invalid VistaDB connection or VistaDB not installed");
                }

                break;
#endif
            case dbDriver.Advantage:

                ConnectUsingOleDb(_driver, _connectionString);
                _driverString        = MyMetaDrivers.Advantage;
                StripTrailingNulls   = false;
                requiredDatabaseName = false;
                ClassFactory         = new Advantage.ClassFactory();
                string[] s = _defaultDatabase.Split('.');
                _defaultDatabase = s[0];
                break;

            case dbDriver.Plugin:
                break;

            case dbDriver.None:

                _driverString = MyMetaDrivers.None;
                break;
            }

            _isConnected = true;
            return(true);
        }