public override void ConnectToDatabase(string connectionstring, string migratorName, bool validateTables) { m_connectionString = connectionstring; MySqlConnection c = new MySqlConnection(connectionstring); int subStrA = connectionstring.IndexOf("Database="); int subStrB = connectionstring.IndexOf(";", subStrA); string noDatabaseConnector = m_connectionString.Substring(0, subStrA) + m_connectionString.Substring(subStrB + 1); retry: try { ExecuteNonQuery(noDatabaseConnector, "create schema IF NOT EXISTS " + c.Database, new Dictionary<string, object>(), false); } catch { MainConsole.Instance.Error( "[MySQLDatabase]: We cannot connect to the MySQL instance you have provided. Please make sure it is online, and then press enter to try again."); Console.Read(); goto retry; } var migrationManager = new MigrationManager(this, migratorName, validateTables); migrationManager.DetermineOperation(); migrationManager.ExecuteOperation(); }
public override void ConnectToDatabase(string connectionstring, string migratorName, bool validateTables) { m_connectionString = connectionstring; var migrationManager = new MigrationManager (this, migratorName, validateTables); migrationManager.DetermineOperation (); migrationManager.ExecuteOperation (); }
public override void ConnectToDatabase(string connectionString) { m_Connection = new SqliteConnection(connectionString); m_Connection.Open(); var migrationManager = new MigrationManager(DataSessionProviderConnector.DataSessionProvider, this); migrationManager.DetermineOperation(); migrationManager.ExecuteOperation(); }
public override void ConnectToDatabase(string connectionString, string migratorName, bool validateTables) { connectionString = connectionString.Replace("URI=file:", "URI=file:" + Util.BasePathCombine("") + "/"); m_Connection = new SqliteConnection(connectionString); m_Connection.Open(); var migrationManager = new MigrationManager(this, migratorName, validateTables); migrationManager.DetermineOperation(); migrationManager.ExecuteOperation(); }
public override void ConnectToDatabase(string connectionstring) { connectionString = connectionstring; MySqlConnection dbcon = GetLockedConnection(); CloseDatabase(dbcon); var migrationManager = new MigrationManager(DataSessionProviderConnector.DataSessionProvider, this); migrationManager.DetermineOperation(); migrationManager.ExecuteOperation(); }
public void MigrationTestsTests() { //IMPORTANT NOTIFICATION //Till I figure out a way, please delete the .db file or drop tables clean before running this //Switch the comments to test one technology or another var technology = DataManagerTechnology.SQLite; //var technology = DataManagerTechnology.MySql; var mysqlconnectionstring = "Data Source=localhost;Database=auroratest;User ID=auroratest;Password=test;"; var sqliteconnectionstring = string.Format("URI=file:{0},version=3", dbFileName); string connectionString = (technology==DataManagerTechnology.SQLite)?sqliteconnectionstring:mysqlconnectionstring; CreateEmptyDatabase(); DataSessionProvider sessionProvider = new DataSessionProvider(technology, connectionString); IDataConnector genericData = ((technology==DataManagerTechnology.SQLite)? (IDataConnector) new SQLiteLoader():new MySQLDataLoader()); genericData.ConnectToDatabase(connectionString); var migrators = new List<Migrator>(); var testMigrator0 = new TestMigrator(); migrators.Add(testMigrator0); var migrationManager = new MigrationManager(sessionProvider, genericData, migrators); Assert.AreEqual(testMigrator0.Version, migrationManager.LatestVersion, "Latest version is correct"); Assert.IsNull(migrationManager.GetDescriptionOfCurrentOperation(),"Description should be null before deciding what to do."); migrationManager.DetermineOperation(); var operationDescription = migrationManager.GetDescriptionOfCurrentOperation(); Assert.AreEqual(MigrationOperationTypes.CreateDefaultAndUpgradeToTarget, operationDescription.OperationType, "Operation type is correct."); Assert.AreEqual(testMigrator0.Version, operationDescription.CurrentVersion, "Current version is correct"); //There will be no migration because there is only one migrator which will provide the default Assert.IsNull(operationDescription.StartVersion, "Start migration version is correct"); Assert.IsNull(operationDescription.EndVersion, "End migration version is correct"); try { migrationManager.ExecuteOperation(); Assert.AreEqual(testMigrator0.Version, genericData.GetAuroraVersion(), "Version of settings is updated"); } catch(MigrationOperationException) { Assert.Fail("Something failed during execution we weren't expecting."); } bool valid = migrationManager.ValidateVersion(migrationManager.LatestVersion); Assert.AreEqual(true,valid,"Database is a valid version"); migrationManager.DetermineOperation(); var operationDescription2 = migrationManager.GetDescriptionOfCurrentOperation(); Assert.AreEqual(MigrationOperationTypes.DoNothing, operationDescription2.OperationType, "Operation type is correct."); Assert.AreEqual(testMigrator0.Version, operationDescription2.CurrentVersion, "Current version is correct"); Assert.IsNull(operationDescription2.StartVersion, "Start migration version is correct"); Assert.IsNull(operationDescription2.EndVersion, "End migration version is correct"); migrationManager.ExecuteOperation(); genericData.CloseDatabase(); }
public override void ConnectToDatabase(string connectionstring, string migratorName, bool validateTables) { connectionString = connectionstring; SqlConnection dbcon = GetLockedConnection(); dbcon.Close(); dbcon.Dispose(); var migrationManager = new MigrationManager(this, migratorName, validateTables); migrationManager.DetermineOperation(); migrationManager.ExecuteOperation(); }
public override void ConnectToDatabase(string connectionString, string migratorName, bool validateTables) { string[] s1 = connectionString.Split(new[] { "URI=file:", "," }, StringSplitOptions.RemoveEmptyEntries); if(Path.GetFileName(s1[0]) == s1[0])//Only add this if we arn't an absolute path already connectionString = connectionString.Replace("URI=file:", "URI=file:" + Util.BasePathCombine("") + "\\"); m_Connection = new SqliteConnection(connectionString); m_Connection.Open(); var migrationManager = new MigrationManager(this, migratorName, validateTables); migrationManager.DetermineOperation(); migrationManager.ExecuteOperation(); }
public override void ConnectToDatabase(string connectionstring, string migratorName, bool validateTables) { m_connectionString = connectionstring; MySqlConnection c = new MySqlConnection(connectionstring); int subStrA = connectionstring.IndexOf("Database="); int subStrB = connectionstring.IndexOf(";", subStrA); string noDatabaseConnector = m_connectionString.Substring(0, subStrA) + m_connectionString.Substring(subStrB+1); ExecuteNonQuery(noDatabaseConnector, "create schema IF NOT EXISTS " + c.Database, new Dictionary<string, object>()); var migrationManager = new MigrationManager(this, migratorName, validateTables); migrationManager.DetermineOperation(); migrationManager.ExecuteOperation(); }
public override void ConnectToDatabase(string connectionString, string migratorName, bool validateTables) { _connectionString = connectionString; string[] s1 = _connectionString.Split(new[] {"Data Source=", ","}, StringSplitOptions.RemoveEmptyEntries); s1[0] = s1[0].Remove(0, 7); _fileName = Path.GetFileName(s1[0]); if (_fileName == s1[0]) //Only add this if we arn't an absolute path already _connectionString = string.Format("Data Source=file://{0}", Path.Combine(Util.BasePathCombine(""), _fileName)); SqliteConnection connection = new SqliteConnection(_connectionString); connection.Open(); var migrationManager = new MigrationManager(this, migratorName, validateTables); migrationManager.DetermineOperation(); migrationManager.ExecuteOperation(); connection.Close(); }
public override void ConnectToDatabase(string connectionString, string migratorName, bool validateTables) { _connectionString = connectionString; string[] s1 = _connectionString.Split(new[] { "Data Source=", "," }, StringSplitOptions.RemoveEmptyEntries); bool needsUTFConverted = false; _fileName = Path.GetFileName(s1[0]); if (s1[0].EndsWith(";")) { _fileName = Path.GetFileNameWithoutExtension(s1[1].Substring(7, s1[1].Length - 7)) + "utf8.db"; _connectionString = "Data Source=file://" + _fileName; s1 = new string[1] { "file://" + _fileName }; needsUTFConverted = true; _hadToConvert = true; } if (_fileName == s1[0]) //Only add this if we arn't an absolute path already _connectionString = _connectionString.Replace("Data Source=", "Data Source=" + Util.BasePathCombine("") + "\\"); SqliteConnection connection = new SqliteConnection(_connectionString); connection.Open(); var migrationManager = new MigrationManager(this, migratorName, validateTables); migrationManager.DetermineOperation(); migrationManager.ExecuteOperation(); connection.Close(); if (needsUTFConverted && _hadToConvert) { string file = connectionString.Split(new[] { "Data Source=", "," }, StringSplitOptions.RemoveEmptyEntries)[1].Substring(7); if (File.Exists(file)) { //UTF16 db, gotta convert it System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection("Data Source=" + file + ";version=3;UseUTF16Encoding=True"); conn.Open(); var RetVal = new List<string>(); using (var cmd = new System.Data.SQLite.SQLiteCommand("SELECT name FROM Sqlite_master", conn)) { using (IDataReader rdr = cmd.ExecuteReader()) { while (rdr.Read()) { for (int i = 0; i < rdr.FieldCount; i++) { RetVal.Add(rdr.GetValue(i).ToString()); } } } } foreach (string table in RetVal) { if (TableExists(table) && !table.StartsWith("sqlite") && !table.StartsWith("idx_") && table != "aurora_migrator_version") { var retVal = new List<object[]>(); using (var cmd = new System.Data.SQLite.SQLiteCommand("SELECT * FROM " + table, conn)) { using (IDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { List<object> obs = new List<object>(); for (int i = 0; i < reader.FieldCount; i++) { Type r = reader[i].GetType(); if (r == typeof(DBNull)) obs.Add(null); else obs.Add(reader[i].ToString()); } retVal.Add(obs.ToArray()); } } } try { if(retVal.Count > 0) InsertMultiple(table, retVal); } catch { } } } } } }