Esempio n. 1
0
        public Tuple <bool, int> CreateORAlterDatabaseAndTables(string tablesXMLForm, string createTableSQLQuery)
        {
            bool dbCreatedSuccess = true;
            int  version          = 0;

            try
            {
                using (connection = DBConnectionFactory.CreateDatabaseInstance(this.contextName))
                {
                    DBConnectionOperation.ConnectionOpen(connection);

                    #region Veritabanı var olup olmadığı konrtrol edilerek oluşturulur
                    MySqlCommand command = new MySqlCommand(CreateDatabaseQuery(), (MySqlConnection)connection);
                    command.ExecuteNonQuery();
                    #endregion

                    #region Oluşturulan veritabanına geçiş yapılır
                    connection.ChangeDatabase(this.contextName.ToLower());
                    #endregion

                    #region __WORM__Configuration Tablosu var olup olmadığı kontrol edilerek oluşturulur
                    Tuple <string, MySqlCommand> worm_Table = Create__WORM__Configuration_Table(tablesXMLForm);
                    command = new MySqlCommand(worm_Table.Item1, (MySqlConnection)connection);
                    command.ExecuteNonQuery();

                    command = worm_Table.Item2;
                    command.ExecuteNonQuery();
                    #endregion

                    #region __WORM__Configuration tablosundan veritabanı son versiyonu çekilir
                    command = new MySqlCommand($"SELECT Version FROM __worm__configuration ORDER BY Version DESC LIMIT 1", (MySqlConnection)connection);
                    DbDataReader reader = command.ExecuteReader();
                    while (reader.Read())
                    {
                        version = reader.GetInt32(0);
                    }
                    reader.Close();
                    #endregion

                    #region Tablolar oluşturulur
                    command = new MySqlCommand(createTableSQLQuery, (MySqlConnection)connection);
                    command.ExecuteNonQuery();
                    #endregion
                }
            }
            catch (Exception ex)
            {
                DBConnectionOperation.ConnectionClose(connection);
                throw ex;
            }
            return(Tuple.Create(dbCreatedSuccess, version));
        }