/// <summary> /// Gets the table column information. /// </summary> /// <param name="tableName">Name of the table.</param> /// <returns></returns> public override List<ColumnInfo> GetTableInfo(string tableName) { var colList = new List<ColumnInfo>(); lock (_persistentConnectionSyncLock) { using (DbCommand command = Provider.CreateCommand("PRAGMA table_info(" + tableName + ");")) { DbConnection conn = OpenConnection(); command.Connection = conn; try { using (var reader = command.ExecuteReader()) { int nameOrd = reader.GetOrdinal("name"); int dbTypeOrd = reader.GetOrdinal("type"); int pkOrd = reader.GetOrdinal("pk"); int notNullOrd = reader.GetOrdinal("notnull"); int defaultValOrd = reader.GetOrdinal("dflt_value"); while (reader.Read()) { var colInfo = new ColumnInfo() { Name = reader.GetString(nameOrd), DBType = reader.GetString(dbTypeOrd), IsPK = reader.GetBoolean(pkOrd), IsRequired = reader.GetBoolean(notNullOrd), Default = (!reader.IsDBNull(defaultValOrd)) ? reader.GetString(defaultValOrd) : null }; colList.Add(colInfo); } } } catch (Exception e) { throw this.ThrowExceptionHelper(conn, command, e); } finally { ReleaseConnection(); } } return colList; } }
/// <summary> /// Adds field to table. /// </summary> /// <param name="tableName">Name of the table.</param> /// <param name="fieldDef">The field definition.</param> public void AddField(string tableName, ColumnInfo fieldDef) { var command = string.Format("ALTER TABLE {0} ADD COLUMN {1};", tableName, fieldDef.GetColumnDef(true)); Execute(command); }