public string GetUpdateSQL(DatabaseMode dbMode, string tableName)
        {
            StringBuilder stringBuilder = new StringBuilder();

            switch (dbMode)
            {
            case DatabaseMode.MySQL:
                foreach (var newSchool in NewSchools)
                {
                    stringBuilder.AppendLine(string.Format("INSERT INTO {9} (school_code,name,parish_number,parish_name,region_number,region_name,type_code,type_name,gender) VALUES ( '{0}','{1}',{2},'{3}',{4},'{5}','{6}','{7}','{8}' ) ON DUPLICATE KEY UPDATE type_code = VALUES(type_code), type_name = VALUES(type_name), gender = VALUES(gender);", newSchool.SchoolCode, newSchool.Name.Replace("'", "\\'"), newSchool.ParishNumber, newSchool.ParishName.Replace("'", "\\'"), newSchool.RegionNumber, newSchool.RegionName.Replace("'", "\\'"), newSchool.SchoolTypeCode, newSchool.SchoolTypeName.Replace("'", "\\'"), newSchool.Gender, tableName) + Environment.NewLine);
                }
                break;

            case DatabaseMode.MSSQL:
                foreach (var newSchool in NewSchools)
                {
                    stringBuilder.AppendLine(string.Format("MERGE INTO {9} AS trgt USING (SELECT '{0}' code, '{1}' Name, {2} Parish, '{3}' ParishName, {4} Region, '{5}' RegionName, {6} TypeCode, '{7}' TypeName, '{8}' Gender) AS src ON trgt.Code = src.code when matched then update set Name = src.name, Parish = src.Parish, Region = src.Region WHEN NOT MATCHED THEN INSERT (Code, Name, Parish, ParishName, Region, RegionName, TypeCode, TypeName, Gender) VALUES(src.Code, src.Name, src.Parish, src.ParishName, src.Region, src.RegionName, src.TypeCode, src.TypeName, src.Gender);", newSchool.SchoolCode, newSchool.Name.Replace("'", "''"), newSchool.ParishNumber, newSchool.ParishName.Replace("'", "''"), newSchool.RegionNumber, newSchool.RegionName.Replace("'", "''"), newSchool.SchoolTypeCode, newSchool.SchoolTypeName.Replace("'", "''"), newSchool.Gender, tableName) + Environment.NewLine);
                }

                break;
            }


            return(stringBuilder.ToString());
        }
        public OpenDatabaseView(
            DatabaseMode theMode)
        {
            InitializeComponent();

            this._Mode = theMode;
        }
Exemple #3
0
        public void SetData(bool SetCountry = false)
        {
            using (MySqlDataReader r = Database.RunQuery($"SELECT * FROM users_stats WHERE id = {UserId}"))
            {
                if (r.Read())
                {
                    if (SetCountry)
                    {
                        Country = r.GetString("country");
                    }

                    if (this.Mode > 3)
                    {
                        this.Mode = 0;
                    }
                    DatabaseMode Mode = (DatabaseMode)this.Mode;
                    RankedScore = r.GetInt64($"ranked_score_{Mode}");
                    TotalScore  = r.GetInt64($"total_score_{Mode}");
                    Accuracy    = (r.GetFloat($"avg_accuracy_{Mode}") / 100f);
                    Playcount   = r.GetInt32($"playcount_{Mode}");
                    GameRank    = (int)UserUtils.GetGameRank(UserId, this.Mode);
                    Performance = r.GetInt32($"pp_{Mode}");
                }
            }
        }
