/// <summary> /// Проверка существования столбца /// </summary> /// <param name="db"></param> /// <param name="table_name"></param> /// <param name="column_name"></param> /// <returns></returns> internal static bool CheckColumn(this DatabaseSqlite db, string table_name, string column_name) { if (!db.IsConnected()) { db.Connect(); } if (db.IsConnected()) { using (var command = db.connection.CreateCommand()) { try { string query = $"PRAGMA table_info({table_name});"; command.CommandText = query; using (var reader = command.ExecuteReader()) { while (reader.Read()) { var name = reader["name"]?.ToString() ?? string.Empty; if (name.Equals(column_name)) { return(true); } } } } catch (Exception ex) { db.CallError(ex.Message, ex.StackTrace); } } } return(false); }
/// <summary> /// Проверка существования столбцов /// </summary> /// <param name="db"></param> /// <param name="table_name"></param> /// <param name="columns"></param> /// <param name="dif_columns">коллекция столбцов, который отсутствуют в таблице</param> /// <returns>true - если таблица соответствует схеме</returns> internal static bool TryCheckColumns(this DatabaseSqlite db, string table_name, IEnumerable <SchemasColumn> columns, out IEnumerable <SchemasColumn> dif_columns) { if (!db.IsConnected()) { db.Connect(); } if (db.IsConnected()) { using (var command = db.connection.CreateCommand()) { try { string query = $"PRAGMA table_info({table_name});"; command.CommandText = query; using (var reader = command.ExecuteReader()) { List <string> list_columns = new List <string>(); while (reader.Read()) { var name = reader["name"]?.ToString() ?? string.Empty; if (!string.IsNullOrWhiteSpace(name)) { list_columns.Add(name); } } dif_columns = columns.Where(o => list_columns.Find(x => x.Equals(o.Name)) == null).ToArray(); return(dif_columns.Count() == 0); } } catch (Exception ex) { db.CallError(ex.Message, ex.StackTrace); } } } dif_columns = Enumerable.Empty <SchemasColumn>(); return(false); }