private void GetColumns(Model.Database db, Model.Table table) { // 对每个表取字段属性 DataSet dsColumns = dbHelper.ExecuteDataset(CommandType.Text, string.Format("select * from COLUMNS where TABLE_SCHEMA='{0}' and TABLE_NAME='{1}'", db.Name, table.Name), null); foreach (DataRow rField in dsColumns.Tables[0].Rows) { Model.Field field = new Model.Field(); field.IsId = rField["EXTRA"].ToString().ToLower() == "auto_increment"; field.IsKey = rField["COLUMN_KEY"].ToString().ToLower() == "pri"; field.AllowNull = rField["IS_NULLABLE"].ToString().ToLower() == "yes"; field.FieldType = SchemaHelper.GetString(rField["DATA_TYPE"]); field.DefaultValue = SchemaHelper.GetString(rField["COLUMN_DEFAULT"]); field.Descn = SchemaHelper.GetString(rField["COLUMN_COMMENT"]); field.Length = SchemaHelper.GetLong(rField["CHARACTER_MAXIMUM_LENGTH"]); field.Name = SchemaHelper.GetString(rField["COLUMN_NAME"]); field.Pos = SchemaHelper.GetInt(rField["ORDINAL_POSITION"]); table.AddField(field); } }
private Model.Field GetField(string connectionString, string tbName, DataRow r) { Model.Field model = new Model.Field(); model.AllowNull = SchemaHelper.GetBool(r["IS_NULLABLE"]); model.DefaultValue = SchemaHelper.GetString(r["COLUMN_DEFAULT"]); model.Descn = SchemaHelper.GetString(r["DESCRIPTION"]); model.Name = SchemaHelper.GetString(r["COLUMN_NAME"]); model.Position = SchemaHelper.GetInt(r["ORDINAL_POSITION"]); model.Size = SchemaHelper.GetInt(r["CHARACTER_OCTET_LENGTH"]); model.SetDbType(Model.DatabaseTypes.Access, SchemaHelper.GetString(r["DATA_TYPE"])); model.Length = SchemaHelper.GetInt(r["CHARACTER_MAXIMUM_LENGTH"]); model.IsIdentifier = SchemaHelper.GetInt(r["COLUMN_FLAGS"]) == 90 && SchemaHelper.GetInt(r["DATA_TYPE"]) == 3; DataTable dtPrimanyKey = GetDbSchema(connectionString, OleDbSchemaGuid.Primary_Keys, null); foreach (DataRow rp in dtPrimanyKey.Rows) { if (rp[2].ToString() == tbName && rp[3].ToString() == model.Name) { model.IsKeyField = true; } } return(model); }
private void GetColumns(Table table) { DataTable schema; using (SQLiteConnection connection = new SQLiteConnection(helper.ConnectionString)) { connection.Open(); schema = connection.GetSchema("COLUMNS"); } foreach (DataRow r in schema.Select(string.Format("TABLE_NAME = '{0}'", table))) { Model.Field model = new Model.Field(); model.AllowNull = Convert.ToBoolean(r["IS_NULLABLE"]); model.Position = Convert.ToInt32(r["ORDINAL_POSITION"]); model.Name = r["COLUMN_NAME"].ToString(); model.SetDbType(Model.DatabaseTypes.SQLite, SchemaHelper.GetString(r["DATA_TYPE"])); model.DefaultValue = r["COLUMN_DEFAULT"].ToString(); model.Descn = SchemaHelper.GetString(r["DESCRIPTION"]); model.Size = Convert.ToInt32((r["CHARACTER_MAXIMUM_LENGTH"] == DBNull.Value) ? 0 : r["CHARACTER_MAXIMUM_LENGTH"]); model.Length = SchemaHelper.GetInt(r["CHARACTER_MAXIMUM_LENGTH"]); model.IsIdentifier = SchemaHelper.GetBool(r["AUTOINCREMENT"]); if (Convert.ToBoolean(r["PRIMARY_KEY"])) { model.IsKeyField = true; } else { model.IsKeyField = false; } table.AddField(model); } }