Exemple #4
0
        public Database(String Home = "./Databases/", DatabaseMode loadMode = DatabaseMode.OnDemand, CryptographyCredential cryptographyCredential = null)
        {
            givenHome = Home;
            if (cryptographyCredential == null)
            {
                this.cryptographyCredential = new CryptographyCredential();
            }
            else
            {
                this.cryptographyCredential = cryptographyCredential;
                aes.Key = cryptographyCredential.Key;
                aes.IV  = cryptographyCredential.IV;
            }
            HomeDirectory = new DirectoryInfo(Home);
            LoadMode      = loadMode;
            switch (LoadMode)
            {
            case DatabaseMode.OnDemand:
            {
                //Do nothing.
                //Things will only be loaded when they are needed.
            }
            break;

            case DatabaseMode.Cache:
                break;

            case DatabaseMode.SemiCache:
                break;

            default:
                break;
            }
        }
        private void CreateDatabaseView_Show(
            DatabaseMode theMode)
        {
            // Instantiate an instance
            CreateDatabaseView theView = new CreateDatabaseView(theMode);

            theView.textboxSourceDirectory.Leave += 
                new EventHandler(CreateDatabaseView_textboxSourceDirectory_Leave);
            theView.buttonSourceDirectory.Click += 
                new EventHandler(CreateDatabaseView_buttonSourceDirectory_Click);
            theView.textboxTargetFile.Leave +=
                new EventHandler(CreateDatabaseView_textboxTargetFile_Leave);
            theView.buttonTargetFile.Click +=
                new EventHandler(CreateDatabaseView_buttonTargetFile_Click);
            theView.buttonOK.Click +=
                new EventHandler(CreateDatabaseView_buttonOK_Click);

            switch (theMode)
            {
                case DatabaseMode.CreateMusicDatabase:
                case DatabaseMode.RefreshMusicDatabase:
                    theView.SaveFileDialog.Filter =
                        "Karaokidex Music Databases (*.kmdb)|*.kmdb";
                    theView.SaveFileDialog.DefaultExt =
                        "kmdb";

                    if (!String.IsNullOrEmpty(RegistryAgent.LastMusicDatabase))
                    {
                        theView.textboxSourceDirectory.Text =
                            DatabaseLayer.GetSourceDirectory(
                                new FileInfo(RegistryAgent.LastMusicDatabase));

                        theView.textboxTargetFile.Text =
                            RegistryAgent.LastMusicDatabase;
                    }
                    break;
                default:
                    theView.SaveFileDialog.Filter =
                        "Karaokidex Karokie Databases (*.kkdb)|*.kkdb";
                    theView.SaveFileDialog.DefaultExt =
                        "kkdb";

                    if (!String.IsNullOrEmpty(RegistryAgent.LastKaraokeDatabase))
                    {
                        theView.textboxSourceDirectory.Text =
                            DatabaseLayer.GetSourceDirectory(
                                new FileInfo(RegistryAgent.LastKaraokeDatabase));

                        theView.textboxTargetFile.Text =
                            RegistryAgent.LastKaraokeDatabase;
                    }
                    break;
            }

            Controller.IsViewValid(theView);

            // Show the form
            theView.ShowDialog(this._MainView);
        }
Exemple #6
0
        protected virtual string GetConnectionString(DatabaseMode mode)
        {
            string connectionName = BaseDao.GetConnectionName(_dataBaseName);

            if (mode != DatabaseMode.All)
            {
                connectionName = string.Format("{0}_{1}", mode, connectionName);
            }

            return(ConfigurationManager.ConnectionStrings[connectionName].ConnectionString);
        }
        private void ButtonGenerateSQL_Click(object sender, RoutedEventArgs e)
        {
            DatabaseMode dbMode = DatabaseMode.MySQL;

            if (radioButtonMSSQL.IsChecked.Value)
            {
                dbMode = DatabaseMode.MSSQL;
            }

            TextBoxSQL.Text = vm.GetUpdateSQL(dbMode, textBoxTableName.Text);
        }
Exemple #8
0
 public bool SetDatabaseMode(string databaseName, DatabaseMode databaseMode)
 {
     lock (_databases)
     {
         if (_databases.ContainsKey(databaseName))
         {
             var dbStore = (DatabaseStore)_databases[databaseName];
             dbStore.DatabaseContext.DatabaseMode = databaseMode;
             return(true);
         }
         return(false);
     }
 }
        private void OpenDatabaseView_Show(
            DatabaseMode theMode,
            FileInfo theDatabaseFileInfo)
        {
            // Instantiate an instance
            OpenDatabaseView theView = new OpenDatabaseView(theMode);

            theView.textboxSourceDirectory.Leave +=
                new EventHandler(OpenDatabaseView_textboxSourceDirectory_Leave);
            theView.buttonSourceDirectory.Click += 
                new EventHandler(OpenDatabaseView_buttonSourceDirectory_Click);
            theView.buttonDatabaseFile.Click +=
                new EventHandler(OpenDatabaseView_buttonDatabaseFile_Click);
            theView.buttonOK.Click +=
                new EventHandler(OpenDatabaseView_buttonOK_Click);

            switch (theView.Mode)
            {
                case DatabaseMode.OpenMusicDatabase:
                    theView.Text = "Open Music Database";

                    theView.OpenFileDialog.Filter =
                        "Karakidex Music Databases|*.kmdb";
                    theView.OpenFileDialog.DefaultExt =
                        "kmdb";
                    break;
                default:
                    theView.Text = "Open Karaoke Database";

                    theView.OpenFileDialog.Filter =
                        "Karakidex Karaoke Databases|*.kkdb";
                    theView.OpenFileDialog.DefaultExt =
                        "kkdb";
                    break;
            }

            if (theDatabaseFileInfo.Exists)
            {
                theView.textboxDatabaseFile.Text =
                    theDatabaseFileInfo.FullName;

                theView.textboxSourceDirectory.Text =
                    DatabaseLayer.GetSourceDirectory(
                        new FileInfo(theDatabaseFileInfo.FullName));

                Controller.IsViewValid(theView);
            }

            // Show the form
            theView.ShowDialog(this._MainView);
        }
