private void KeySpaceComboBox_DropDownOpened(object sender, EventArgs e) { KeySpaceComboBox.Items.Clear(); string DBName = DBNameComboBox.Text; db = (Database)(from d in EA.Dbs where d.Name == DBName select d).FirstOrDefault(); if (db == null) { return; } if (db.DBType == Database.eDBTypes.Cassandra) { NoSqlBase NoSqlDriver = null; NoSqlDriver = new GingerCassandra(db); List <string> keyspace = NoSqlDriver.GetKeyspaceList(); foreach (string s in keyspace) { KeySpaceComboBox.Items.Add(s); } } else if (db.DBType == Database.eDBTypes.Couchbase) { NoSqlBase NoSqlDriver = null; NoSqlDriver = new GingerCouchbase(db); List <string> keyspace = NoSqlDriver.GetKeyspaceList(); foreach (string s in keyspace) { KeySpaceComboBox.Items.Add(s); } } }
private void HandleNoSQLDBAction() { NoSqlBase.NoSqlBase NoSqlDriver = null; switch (this.DB.DBType) { case Database.eDBTypes.Cassandra: NoSqlDriver = new GingerCassandra(DBValidationType, DB, this); NoSqlDriver.PerformDBAction(); break; case Database.eDBTypes.Couchbase: NoSqlDriver = new GingerCouchbase(DBValidationType, DB, this); NoSqlDriver.PerformDBAction(); break; case Database.eDBTypes.MongoDb: NoSqlDriver = new GingerMongoDb(DBValidationType, DB, this); NoSqlDriver.PerformDBAction(); break; } }
public List <string> GetTablesColumns(string table) { DbDataReader reader = null; List <string> rc = new List <string>() { "" }; if ((oConn == null || string.IsNullOrEmpty(table)) && (DBType != Database.eDBTypes.Cassandra)) { return(rc); } if (DBType == Database.eDBTypes.Cassandra) { NoSqlBase.NoSqlBase NoSqlDriver = null; NoSqlDriver = new GingerCassandra(this); rc = NoSqlDriver.GetColumnList(table); } else if (DBType == Database.eDBTypes.Couchbase) { NoSqlBase.NoSqlBase NoSqlDriver = null; NoSqlDriver = new GingerCouchbase(this); rc = NoSqlDriver.GetColumnList(table); } else { try { DbCommand command = oConn.CreateCommand(); // Do select with zero records command.CommandText = "select * from " + table + " where 1 = 0"; command.CommandType = CommandType.Text; reader = command.ExecuteReader(); // Get the schema and read the cols DataTable schemaTable = reader.GetSchemaTable(); foreach (DataRow row in schemaTable.Rows) { string ColName = (string)row[0]; rc.Add(ColName); } } catch (Exception e) { Reporter.ToLog(eLogLevel.ERROR, "", e); //Reporter.ToUser(eUserMsgKey.DbTableError, "table columns", e.Message); throw (e); } finally { reader.Close(); } } return(rc); }
public List <string> GetTablesList(string Keyspace = null) { List <string> rc = new List <string>() { "" }; if (MakeSureConnectionIsOpen()) { try { //if (oConn == null || oConn.State == ConnectionState.Closed) Connect(); if (Database.DBType == Database.eDBTypes.Cassandra) { NoSqlBase.NoSqlBase NoSqlDriver = null; NoSqlDriver = new GingerCassandra(Database); rc = NoSqlDriver.GetTableList(Keyspace); } else if (Database.DBType == Database.eDBTypes.Couchbase) { NoSqlBase.NoSqlBase NoSqlDriver = null; NoSqlDriver = new GingerCouchbase(Database); rc = NoSqlDriver.GetTableList(Keyspace); } else if (Database.DBType == Database.eDBTypes.MongoDb) { NoSqlBase.NoSqlBase NoSqlDriver = null; NoSqlDriver = new GingerMongoDb(Database); rc = NoSqlDriver.GetTableList(Keyspace); } else { DataTable table = oConn.GetSchema("Tables"); string tableName = ""; foreach (DataRow row in table.Rows) { switch (Database.DBType) { case eDBTypes.MSSQL: tableName = (string)row[2]; break; case eDBTypes.Oracle: tableName = (string)row[1]; break; case eDBTypes.MSAccess: tableName = (string)row[2]; break; case eDBTypes.DB2: tableName = (string)row[2]; break; case eDBTypes.MySQL: tableName = (string)row[2]; break; case eDBTypes.PostgreSQL: tableName = (string)row[2]; break; default: //not implemented break; } rc.Add(tableName); } } } catch (Exception e) { Reporter.ToLog(eLogLevel.ERROR, "Failed to get table list for DB:" + Database.DBType.ToString(), e); throw (e); } } return(rc); }
public Boolean Connect(bool displayErrorPopup = false) { DbProviderFactory factory; string connectConnectionString = string.Empty; if (Database.DBType != eDBTypes.Cassandra && Database.DBType != eDBTypes.Couchbase && Database.DBType != eDBTypes.MongoDb) { connectConnectionString = GetConnectionString(); } try { switch (Database.DBType) { case eDBTypes.MSSQL: oConn = new SqlConnection(); oConn.ConnectionString = connectConnectionString; oConn.Open(); break; case eDBTypes.Oracle: //TODO: Oracle connection is deprecated use another method - Switched to ODP.NET //Try Catch for Connecting DB Which having Oracle Version Less then 10.2 try { oConn = WorkSpace.Instance.TargetFrameworkHelper.GetOracleConnection(connectConnectionString); oConn.Open(); break; } catch (Exception e) { String Temp = e.Message; //if (Temp.Contains ("ORA-03111")) if (Temp.Contains("ORA-03111")) { oConn = SqlClientFactory.Instance.CreateConnection(); oConn.ConnectionString = "Provider=msdaora;" + connectConnectionString; oConn.Open(); break; } else { throw e; } } case eDBTypes.MSAccess: oConn = WorkSpace.Instance.TargetFrameworkHelper.GetMSAccessConnection(); oConn.ConnectionString = connectConnectionString; oConn.Open(); break; case eDBTypes.DB2: if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { String DB2Cpath = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\IBM\DB2\GLOBAL_PROFILE", "DB2PATH", "DNE"); if (System.IO.Directory.Exists(DB2Cpath)) { var DLL = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + @"DLLs\IBM.Data.DB2.dll"); var class1Type = DLL.GetType("IBM.Data.DB2.DB2Connection"); //Now you can use reflection or dynamic to call the method. I will show you the dynamic way object[] param = new object[1]; param[0] = connectConnectionString; dynamic c = Activator.CreateInstance(class1Type, param); oConn = (DbConnection)c; oConn.Open(); } else { throw new DllNotFoundException("DB2 Connect or IBM DB2 Drivers not installed."); } } else { throw new PlatformNotSupportedException("DB2 Connections are provided only on Windows Operationg System"); } break; case eDBTypes.PostgreSQL: oConn = new NpgsqlConnection(connectConnectionString); oConn.Open(); break; case eDBTypes.Cassandra: GingerCassandra CassandraDriver = new GingerCassandra(Database); bool isConnection; isConnection = CassandraDriver.Connect(); if (isConnection == true) { LastConnectionUsedTime = DateTime.Now; return(true); } else { return(false); } case eDBTypes.Couchbase: GingerCouchbase CouchbaseDriver = new GingerCouchbase(Database); bool isConnectionCB; isConnectionCB = CouchbaseDriver.Connect(); if (isConnectionCB == true) { LastConnectionUsedTime = DateTime.Now; return(true); } else { return(false); } case eDBTypes.MySQL: oConn = new MySqlConnection(); oConn.ConnectionString = connectConnectionString; oConn.Open(); break; case eDBTypes.MongoDb: bool isConnectionMDB; GingerMongoDb MongoDriver = new GingerMongoDb(Database); isConnectionMDB = MongoDriver.Connect(); if (isConnectionMDB == true) { LastConnectionUsedTime = DateTime.Now; return(true); } else { return(false); } default: //not implemented break; } if ((oConn != null) && (oConn.State == ConnectionState.Open)) { LastConnectionUsedTime = DateTime.Now; return(true); } } catch (Exception e) { Reporter.ToLog(eLogLevel.ERROR, "DB connection failed, DB type: " + Database.DBType.ToString() + "; Connection String =" + HidePasswordFromString(connectConnectionString), e); throw (e); } return(false); }
public Boolean Connect(bool displayErrorPopup = false) { DbProviderFactory factory; string connectConnectionString = string.Empty; if (DBType != eDBTypes.Cassandra && DBType != eDBTypes.Couchbase && DBType != eDBTypes.MongoDb) { connectConnectionString = GetConnectionString(); } try { switch (DBType) { case eDBTypes.MSSQL: oConn = new SqlConnection(); oConn.ConnectionString = connectConnectionString; oConn.Open(); break; case eDBTypes.Oracle: //TODO: Oracle connection is deprecated use another method - Switched to ODP.NET //Try Catch for Connecting DB Which having Oracle Version Less then 10.2 try { var DLL = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + @"Oracle.ManagedDataAccess.dll"); var class1Type = DLL.GetType("Oracle.ManagedDataAccess.Client.OracleConnection"); object[] param = new object[1]; param[0] = connectConnectionString; dynamic c = Activator.CreateInstance(class1Type, param); oConn = (DbConnection)c; oConn.Open(); break; } catch (Exception e) { String Temp = e.Message; //if (Temp.Contains ("ORA-03111")) if (Temp.Contains("ORA-03111")) { factory = DbProviderFactories.GetFactory("System.Data.OleDb"); oConn = factory.CreateConnection(); oConn.ConnectionString = "Provider=msdaora;" + connectConnectionString; oConn.Open(); break; } else if (Temp.Contains("ORA-01017")) { throw e; } else if (!System.IO.File.Exists(AppDomain.CurrentDomain.BaseDirectory + @"Oracle.ManagedDataAccess.dll")) { throw new Exception(GetMissingDLLErrorDescription()); } else { throw e; } } case eDBTypes.MSAccess: // anything better than below? // TODO: working only with mdb access97, not with accmdb factory = DbProviderFactories.GetFactory("System.Data.OleDb"); oConn = factory.CreateConnection(); oConn.ConnectionString = connectConnectionString; oConn.Open(); break; case eDBTypes.DB2: String DB2Cpath = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\IBM\DB2\GLOBAL_PROFILE", "DB2PATH", "DNE"); if (System.IO.Directory.Exists(DB2Cpath)) { var DLL = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + @"DLLs\IBM.Data.DB2.dll"); var class1Type = DLL.GetType("IBM.Data.DB2.DB2Connection"); //Now you can use reflection or dynamic to call the method. I will show you the dynamic way object[] param = new object[1]; param[0] = connectConnectionString; dynamic c = Activator.CreateInstance(class1Type, param); oConn = (DbConnection)c; oConn.Open(); } else { throw new Exception("DB2 Connect or IBM DB2 Drivers not installed."); } break; case eDBTypes.PostgreSQL: oConn = new NpgsqlConnection(connectConnectionString); oConn.Open(); break; case eDBTypes.Cassandra: GingerCassandra CassandraDriver = new GingerCassandra(this); bool isConnection; isConnection = CassandraDriver.Connect(); if (isConnection == true) { LastConnectionUsedTime = DateTime.Now; return(true); } else { return(false); } case eDBTypes.Couchbase: GingerCouchbase CouchbaseDriver = new GingerCouchbase(this); bool isConnectionCB; isConnectionCB = CouchbaseDriver.Connect(); if (isConnectionCB == true) { LastConnectionUsedTime = DateTime.Now; return(true); } else { return(false); } case eDBTypes.MySQL: oConn = new MySqlConnection(); oConn.ConnectionString = connectConnectionString; oConn.Open(); break; case eDBTypes.MongoDb: bool isConnectionMDB; GingerMongoDb MongoDriver = new GingerMongoDb(this); isConnectionMDB = MongoDriver.Connect(); if (isConnectionMDB == true) { LastConnectionUsedTime = DateTime.Now; return(true); } else { return(false); } } if ((oConn != null) && (oConn.State == ConnectionState.Open)) { LastConnectionUsedTime = DateTime.Now; return(true); } } catch (Exception e) { Reporter.ToLog(eLogLevel.ERROR, "DB connection failed, DB type: " + DBType.ToString() + "; Connection String =" + General.HidePasswordFromString(connectConnectionString), e); throw (e); } return(false); }