/// <summary> /// Инициализация таблиц базы данных /// </summary> /// <param name="db"></param> internal static void InitSchemas(this DatabaseSqlite db) { if (!db.IsConnected()) { db.Connect(); } foreach (var table in db.tables_schemas) { bool isupdate = false; if (CheckTable(db, table.TableName)) { IEnumerable <SchemasColumn> dif_columns = new SchemasColumn[0]; if (!TryCheckColumns(db, table.TableName, table.Columns, out dif_columns)) { foreach (var column in dif_columns) { CreatColumn(db, table.TableName, column); } isupdate = true; } if (isupdate && !string.IsNullOrWhiteSpace(table.UpdateQuery)) { db.ExecuteNonQuery(table.UpdateQuery); } } else { CreatTable(db, table); } } }
/// <summary> /// Создание таблицы /// </summary> /// <param name="db"></param> /// <param name="structure"></param> /// <returns></returns> internal static bool CreatTable(this DatabaseSqlite db, SchemasTable structure) { if (!db.IsConnected()) { db.Connect(); } if (db.IsConnected()) { string columns = string.Join(", ", structure.Columns.Select(o => o.GetQueryString())); string query = $"CREATE TABLE {structure.TableName} ({columns});"; if (db.ExecuteNonQuery(query)) { if (!string.IsNullOrWhiteSpace(structure.FirstQuery)) { db.ExecuteNonQuery(structure.FirstQuery); } return(true); } } return(false); }
/// <summary> /// Создание столбца /// </summary> /// <param name="db"></param> /// <param name="table_name"></param> /// <param name="column"></param> /// <returns></returns> internal static bool CreatColumn(this DatabaseSqlite db, string table_name, SchemasColumn column) { if (!db.IsConnected()) { db.Connect(); } if (db.IsConnected()) { string query = $"ALTER TABLE {table_name} ADD COLUMN {column.Name} {column.ColumnType}"; if (column.DefaultContent != null) { query += $" DEFAULT ('{column.DefaultContent.ToString().Replace("'", "").Replace("\\", "")}')"; } return(db.ExecuteNonQuery(query)); } return(false); }