Exemple #10
0
        public static Database CreateDatabase(string name, DatabaseMode loadMode = DatabaseMode.OnDemand, CryptographyCredential credential = null, bool isPublic = false)
        {
            Database            database    = new Database();
            DatabaseDescription description = new DatabaseDescription();

            description.isPublic = isPublic;
            if (!Directory.Exists(name))
            {
                Directory.CreateDirectory(name);
            }
            SaveDescription(description, Path.Combine(name, "L2KDB-Description"), credential);
            database.realDB = new LiteDatabase.Database(name, loadMode, credential);
            return(database);
        }
Exemple #11
0
        public async Task StoreAsyncSupportsAmbientTransactionRollback(DatabaseMode mode)
        {
            var database = new Database("StoreAsyncSupportsAmbientTransactionRollback.received.txt", mode);

            StoringTenSwissGuysInTheDatabase(database);

            using (var tx = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                await database.SaveAsync().ConfigureAwait(false);

                // Rollback
            }

            database.Close();
        }
Exemple #12
0
        public async Task StoreAsync(DatabaseMode mode)
        {
            var database = new Database("StoreAsync.received.txt", mode);

            StoringTenSwissGuysInTheDatabase(database);

            try
            {
                await database.SaveAsync().ConfigureAwait(false);
            }
            finally
            {
                database.Close();
            }
        }
Exemple #13
0
        public static Database OpenDatabase(string name, DatabaseMode loadMode = DatabaseMode.OnDemand, CryptographyCredential credential = null)
        {
            Database database = new Database();

            try
            {
                var descption = OpenDescription(Path.Combine(name, "L2KDB-Description"), credential);
                database.Description = descption;
            }
            catch (Exception)
            {
                throw new Exception("WRONG-AES");
            }
            database.realDB = new LiteDatabase.Database(name, loadMode, credential);
            return(database);
        }
Exemple #14
0
        private void InitialDataHelper(string connName)
        {
            if (connName == null)
            {
                m_dataHelper = SQLHelper.Create();
                return;
            }
            DatabaseMode databaseMode = m_DatabaseMode;

            if (databaseMode == DatabaseMode.SqlClient)
            {
                m_dataHelper = SQLHelper.Create(connName);
            }
            else
            {
                m_dataHelper = SQLHelper.Create(connName);
            }
        }
Exemple #15
0
        public DatabaseConfigForm(DatabaseMode Mode)
        {
            InitializeComponent();
            this.DbMode = Mode;

            // Our connection string temp variable
            string         ConnString = (Mode == DatabaseMode.Stats) ? Program.Config.StatsDBConnectionString : Program.Config.GamespyDBConnectionString;
            DatabaseEngine Engine     = (Mode == DatabaseMode.Stats) ? Program.Config.StatsDBEngine : Program.Config.GamespyDBEngine;

            // Fill values for config boxes
            if (Engine == DatabaseEngine.Sqlite)
            {
                TypeSelect.SelectedIndex = 0;
                SQLiteConnectionStringBuilder Builder = new SQLiteConnectionStringBuilder(ConnString);
                if (!String.IsNullOrWhiteSpace(Builder.DataSource))
                {
                    DBName.Text = Path.GetFileNameWithoutExtension(Builder.DataSource);
                }
                else
                {
                    DBName.Text = (Mode == DatabaseMode.Stats) ? "bf2stats" : "gamespy";
                }
            }
            else
            {
                TypeSelect.SelectedIndex = 1;
                MySqlConnectionStringBuilder Builder = new MySqlConnectionStringBuilder(ConnString);
                Hostname.Text = Builder.Server;
                Port.Value    = Builder.Port;
                Username.Text = Builder.UserID;
                Password.Text = Builder.Password;
                DBName.Text   = Builder.Database;
            }

            // === Gamespy Texts
            if (Mode == DatabaseMode.Gamespy)
            {
                // Set header texts
                TitleLabel.Text = "Gamespy Database Configuration";
                DescLabel.Text  = "Which database should gamespy accounts be saved to?";
            }
        }
