/// <summary> /// Insert Result to database /// </summary> private void databaseSaveAction(List<KeyValuePair<string, object>> cols, Db.intelliScraperProjectStoreInfo storeInfo) { Database.DbManager db = new Database.DbManager(storeInfo.DatabaseSetting.connection, storeInfo.DatabaseSetting.providerName); List<string> attrsToCheck = new List<string>(save.checkExistAttributes.Split(save.checkExistAttributesSeparator.ToCharArray())); if (save.checkExistBeforeSave) { if (db.exist(attrsToCheck, save.tableName, cols)) { if (save.ifExist == Db.saveIfExist.stopAll) Environment.Exit(0); if (save.ifExist == Db.saveIfExist.delete) { db.delete(attrsToCheck, save.tableName, cols); } if (save.ifExist == Db.saveIfExist.update) { List<string> updCols = new List<string>(); foreach (Db.saveMap m in save.map) { if (m != null) updCols.Add(m.mapColName); } db.update(attrsToCheck,updCols, save.tableName, cols); } if (save.ifExist == Db.saveIfExist.insert) db.insert(attrsToCheck, save.tableName, cols); } else db.insert(attrsToCheck, save.tableName, cols); } else db.insert(attrsToCheck, save.tableName, cols); }
/// <summary> /// Get Links from Database /// </summary> private List<string> getUrlFromDatabase() { List<string> links = new List<string>(); Db.intelliScraperProjectStoreInfo storeDb = (from x in Factory.Instance.i.Project.StoreInfo where x.Id == rule.databaseInputDefinition.storeId select x).FirstOrDefault(); if (storeDb != null) { string query = string.Empty; if (rule.databaseInputDefinition.type == Db.linksPageGeneratorDatabaseInputDefinitionType.query) { query = rule.databaseInputDefinition.query; } if (rule.databaseInputDefinition.type == Db.linksPageGeneratorDatabaseInputDefinitionType.readAllTableColumn) { query = string.Format("select * from {1}", rule.databaseInputDefinition.columnName, rule.databaseInputDefinition.tableName); } if (!string.IsNullOrEmpty(query)) { Database.DbManager db = new Database.DbManager(storeDb.DatabaseSetting.connection, storeDb.DatabaseSetting.providerName); //ICollection<KeyValuePair<string, object>> res = db.query(query); IEnumerable<object> obj = db.db.Query<object>(query, null); foreach (object o in obj) { IDictionary<string, object> rows = ( IDictionary<string, object> )o; foreach (KeyValuePair<string,object> row in rows) { if (row.Key == rule.databaseInputDefinition.columnName) { links.Add((string)row.Value); } } } } } return links; }