rendered paste bodypublic override View GetView (string viewName)
{
if (!DatabaseProvider.SupportsSchemaType (typeof (View)))
throw new FeatureNotSupportedException ("Views");
MySqlConnection conn = DatabaseProvider.Connection as MySqlConnection;
if (conn == null)
throw new InvalidOperationException ("No connection available.");
ConnectionState originalState = conn.State;
if (conn.State == ConnectionState.Closed)
conn.Open ();
MySqlCommand cmd = conn.CreateCommand ();
cmd.CommandText = String.Format ("DESCRIBE {0};", viewName);
MySqlDataReader dr = cmd.ExecuteReader ();
View view = new View (DatabaseProvider);
view.Name = viewName;
view.SchemaName = DatabaseProvider.Connection.Database;
while (dr.Read ())
{
Column column = new Column (DatabaseProvider, view);
column.Name = dr.GetString (dr.GetOrdinal ("Field"));
column.SchemaName = DatabaseProvider.Connection.Database;
// NOTE: MySql 5 shows "NO" when the column doesn't allow nulls while MySql 4 doesn't
// show anything. Both say YES when nulls are allowed.
column.NotNull = (dr.GetString (dr.GetOrdinal ("Null")) != "YES");
string extras = dr.GetString (dr.GetOrdinal ("Extra"));
column.AutoIncrementSeed = (extras.IndexOf ("auto_increment")>=0)?1:0;
view.Columns.Add (column);
}
dr.Close ();
if (originalState != conn.State)
conn.Close ();
return view;