Exemple #16
0
 private Database OpenDatabaseInternal()
 {
     _dbMode = DatabaseMode.Open;
     if (_database == null)
     {
         _database = new Database(this);
         IDatabaseDesign dbDesign = _database;
         foreach (HashMap.Entry entry in _tables)
         {
             try
             {
                 ((TableStructure)entry.Value).OpenTable(dbDesign);
             }
             catch (IndexIsCorruptedException exception)
             {
                 _tracer.TraceException(exception);
                 _dirty = true;
             }
         }
     }
     return(_database);
 }
 public void process(DbCommand comm, DatabaseMode DBMode)
 {
     if (DateRangeEnabled)
     {
         if (DBMode == DatabaseMode.odbc)
         {
             ((OdbcCommand)comm).Parameters.AddWithValue("p_dr", LowerDate);
             ((OdbcCommand)comm).Parameters.AddWithValue("p_d2", UpperDate);
         }
         else if (DBMode == DatabaseMode.access)
         {
             ((OleDbCommand)comm).Parameters.AddWithValue("p_dr", LowerDate);
             ((OleDbCommand)comm).Parameters.AddWithValue("p_d2", UpperDate);
         }
         else if (DBMode == DatabaseMode.sql_server)
         {
             ((SqlCommand)comm).Parameters.AddWithValue("p_dr", LowerDate);
             ((SqlCommand)comm).Parameters.AddWithValue("p_d2", UpperDate);
         }
     }
     else if (QuarterSelectorEnabled)
     {
         if (DBMode == DatabaseMode.odbc)
         {
             ((OdbcCommand)comm).Parameters.AddWithValue("p_q", QQuarter);
             ((OdbcCommand)comm).Parameters.AddWithValue("p_y", QYear);
         }
         else if (DBMode == DatabaseMode.access)
         {
             ((OleDbCommand)comm).Parameters.AddWithValue("p_q", QQuarter);
             ((OleDbCommand)comm).Parameters.AddWithValue("p_y", QYear);
         }
         else if (DBMode == DatabaseMode.sql_server)
         {
             ((SqlCommand)comm).Parameters.AddWithValue("p_q", QQuarter);
             ((SqlCommand)comm).Parameters.AddWithValue("p_y", QYear);
         }
     }
 }
        public DatabaseConfigForm(DatabaseMode Mode)
        {
            InitializeComponent();
            this.DbMode = Mode;

            // Our connection string temp variable
            string ConnString = (Mode == DatabaseMode.Stats) ? Program.Config.StatsDBConnectionString : Program.Config.GamespyDBConnectionString;
            DatabaseEngine Engine = (Mode == DatabaseMode.Stats) ? Program.Config.StatsDBEngine : Program.Config.GamespyDBEngine;

            // Fill values for config boxes
            if (Engine == DatabaseEngine.Sqlite)
            {
                TypeSelect.SelectedIndex = 0;
                SQLiteConnectionStringBuilder Builder = new SQLiteConnectionStringBuilder(ConnString);
                if (!String.IsNullOrWhiteSpace(Builder.DataSource))
                    DBName.Text = Path.GetFileNameWithoutExtension(Builder.DataSource);
                else
                    DBName.Text = (Mode == DatabaseMode.Stats) ? "bf2stats" : "gamespy";
            }
            else
            {
                TypeSelect.SelectedIndex = 1;
                MySqlConnectionStringBuilder Builder = new MySqlConnectionStringBuilder(ConnString);
                Hostname.Text = Builder.Server;
                Port.Value = Builder.Port;
                Username.Text = Builder.UserID;
                Password.Text = Builder.Password;
                DBName.Text = Builder.Database;
            }

            // === Gamespy Texts
            if (Mode == DatabaseMode.Gamespy)
            {
                // Set header texts
                TitleLabel.Text = "Gamespy Database Configuration";
                DescLabel.Text = "Which database should gamespy accounts be saved to?";
            }
        }
        public CreateDatabaseView(
            DatabaseMode theMode)
        {
            InitializeComponent();

            this._Mode = theMode;

            switch (theMode)
            {
                case DatabaseMode.RefreshKaraokeDatabase:
                    this.Text = "Refresh a Karaoke Database";
                    break;
                case DatabaseMode.CreateMusicDatabase:
                    this.Text = "Create a Music Database";
                    break;
                case DatabaseMode.RefreshMusicDatabase:
                    this.Text = "Refresh a Music Database";
                    break;
                default:
                    this.Text = "Create a Karaoke Database";
                    break;
            }
        }
