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; }
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}"); } } }
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); }
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); }
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); }
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); }
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(); }
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(); } }
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); }
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); } }
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?"; } }
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; } }
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); }
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); }
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; }
/// <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); }
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; } }
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; }
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(); }); }
/// <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); }