/// <summary> /// DBテーブルを破棄する。 /// </summary> /// <param name="db"></param> public void DropDb(Xb.Db.Sqlite db) { try { db.Execute($"DROP TABLE {this.TableName}; "); } catch (Exception) { throw; } }
/// <summary> /// DBテーブル・カラムの構造チェックと補正を行う。 /// </summary> /// <param name="db"></param> private void FormatDbTable(Xb.Db.Sqlite db) { try { var sql = new System.Text.StringBuilder(); //1)テーブル存在チェック sql.Clear(); sql.Append($" SELECT name as TABLE_NAME "); sql.Append($" FROM sqlite_master "); sql.Append($" WHERE type = 'table' "); sql.Append($" AND name = {db.Quote(this.TableName)} "); var rtDb = db.Query(sql.ToString()); if (rtDb.RowCount <= 0) { //テーブルが存在しないとき db.Execute(this.GetCreateSql()); } else { //テーブルが存在するとき var rtSt = db.Query($"PRAGMA table_info({db.Quote(this.TableName)}); "); var rowNames = rtSt.Rows.Select(r => r.Get <string>("name")); foreach (var pair in this.DbColumnDefinitions) { if (rowNames.All(n => n != pair.Key)) { db.Execute(this.GetAddColumnSql(pair.Key)); } } } } catch (Exception) { throw; } }