Exemple #20
0
        public Database(string storePath, DatabaseMode mode = DatabaseMode.Synchronous)
        {
            store = new DatabaseStore(storePath);
            this.mode = mode;

            switch (mode)
            {
                case DatabaseMode.Synchronous:
                    saveUnderTxAsync = tx => 
                    Task.FromResult(tx.EnlistVolatile(new SynchronousSaveResourceManager(SaveInternalAsync), EnlistmentOptions.None));
                    break;
                case DatabaseMode.Dangerous:
                    saveUnderTxAsync = tx => 
                    Task.FromResult(tx.EnlistVolatile(new DangerousResourceManager(SaveInternalAsync), EnlistmentOptions.None));
                    break;
                case DatabaseMode.AsyncBlocking:
                    saveUnderTxAsync = tx => 
                    Task.FromResult(tx.EnlistVolatile(new AsynchronousBlockingResourceManager(SaveInternalAsync), EnlistmentOptions.None));
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }
        }
        private void OpenDatabaseView_Show(
            DatabaseMode theMode)
        {
            // Instantiate an instance
            OpenDatabaseView theView = new OpenDatabaseView(theMode);

            theView.textboxDatabaseFile.Leave += 
                new EventHandler(OpenDatabaseView_textboxDatabaseFile_Leave);
            theView.buttonDatabaseFile.Click +=
                new EventHandler(OpenDatabaseView_buttonDatabaseFile_Click);
            theView.textboxSourceDirectory.Leave += 
                new EventHandler(OpenDatabaseView_textboxSourceDirectory_Leave);
            theView.buttonSourceDirectory.Click +=
                new EventHandler(OpenDatabaseView_buttonSourceDirectory_Click);
            theView.buttonOK.Click +=
                new EventHandler(OpenDatabaseView_buttonOK_Click);

            switch (theMode)
            {
                case DatabaseMode.OpenMusicDatabase:
                    theView.OpenFileDialog.Filter =
                        "Karakidex Music Databases|*.kmdb";
                    theView.OpenFileDialog.DefaultExt =
                        "kmdb";
                    break;
                default:
                    theView.OpenFileDialog.Filter =
                        "Karakidex Karaoke Databases|*.kkdb";
                    theView.OpenFileDialog.DefaultExt =
                        "kkdb";
                    break;
            }

            // Show the form
            theView.ShowDialog(this._MainView);
        }
Exemple #22
0
 public DBStructure(string path, string dbName, DatabaseMode dbMode)
 {
     _dbMode = dbMode;
     Init(path, dbName);
 }
        public override IDatabase GetDatabase(DatabaseMode mode)
        {
            var connection = new MySqlConnection(GetConnectionString(mode));

            return new Database(connection, SqlGenerator);
        }
Exemple #24
0
 public bool SetDatabaseMode(string cluster, string databaseName, DatabaseMode databaseMode)
 {
     return(_session.SetDatabaseMode(cluster, databaseName, databaseMode));
 }
 public bool SetDatabaseMode(string cluster, string shardName, string databaseName, DatabaseMode databaseMode)
 {
     return(dbMgtServer.SetDatabaseMode(cluster, shardName, databaseName, databaseMode));
 }
        public async Task StoreAsync(DatabaseMode mode)
        {
            var slide = new Slide(title: "Store Async");
            await slide
                .BulletPoint("OMG! You just rolled your own NoSQL database, right?")

                .Sample(async () =>
                {
                    var database = new Database("StoreAsync.received.txt", mode);
                    StoringTenSwissGuysInTheDatabase(database);

                    try
                    {
                        await database.SaveAsync().ConfigureAwait(false);
                    }
                    finally
                    {
                        database.Close();
                    }
                });
        }
 public DbInfo(DatabaseMode databaseMode, string provider)
 {
     this.databaseMode = databaseMode;
     this.provider = provider;
 }
