コード例 #1
0
        protected override void LoadAllColumns(Database database)
        {
            foreach (Table table in database.Tables)
            {
                using (var columnsReader = this.Db.QueryDataReader(
                           @"SELECT * FROM user_tab_columns WHERE TABLE_NAME = {0}",
                           table.Name))
                {
                    while (columnsReader.Read())
                    {
                        string columnName = columnsReader["COLUMN_NAME"].ToString();
                        string sqlType    = columnsReader["DATA_TYPE"].ToString().ToLower();
                        if (sqlType == "number")
                        {
                            var dataScale = columnsReader["DATA_SCALE"].ToString();
                            if (dataScale == "0")
                            {
                                sqlType = "integer";
                            }
                        }

                        DbType dbType = OracleDbTypeHelper.ConvertFromOracleTypeString(sqlType);
                        Column column = new Column(columnName, dbType, null, table);
                        column.IsRequired = columnsReader["NULLABLE"].ToString() == "N";

                        table.Columns.Add(column);
                    }

                    table.SortColumns();
                }
            }
        }
コード例 #2
0
        protected override void LoadAllColumns(Database database)
        {
            //用一句 Sql 将所有的表的所有字段都一次性查询出来。
            var sql = new StringBuilder(
                @"SELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME IN (");

            sql.Append(string.Join(",", database.Tables.Select(t => "'" + t.Name + "'")));
            sql.Append(@")
ORDER BY TABLE_NAME");

            using (var columnsReader = this.Db.QueryDataReader(sql.ToString()))
            {
                Table currentTable = null;//当前正在处理的表。(放在循环外,有缓存的作用。)
                while (columnsReader.Read())
                {
                    //找到该列所对应的表。
                    var tableName = columnsReader["TABLE_NAME"].ToString();
                    if (currentTable == null || !currentTable.Name.EqualsIgnoreCase(tableName))
                    {
                        currentTable = database.FindTable(tableName);
                    }

                    string columnName = columnsReader["COLUMN_NAME"].ToString();
                    string sqlType    = columnsReader["DATA_TYPE"].ToString().ToLower();
                    if (sqlType == "number")
                    {
                        var dataScale = columnsReader["DATA_SCALE"].ToString();
                        if (dataScale == "0")
                        {
                            sqlType = "integer";
                        }
                    }

                    DbType dbType = OracleDbTypeHelper.ConvertFromOracleTypeString(sqlType);

                    Column column = new Column(columnName, dbType, null, currentTable);

                    column.IsRequired = columnsReader["NULLABLE"].ToString() == "N";

                    currentTable.Columns.Add(column);
                }
            }
        }
コード例 #3
0
 protected override string ConvertToTypeString(DbType dataType, string length)
 {
     return(OracleDbTypeHelper.ConvertToOracleTypeString(dataType, length));
 }