public SysDataTable GetDataTypes() { SysDataTable dataTable = new SysDataTable("DataTypes"); dataTable.Columns.Add("TYPE_NAME", typeof(string)); dataTable.Columns.Add("DATA_TYPE", typeof(int)); dataTable.Columns.Add("PRECISION", typeof(int)); dataTable.Columns.Add("LITERAL_PREFIX", typeof(string)); dataTable.Columns.Add("LITERAL_SUFFIX", typeof(string)); dataTable.Columns.Add("CREATE_PARAMS", typeof(string)); dataTable.Columns.Add("NULLABLE", typeof(bool)); dataTable.Columns.Add("CASE_SENSITIVE", typeof(bool)); dataTable.Columns.Add("SEARCHABLE", typeof(bool)); dataTable.Columns.Add("UNSIGNED_ATTRIBUTE", typeof(bool)); dataTable.Columns.Add("FIXED_PREC_SCALE", typeof(bool)); dataTable.Columns.Add("AUTO_INCREMENT", typeof(bool)); dataTable.Columns.Add("LOCAL_TYPE_NAME"); dataTable.Columns.Add("MINIMUM_SCALE", typeof(int)); dataTable.Columns.Add("MAXIMUM_SCALE", typeof(int)); dataTable.Columns.Add("SQL_DATA_TYPE", typeof(string)); dataTable.Columns.Add("SQL_DATETIME_SUB", typeof(string)); dataTable.Columns.Add("NUM_PREC_RADIX", typeof(int)); DeveelDbCommand command = connection.CreateCommand("SELECT * FROM INFORMATION_SCHEMA.DATA_TYPES"); using (DeveelDbDataReader reader = command.ExecuteReader()) { while (reader.Read()) { SysDataRow row = dataTable.NewRow(); row["TYPE_NAME"] = reader.GetString(0); row["DATA_TYPE"] = reader.GetInt32(1); row["PRECISION"] = reader.GetInt32(2); row["LITERAL_PREFIX"] = reader.GetString(3); row["LITERAL_SUFFIX"] = reader.GetString(4); row["CREATE_PARAMS"] = reader.GetString(5); row["NULLABLE"] = reader.GetBoolean(6); row["CASE_SENSITIVE"] = reader.GetBoolean(7); row["SEARCHABLE"] = reader.GetBoolean(8); row["UNSIGNED_ATTRIBUTE"] = reader.GetBoolean(9); row["FIXED_PREC_SCALE"] = reader.GetBoolean(10); row["AUTO_INCREMENT"] = reader.GetBoolean(11); row["LOCAL_TYPE_NAME"] = reader.GetString(12); row["MINIMUM_SCALE"] = reader.GetInt32(13); row["MAXIMUM_SCALE"] = reader.GetInt32(14); row["SQL_DATA_TYPE"] = reader.GetString(15); row["SQL_DATETIME_SUB"] = reader.GetString(16); row["NUM_PREC_RADIX"] = reader.GetInt32(17); dataTable.Rows.Add(row); } } return(dataTable); }
public SysDataTable GetColumns(string[] restrictions) { if (restrictions == null) { throw new ArgumentNullException("restrictions"); } if (restrictions.Length < 4) { throw new ArgumentException("COLUMNS collection requires at least 4 arguments."); } string catalog = restrictions[0]; string schema = restrictions[1]; string table = restrictions[2]; string column = restrictions[3]; if (table == null) { table = "%"; } if (schema == null) { schema = "%"; } if (column == null) { column = "%"; } SysDataTable dataTable = new SysDataTable("Columns"); dataTable.Columns.Add("TABLE_CATALOG"); dataTable.Columns.Add("TABLE_SCHEMA"); dataTable.Columns.Add("TABLE_NAME"); dataTable.Columns.Add("COLUMN_NAME"); dataTable.Columns.Add("DATA_TYPE", typeof(int)); dataTable.Columns.Add("TYPE_NAME"); dataTable.Columns.Add("COLUMN_SIZE", typeof(int)); dataTable.Columns.Add("BUFFER_LENGTH", typeof(int)); dataTable.Columns.Add("DECIMAL_DIGITS", typeof(int)); dataTable.Columns.Add("NUM_PREC_RADIX", typeof(int)); dataTable.Columns.Add("NULLABLE", typeof(bool)); dataTable.Columns.Add("REMARKS"); dataTable.Columns.Add("COLUMN_DEFAULT"); dataTable.Columns.Add("SQL_DATA_TYPE"); dataTable.Columns.Add("SQL_DATETIME_SUB"); dataTable.Columns.Add("CHAR_OCTET_LENGTH", typeof(int)); dataTable.Columns.Add("ORDINAL_POSITION", typeof(int)); dataTable.Columns.Add("IS_NULLABLE", typeof(bool)); DeveelDbCommand command = connection.CreateCommand(" SELECT * \n" + " FROM INFORMATION_SCHEMA.COLUMNS \n" + " WHERE \"TABLE_SCHEMA\" LIKE ? \n" + " AND \"TABLE_NAME\" LIKE ? \n" + " AND \"COLUMN_NAME\" LIKE ? \n" + "ORDER BY \"TABLE_SCHEMA\", \"TABLE_NAME\", \"ORDINAL_POSITION\""); command.Parameters.Add(schema); command.Parameters.Add(table); command.Parameters.Add(column); command.Prepare(); using (DeveelDbDataReader reader = command.ExecuteReader()) { while (reader.Read()) { SysDataRow row = dataTable.NewRow(); row["TABLE_CATALOG"] = reader.GetString(0); row["TABLE_SCHEMA"] = reader.GetString(1); row["TABLE_NAME"] = reader.GetString(2); row["COLUMN_NAME"] = reader.GetString(3); row["DATA_TYPE"] = reader.GetInt32(4); row["TYPE_NAME"] = reader.GetString(5); row["COLUMN_SIZE"] = reader.GetInt32(6); row["BUFFER_LENGTH"] = reader.GetInt32(7); row["DECIMAL_DIGITS"] = reader.GetInt32(8); row["NUM_PREC_RADIX"] = reader.GetInt32(9); row["NULLABLE"] = reader.GetBoolean(10); row["REMARKS"] = reader.GetString(11); row["COLUMN_DEFAULT"] = reader.GetString(12); row["SQL_DATA_TYPE"] = reader.GetString(13); row["SQL_DATETIME_SUB"] = reader.GetString(14); row["CHAR_OCTET_LENGTH"] = reader.GetInt32(15); row["ORDINAL_POSITION"] = reader.GetInt32(16); row["IS_NULLABLE"] = reader.GetString(17) == "YES"; dataTable.Rows.Add(row); } } return(dataTable); }