Exemple #28
0
        public async Task StoreAsync(DatabaseMode mode)
        {
            var database = new Database("StoreAsync.received.txt", mode);
            StoringTenSwissGuysInTheDatabase(database);

            try
            {
                await database.SaveAsync().ConfigureAwait(false);
            }
            finally
            {
                database.Close();
            }
        }
        /// <summary>
        /// データベースにデータをセーブする。
        /// </summary>
        /// <param name="ruby">Rubyランタイムのインスタンス。</param>
        /// <param name="databasePath">データベースパス。</param>
        /// <param name="data">保存対象のデータ。</param>
        /// <param name="mode">データベースモード。</param>
        public static void SaveDatabase(
            ScriptEngine ruby,
            string databasePath,
            dynamic data,
            DatabaseMode? mode = null)
        {
            if (mode == null)
            {
                mode = GetDatabaseMode(data);
            }

            if (mode == DatabaseMode.Script && data is List<ScriptData>)
            {
                data = EncodeScript(data);
            }

            bool modeMatched = mode == GetDatabaseMode(data);

            if (!modeMatched)
            {
                throw new FormatException("保存するデータベース内容とデータベースモードが一致しません。");
            }

            var rubyData = EncodeRubyObject(ruby, data, mode);

            var scope = ruby.CreateScope();
            scope.SetVariable("path", databasePath);
            scope.SetVariable("data", rubyData);

            ruby.Execute("File.open(path.to_s, 'wb') {|fp| Marshal.dump(data, fp)}", scope);
        }
        /// <summary>
        /// データベースにデータをセーブする。
        /// </summary>
        /// <param name="databasePath">データベースパス。</param>
        /// <param name="data">保存対象のデータ。</param>
        /// <param name="mode">データベースモード。</param>
        public static void SaveDatabase(
            string databasePath,
            dynamic data,
            DatabaseMode? mode = null)
        {
            var runtime = Ruby.CreateRuntime();
            var ruby = runtime.GetEngine("rb");

            SaveDatabase(ruby, databasePath, data, mode);
        }
        /// <summary>
        /// データベースからデータをロードする。
        /// </summary>
        /// <param name="ruby">Rubyランタイムのインスタンス。</param>
        /// <param name="databasePath">データベースパス。</param>
        /// <param name="mode">データベースモード。</param>
        /// <returns>データベースのデータ。</returns>
        public static dynamic LoadDatabase(
            ScriptEngine ruby,
            string databasePath,
            DatabaseMode? mode = null)
        {
            var scope = ruby.CreateScope();
            scope.SetVariable("path", databasePath);

            var rubyData = ruby.Execute("File.open(path.to_s, 'rb') {|fp| Marshal.load(fp.read)}", scope);
            var data = DecodeRubyObject(rubyData, mode);

            if (mode == null)
            {
                mode = GetDatabaseMode(data);
            }

            if (mode != GetDatabaseMode(data))
            {
                throw new FormatException("取得したデータベース内容とデータベースモードが一致しません。");
            }

            // スクリプトデータの場合はデコード処理を行う
            if (mode == DatabaseMode.Script)
            {
                data = DecodeScript(data);
            }

            return data;
        }
        /// <summary>
        /// データベースからデータをロードする。
        /// </summary>
        /// <param name="databasePath">データベースパス。</param>
        /// <param name="mode">データベースモード。</param>
        /// <returns>データベースのデータ。</returns>
        public static dynamic LoadDatabase(
            string databasePath,
            DatabaseMode? mode = null)
        {
            var runtime = Ruby.CreateRuntime();
            var ruby = runtime.GetEngine("rb");

            return WarlockDatabase.LoadDatabase(ruby, databasePath, mode);
        }
