public void Open(string aConnectionString, ServerType serverType) { dbCache.ConnectionString = aConnectionString; dbCache.ServerType = serverType; switch (serverType) { case ServerType.Firebird: connection = new FbConnection { ConnectionString = aConnectionString }; break; case ServerType.MsSql: connection = new SqlConnection { ConnectionString = aConnectionString }; break; } connection.Open(); if (serverType == ServerType.Firebird) { using (var transaction = connection.BeginTransaction()) { DbData.GetFieldValue(connection, transaction, "select rdb$set_context('USER_SESSION','RPL_SERVICE','1') from rdb$database;"); transaction.Commit(); } } var t = new Thread(LoadData); t.Start(); }
private void DoCacheLength() { cacheLength.Clear(); DbConnection connection; if (ServerType == ServerType.Firebird) { connection = new FbConnection(ConnectionString); } else { connection = new SqlConnection(ConnectionString); } try { connection.Open(); using (var transaction = connection.BeginTransaction()) { var databaseMap = FiasDatabaseMap.LoadFromFile(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\Fias.Mapping.xml"); foreach (var tableMap in databaseMap.Tables) { if (stopEvent.WaitOne(0)) { return; //throw new StopException(); } var pkFieldMap = tableMap.Fields.First(a => a.IsPrimaryKey); var length = Convert.ToInt32(DbData.GetFieldValue(connection, transaction, string.Format("select count({0})from {1};", pkFieldMap.DatabaseName, tableMap.DatabaseName))); cacheLength.Add(tableMap.DatabaseName, length); } } } finally { connection.Dispose(); } }
private void LoadData() { if (OnLoadDataStart != null) { OnLoadDataStart(); } try { ClearList(); var databaseMap = FiasDatabaseMap.LoadFromFile(RootFolder + "\\Fias.Mapping.xml"); using (var transaction = connection.BeginTransaction()) { var dataFolder = RootFolder + "\\Data\\"; foreach (var dateFolder in Directory.GetDirectories(dataFolder).OrderBy(a => a)) { var extractedFolder = dateFolder + "\\Extracted\\"; if (!Directory.Exists(extractedFolder)) { continue; } foreach (var xmlFileName in Directory.GetFiles(extractedFolder)) { var fInfo = new FiasFileInfo { Description = Path.GetFileName(dateFolder), FileName = xmlFileName }; var fileName = Path.GetFileName(xmlFileName); var dtImport = DbData.GetFieldValue(connection, transaction, string.Format("select DT_IMPORT from FIAS_IMPORT_HISTORY where name = '{0}';", fileName)); if (dtImport == null || dtImport is DBNull) { var c = 0; var updated = DbData.GetFieldValue(connection, transaction, string.Format("select LAST_COMMIT_COUNT from FIAS_IMPORT_HISTORY where name = '{0}';", fileName)); if (!(updated == null || updated is DBNull)) { c = Convert.ToInt32(updated); } fInfo.StatusPos = c; fInfo.Status = c == 0 ? string.Format("Пусто") : string.Format("Загружено записей {0}", c); fInfo.IsExists = false; } else { fInfo.Url = dtImport.ToString(); fInfo.Status = "Полностью загружен"; fInfo.IsExists = true; } var tableMap = databaseMap.Tables.FirstOrDefault(a => { var name = Path.GetFileName(fInfo.FileName); return(name != null && name.StartsWith(a.XmlDescription)); }); fInfo.Length = tableMap == null ? 0 : tableMap.OrderNum; fInfo.Checked = tableMap != null; AddListItem(fInfo); } } } } finally { if (OnLoadDataComplete != null) { OnLoadDataComplete(); } } }