public static void BuildChildNodes(ITreeBuilder builder, ColumnSchema node) { }
public override ColumnSchema[] GetTableColumns(TableSchema table) { if (IsOpen == false && Open () == false) throw new InvalidOperationException ("Invalid connection"); ArrayList collection = new ArrayList (); using (MySqlCommand command = new MySqlCommand ()) { command.Connection = Connection; // XXX: Use String.Format cause mysql parameters suck assmar. command.CommandText = String.Format ("DESCRIBE {0}", table.Name); MySqlDataReader r = command.ExecuteReader (); while (r.Read ()) { ColumnSchema column = new ColumnSchema (); column.Provider = this; column.Name = r.GetString (0); column.DataTypeName = r.GetString (1); column.NotNull = r.IsDBNull (2); column.Default = r.GetString (4); column.Options["extra"] = r.GetString (5); collection.Add (column); } r.Close (); } return (ColumnSchema[]) collection.ToArray (typeof (ColumnSchema)); }
/// <summary> /// Get columns for a table. /// </summary> public override ColumnSchema[] GetTableColumns(TableSchema table) { if (IsOpen == false && Open () == false) throw new InvalidOperationException ("Invalid connection"); ArrayList collection = new ArrayList(); SybaseConnection con2 = (SybaseConnection) (((ICloneable) connection).Clone ()); if (con2.State == ConnectionState.Closed) con2.Open(); SybaseCommand command = con2.CreateCommand (); command.CommandText = "select su.name as owner, so.name as table_name, sc.name as column_name, " + " st.name as date_type, sc.length as column_length, " + " sc.prec as data_preceision, sc.scale as data_scale, " + " 0 as isnullable, sc.colid as column_id " + "from dbo.syscolumns sc, dbo.sysobjects so, " + " dbo.systypes st, dbo.sysusers su " + "where sc.id = so.id " + "and so.type in ('U','S') " + "and so.name = '" + table.Name + "' " + "and su.name = '" + table.OwnerName + "' " + "and su.uid = so.uid " + "and sc.usertype = st.usertype " + "order by sc.colid"; SybaseDataReader r = command.ExecuteReader(); while (r.Read()) { ColumnSchema column = new ColumnSchema(); try { column.Name = r.GetString(2); } catch {} column.Provider = this; try { column.DataTypeName = r.GetString(3); } catch {} try { column.Default = ""; } catch {} column.Comment = ""; column.OwnerName = table.OwnerName; column.SchemaName = table.OwnerName; try { column.NotNull = r.GetValue(7).ToString() == "0" ? true : false; } catch {} try { column.Length = r.GetInt32(4); } catch {} //try { column.Precision = GetInt(r, 5)); } catch {} //try { column.Scale = GetIn(r, 6); } catch {} StringBuilder sb = new StringBuilder(); sb.AppendFormat("{0} {1}{2}", column.Name, column.DataTypeName, (column.Length > 0) ? ("(" + column.Length + ")") : ""); sb.AppendFormat(" {0}", column.NotNull ? "NOT NULL" : "NULL"); //if (column.Default.Length > 0) // sb.AppendFormat(" DEFAULT {0}", column.Default); column.Definition = sb.ToString(); collection.Add(column); } r.Close (); r = null; command.Dispose (); command = null; con2.Close (); con2 = null; return (ColumnSchema[]) collection.ToArray(typeof(ColumnSchema)); }
/// <summary> /// Get a collection of columns within a view /// </summary> public override ColumnSchema[] GetViewColumns(ViewSchema view) { if (IsOpen == false && Open() == false) throw new Exception ("No connection to database"); ArrayList collection = new ArrayList(); SybaseConnection con2 = (SybaseConnection) (((ICloneable) connection).Clone ()); if (con2.State == ConnectionState.Closed) con2.Open(); SybaseCommand command = con2.CreateCommand (); command.CommandText = "SELECT * " + " FROM " + view.Name + " WHERE 1 = 0"; SybaseDataReader r = command.ExecuteReader(); for (int i = 0; i < r.FieldCount; i++) { ColumnSchema column = new ColumnSchema(); column.Name = r.GetName(i); column.DataTypeName = r.GetDataTypeName(i); column.Default = ""; column.Definition = ""; column.OwnerName = view.OwnerName; column.SchemaName = view.OwnerName; collection.Add(column); } command.Dispose (); command = null; con2.Close (); con2 = null; return (ColumnSchema[]) collection.ToArray (typeof(ColumnSchema)); }
/// <summary> /// Get columns for a table. /// </summary> public override ColumnSchema[] GetTableColumns(TableSchema table) { if (IsOpen == false && Open () == false) throw new InvalidOperationException ("Invalid connection"); ArrayList collection = new ArrayList(); NpgsqlCommand command = new NpgsqlCommand(); command.Connection = connection; command.CommandText = "SELECT a.attname, a.attnotnull, a.attlen, " + "typ.typname, adef.adsrc " + "FROM " + " pg_catalog.pg_attribute a LEFT JOIN " + " pg_catalog.pg_attrdef adef " + " ON a.attrelid=adef.adrelid " + " AND a.attnum=adef.adnum " + " LEFT JOIN pg_catalog.pg_type t ON a.atttypid=t.oid, " + " pg_catalog.pg_type typ " + "WHERE " + " a.attrelid = (SELECT oid FROM pg_catalog.pg_class " + " WHERE relname='" + table.Name + "') " + "AND a.attnum > 0 AND NOT a.attisdropped " + "AND a.atttypid = typ.oid " + "ORDER BY a.attnum;"; NpgsqlDataReader r = command.ExecuteReader(); while (r.Read()) { ColumnSchema column = new ColumnSchema(); try { column.Name = r.GetString(0); } catch {} column.Provider = this; try { column.DataTypeName = r.GetString(3); } catch {} try { column.Default = r.GetString(4); } catch {} column.Comment = ""; column.OwnerName = ""; column.SchemaName = table.SchemaName; try { column.NotNull = r.GetBoolean(1); } catch {} try { column.Length = r.GetInt32(2); } catch {} StringBuilder sb = new StringBuilder(); sb.AppendFormat("{0} {1}{2}", column.Name, column.DataTypeName, (column.Length > 0) ? ("(" + column.Length + ")") : ""); sb.AppendFormat(" {0}", column.NotNull ? "NOT NULL" : "NULL"); if (column.Default.Length > 0) sb.AppendFormat(" DEFAULT {0}", column.Default); column.Definition = sb.ToString(); collection.Add(column); } r.Close (); return (ColumnSchema[]) collection.ToArray(typeof(ColumnSchema)); }
/// <summary> /// Get a collection of columns within a view /// </summary> public override ColumnSchema[] GetViewColumns(ViewSchema view) { if (IsOpen == false && Open() == false) throw new Exception ("No connection to database"); ArrayList collection = new ArrayList(); NpgsqlCommand command = new NpgsqlCommand (); command.Connection = connection; command.CommandText = "SELECT attname, typname, attlen, attnotnull " + "FROM " + " pg_catalog.pg_attribute a LEFT JOIN pg_catalog.pg_attrdef adef " + " ON a.attrelid=adef.adrelid " + " AND a.attnum=adef.adnum " + " LEFT JOIN pg_catalog.pg_type t ON a.atttypid=t.oid " + "WHERE " + " a.attrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname='" + view.Name + "') " + " AND a.attnum > 0 AND NOT a.attisdropped " + " ORDER BY a.attnum;"; NpgsqlDataReader r = command.ExecuteReader(); while (r.Read()) { ColumnSchema column = new ColumnSchema(); try { column.Name = r.GetString(0); column.Provider = this; column.DataTypeName = r.GetString(1); column.Default = ""; column.SchemaName = view.SchemaName; column.Definition = ""; column.NotNull = r.GetBoolean(3); column.Length = r.GetInt32(2); } catch { } finally { collection.Add(column); } } r.Close (); return (ColumnSchema[]) collection.ToArray (typeof(ColumnSchema)); }
public override ColumnSchema[] GetProcedureColumns(ProcedureSchema schema) { if (IsOpen == false && Open () == false) throw new InvalidOperationException ("Invalid connection"); ArrayList collection = new ArrayList (); // FIXME: Won't work properly with overload functions. // Maybe check the number of columns in the parameters for // proper match. NpgsqlCommand command = new NpgsqlCommand (); command.Connection = connection; command.CommandText = String.Format ( "SELECT format_type (prorettype, NULL) " + "FROM pg_proc pc, pg_language pl " + "WHERE pc.prolang = pl.oid " + "AND pc.proname = '{0}';", schema.Name); NpgsqlDataReader r = command.ExecuteReader (); while (r.Read ()) { ColumnSchema column = new ColumnSchema (); column.Provider = this; column.DataTypeName = r.GetString (0); column.Name = r.GetString (0); collection.Add (column); } r.Close (); return (ColumnSchema[]) collection.ToArray (typeof (ColumnSchema)); }
public override ColumnSchema[] GetProcedureColumns(ProcedureSchema schema) { if (IsOpen == false && Open () == false) throw new InvalidOperationException ("Invalid connection"); ArrayList collection = new ArrayList (); using (SqlCommand cmd = connection.CreateCommand ()) { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_sproc_columns"; SqlParameter owner = cmd.Parameters.Add ("@procedure_owner", SqlDbType.VarChar); SqlParameter name = cmd.Parameters.Add ("@procedure_name", SqlDbType.VarChar); owner.Value = schema.OwnerName; name.Value = schema.Name; using (SqlDataReader reader = cmd.ExecuteReader ()) { while (reader.Read ()) { ColumnSchema column = new ColumnSchema (); column.Provider = this; column.Name = (string) reader ["COLUMN_NAME"]; column.DataTypeName = (string) reader ["TYPE_NAME"]; collection.Add (column); } } } return (ColumnSchema []) collection.ToArray (typeof (ColumnSchema)); }
/// <summary> /// Get a collection of columns within a view /// </summary> public override ColumnSchema[] GetViewColumns(ViewSchema view) { if (IsOpen == false && Open () == false) throw new InvalidOperationException ("Invalid connection."); ArrayList collection = new ArrayList(); OracleCommand command = new OracleCommand (); command.Connection = connection; command.CommandText = "SELECT * " + " FROM " + view.Name + " WHERE 1 = 0"; OracleDataReader r = command.ExecuteReader(); for (int i = 0; i < r.FieldCount; i++) { ColumnSchema column = new ColumnSchema(); column.Name = r.GetName(i); column.DataTypeName = r.GetDataTypeName(i); column.Default = ""; column.Definition = ""; column.OwnerName = view.OwnerName; column.SchemaName = view.OwnerName; collection.Add(column); } return (ColumnSchema[]) collection.ToArray (typeof(ColumnSchema)); }
/// <summary> /// Get columns for a table. /// </summary> public override ColumnSchema[] GetTableColumns(TableSchema table) { if (IsOpen == false && Open () == false) throw new InvalidOperationException ("Invalid connection."); ArrayList collection = new ArrayList(); OracleCommand command = new OracleCommand(); command.Connection = connection; command.CommandText = "SELECT OWNER, TABLE_NAME, COLUMN_NAME, " + " DATA_TYPE, DATA_LENGTH, DATA_PRECISION, DATA_SCALE, " + " NULLABLE, COLUMN_ID, DEFAULT_LENGTH, DATA_DEFAULT " + "FROM ALL_TAB_COLUMNS " + "WHERE OWNER = '" + table.OwnerName + "' " + "AND TABLE_NAME = '" + table.Name + "' " + "ORDER BY OWNER, TABLE_NAME, COLUMN_ID"; OracleDataReader r = command.ExecuteReader(); while (r.Read()) { ColumnSchema column = new ColumnSchema(); try { column.Name = r.GetValue(2).ToString(); } catch {} column.Provider = this; try { column.DataTypeName = r.GetValue(3).ToString(); } catch {} column.Default = ""; column.Comment = ""; column.OwnerName = table.OwnerName; column.SchemaName = table.OwnerName; try { column.NotNull = r.GetValue(7).ToString() == "Y" ? true : false; } catch {} try { column.Length = GetInt(r, 4); } catch {} try { column.Precision = GetInt(r, 5); } catch {} try { column.Scale = GetInt(r, 6); } catch {} try { column.ColumnID = GetInt(r, 8); } catch {} StringBuilder sb = new StringBuilder(); sb.AppendFormat("{0} {1}{2}", column.Name, column.DataTypeName, (column.Length > 0) ? ("(" + column.Length + ")") : ""); sb.AppendFormat(" {0}", column.NotNull ? "NOT NULL" : "NULL"); //if (column.Default.Length > 0) // sb.AppendFormat(" DEFAULT {0}", column.Default); column.Definition = sb.ToString(); collection.Add(column); } return (ColumnSchema[]) collection.ToArray(typeof(ColumnSchema)); }
/// <summary> /// Get columns for a table. /// </summary> public override ColumnSchema[] GetTableColumns(TableSchema table) { if (IsOpen == false && Open () == false) throw new InvalidOperationException ("Invalid connection"); ArrayList collection = new ArrayList(); DataTable table2 = connection.GetSchema ("Columns", new string[] {null, null, table.Name, null}); for (int r = 0; r < table2.Rows.Count; r++) { DataRow row2 = table2.Rows[r]; string columnName = row2["COLUMN_NAME"].ToString(); string dataType = row2["COLUMN_DATA_TYPE"].ToString(); int columnSize = 0; if (row2["COLUMN_SIZE"] != DBNull.Value) columnSize = (int) row2["COLUMN_SIZE"]; int precision = 0; if (row2["NUMERIC_PRECISION"] != DBNull.Value) precision = (int) row2["NUMERIC_PRECISION"]; int scale = 0; if (row2["NUMERIC_SCALE"] != DBNull.Value) scale = (int) row2["NUMERIC_SCALE"]; //bool isNullable = false; // FIXME: is nullable //short n = 0; //if (row2["IS_NULLABLE"] != DBNull.Value) // n = (short) row2["IS_NULLABLE"]; // //if (n == 1) // isNullable = true; //int pos = 0; // FIXME: ordinal position //if (row2["ORDINAL_POSITION"] != DBNull.Value) // pos = (int) row2["ORDINAL_POSITION"]; ColumnSchema column = new ColumnSchema(); column.Name = columnName; column.Provider = this; column.DataTypeName = dataType; column.Default = ""; column.Comment = ""; column.OwnerName = ""; column.SchemaName = table.SchemaName; column.NotNull = false; // TODO column.Length = columnSize; column.Precision = precision; column.Scale = scale; StringBuilder sb = new StringBuilder(); sb.AppendFormat("{0} {1}{2}", column.Name, column.DataTypeName, (column.Length > 0) ? ("(" + column.Length + ")") : ""); sb.AppendFormat(" {0}", column.NotNull ? "NOT NULL" : "NULL"); if (column.Default.Length > 0) sb.AppendFormat(" DEFAULT {0}", column.Default); column.Definition = sb.ToString(); collection.Add(column); } return (ColumnSchema[]) collection.ToArray(typeof(ColumnSchema)); }