Exemple #33
0
        private void _RadioButtonMode_CheckedChanged(
            object sender,
            EventArgs e)
        {
            this._Mode =
                this._radioSearchKaraokeDatabase.Checked
                ? DatabaseMode.SearchKaraokeDatabase
                : DatabaseMode.SearchMusicDatabase;

            if (!String.IsNullOrEmpty(this._textboxCriteria.Text))
            {
                this._buttonSearch.PerformClick();
            }
            else
            {
                this.Focus();
            }
        }
        public string GetUpdateSQL(DatabaseMode dbMode, string tableName)
        {
            StringBuilder stringBuilder = new StringBuilder();
            switch (dbMode)
            {
                case DatabaseMode.MySQL:
                    foreach (var newSchool in NewSchools)
                    {
                        stringBuilder.AppendLine(string.Format("INSERT INTO {9} (school_code,name,parish_number,parish_name,region_number,region_name,type_code,type_name,gender) VALUES ( '{0}','{1}',{2},'{3}',{4},'{5}','{6}','{7}','{8}' ) ON DUPLICATE KEY UPDATE type_code = VALUES(type_code), type_name = VALUES(type_name), gender = VALUES(gender);", newSchool.SchoolCode, newSchool.Name.Replace("'", "\\'"), newSchool.ParishNumber, newSchool.ParishName.Replace("'", "\\'"), newSchool.RegionNumber, newSchool.RegionName.Replace("'", "\\'"), newSchool.SchoolTypeCode, newSchool.SchoolTypeName.Replace("'", "\\'"), newSchool.Gender, tableName) + Environment.NewLine);
                    }
                    break;
                case DatabaseMode.MSSQL:
                    foreach (var newSchool in NewSchools)
                    {
                        stringBuilder.AppendLine(string.Format("MERGE INTO {9} AS trgt USING (SELECT '{0}' code, '{1}' Name, {2} Parish, '{3}' ParishName, {4} Region, '{5}' RegionName, {6} TypeCode, '{7}' TypeName, '{8}' Gender) AS src ON trgt.Code = src.code when matched then update set Name = src.name, Parish = src.Parish, Region = src.Region WHEN NOT MATCHED THEN INSERT (Code, Name, Parish, ParishName, Region, RegionName, TypeCode, TypeName, Gender) VALUES(src.Code, src.Name, src.Parish, src.ParishName, src.Region, src.RegionName, src.TypeCode, src.TypeName, src.Gender);", newSchool.SchoolCode, newSchool.Name.Replace("'", "''"), newSchool.ParishNumber, newSchool.ParishName.Replace("'", "''"), newSchool.RegionNumber, newSchool.RegionName.Replace("'", "''"), newSchool.SchoolTypeCode, newSchool.SchoolTypeName.Replace("'", "''"), newSchool.Gender, tableName) + Environment.NewLine);
                    }

                    break;
            }

            return stringBuilder.ToString();
        }
        /// <summary>
        /// Displays the Database configuration form for the selected database type (Stats or Gamespy)
        /// </summary>
        /// <param name="Mode">The database type</param>
        /// <param name="Parent">The parent window to Dialog over</param>
        public static void ShowDatabaseSetupForm(DatabaseMode Mode, Form Parent = null)
        {
            // Try and get the active form
            if (Parent == null) Parent = Form.ActiveForm;

            using (DatabaseConfigForm F = new DatabaseConfigForm(Mode))
            {
                if (Parent != null && Parent.IsHandleCreated && !Parent.InvokeRequired)
                    F.ShowDialog(Parent);
                else
                    F.ShowDialog();
            }
        }
        /// <summary>
        /// Rubyオブジェクトを.netで扱う値へ復号する。
        /// </summary>
        /// <param name="data">Marshalから取得したRubyのオブジェクト。</param>
        /// <param name="mode">データベースモード。</param>
        /// <returns>Rubyオブジェクト復号結果のオブジェクト。</returns>
        public static dynamic DecodeRubyObject(
            dynamic data,
            DatabaseMode? mode = null)
        {
            if (data is BigInteger)
            {
                return (int)data;
            }

            if (data == null) return null;

            if (data is RubyArray)
            {
                var ret = new List<dynamic>();
                var array = (RubyArray)data;

                for (int i = 0; i < array.Count; i++)
                {
                    var item = array[i];

                    ret.Add(DecodeRubyObject(item, mode));
                }

                return ret;
            }
            else if (data is int)
            {
                return data;
            }
            else if (data is float)
            {
                return data;
            }
            else if (data is double)
            {
                return data;
            }
            else if (data is bool)
            {
                return data;
            }
            else if (data is MutableString)
            {
                MutableString ms = (MutableString)data;

                if (mode != DatabaseMode.Script)
                {
                    return Encoding.UTF8.GetString(ms.ToByteArray());
                }
                else
                {
                    return ms.ToByteArray();
                }
            }
            else if (data is Hash)
            {
                var hash = (Hash)data;
                var ret = new Dictionary<dynamic, dynamic>();

                foreach (object key in hash.Keys)
                {
                    ret.Add(
                        DecodeRubyObject(key, mode),
                        DecodeRubyObject(hash[key], mode)
                    );
                }

                return ret;
            }
            else if (data is RubyObject)
            {
                RubyObject rObj = (RubyObject)data;
                var ret = new DatabaseClassData()
                {
                    ClassName = rObj.ImmediateClass.GetNonSingletonClass().Name
                };

                var id = rObj.GetInstanceData();
                Dictionary<string, object> variables = (Dictionary<string, object>)id.GetType().GetField(
                    "_instanceVars",
                    BindingFlags.Instance |

                    BindingFlags.NonPublic
                ).GetValue(id);

                foreach (string key in variables.Keys)
                {
                    ret.Variables.Add(key.Substring(1), DecodeRubyObject(variables[key], mode));
                }

                return ret;
            }
            else
            {
                return data;
            }
        }
Exemple #37
0
        public async Task StoreAsyncSupportsAmbientTransactionComplete(DatabaseMode mode)
        {
            var database = new Database("StoreAsyncSupportsAmbientTransactionComplete.received.txt", mode);
            StoringTenSwissGuysInTheDatabase(database);

            using (var tx = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                await database.SaveAsync().ConfigureAwait(false);

                tx.Complete();
            }

            database.Close();
        }
        /// <summary>
        /// .netで扱う値へ復号された値をRubyオブジェクトへ変換する。
        /// </summary>
        /// <param name="ruby">Rubyランタイムのインスタンス。</param>
        /// <param name="data">.netで作成したデータベース値。</param>
        /// <param name="mode">データベースモード。</param>
        /// <returns>変換結果のRubyオブジェクト。</returns>
        private static dynamic EncodeRubyObject(
            ScriptEngine ruby,
            dynamic data,
            DatabaseMode? mode)
        {
            if (data == null) return null;

            if (data is List<dynamic>)
            {
                var ret = new RubyArray();
                var array = (List<dynamic>)data;

                foreach (var item in array)
                {
                    ret.Add(EncodeRubyObject(ruby, item, mode));
                }

                return ret;
            }
            else if (data is int)
            {
                return data;
            }
            else if (data is float)
            {
                return data;
            }
            else if (data is double)
            {
                return data;
            }
            else if (data is bool)
            {
                return data;
            }
            else if (data is string)
            {
                return MutableString.CreateBinary(Encoding.UTF8.GetBytes(data), RubyEncoding.Ascii);
            }
            else if (data is byte[])
            {
                if (mode == DatabaseMode.Script)
                {
                    return MutableString.CreateBinary(data, RubyEncoding.Ascii);
                }
                else
                {
                    throw new NotImplementedException();
                }
            }
            else if (data is Dictionary<dynamic, dynamic>)
            {
                var hash = (Dictionary<dynamic, dynamic>)data;
                var ret = new Hash(new Dictionary<object, object>());

                foreach (var key in hash.Keys)
                {
                    ret.Add(
                        EncodeRubyObject(ruby, key, mode),
                        EncodeRubyObject(ruby, hash[key], mode)
                    );
                }

                return ret;
            }
            else if (data is DatabaseClassData)
            {
                var dData = (DatabaseClassData)data;

                RubyClass clazz = ruby.Execute(dData.ClassName);
                RubyObject ret = ruby.Operations.CreateInstance(clazz, dData.ConstructorParameters);

                foreach (var variable in dData.Variables)
                {
                    ruby.Operations.SetMember(
                        ret,
                        variable.Key,
                        EncodeRubyObject(
                            ruby,
                            variable.Value,
                            mode
                        )
                    );
                }

                return ret;
            }
            else
            {
                return data;
            }
        }
 public Database(DatabaseMode databaseMode, string connectionString)
 {
     this.databaseMode = databaseMode;
     this.connectionString = connectionString;
 }
Exemple #40
0
 public DALBaseNew(string connName, DatabaseMode dbMode)
     : base(connName)
 {
     m_DatabaseMode = dbMode;
     InitialDataHelper(connName);
 }
        public async Task StoreAsyncSupportsAmbientTransactionRollback(DatabaseMode mode)
        {
            var slide = new Slide(title: "Store Async supports ambient transactions - rollback");
            await slide
                .Sample(async () =>
                {
                    var database = new Database("StoreAsyncSupportsAmbientTransactionRollback.received.txt", mode);
                    StoringTenSwissGuysInTheDatabase(database);

                    using (var tx = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
                    {
                        await database.SaveAsync().ConfigureAwait(false);

                        // Rollback
                    }

                    database.Close();
                });
        }
Exemple #42
0
 /// <summary>
 /// ����DAL����
 /// </summary>
 /// <param name="connName">���ݿ�������</param>
 /// <param name="dbMode">���ݿ�����</param>
 public DALBase(string connName, DatabaseMode dbMode) : base(connName)
 {
     this.m_DatabaseMode = dbMode;
     this.InitialDataHelper(connName);
 }