コード例 #1
0
        private void FillKeys()
        {
            string strSql =
            "SELECT I.OWNER,\n" +
            "       I.CONSTRAINT_NAME,\n" +
            "       I.CONSTRAINT_TYPE,\n" +
            "       I.TABLE_NAME,\n" +
            "       I.DELETE_RULE,\n" +
            "       I.STATUS,\n" +
            "       U.COLUMN_NAME,\n" +
            "       U2.TABLE_NAME AS REFTABLE,U2.COLUMN_NAME AS REFCOL\n" +
            "  FROM USER_CONSTRAINTS I\n" +
            " INNER JOIN USER_CONS_COLUMNS U ON U.CONSTRAINT_NAME = I.CONSTRAINT_NAME\n" +
            "                               AND U.OWNER = I.OWNER\n" +
            " LEFT JOIN USER_CONS_COLUMNS U2 ON U2.constraint_name = I.R_CONSTRAINT_NAME\n" +
            " WHERE I.TABLE_NAME = :TABLE_NAME \n" +
            "   AND I.CONSTRAINT_TYPE IN ('P', 'R', 'U')";

            var param = new Devart.Data.Oracle.OracleParameter("TABLE_NAME", this.Name);

            DataTable dt = this.Owner.OwnerUser.FillDataTable(strSql, new DbParameter[]{
                param
            });


            foreach (DataRow dr in dt.Rows)
            {
                Key key = new Key();
                var item = Keys.Where(p => p.Name == dr["CONSTRAINT_NAME"].ToString()).FirstOrDefault();
                if (item != null)
                {
                    key = item;

                    Column col = new Column();
                    col.Name = dr["COLUMN_NAME"].ToString();

                    key.Columns.Add(col);

                }
                else
                {
                    key.Name = dr["CONSTRAINT_NAME"].ToString();
                    key.OwnerTable = this;
                    key.Owner = this.Owner;
                    key.KeyType = StringToKeyTypes(dr["CONSTRAINT_TYPE"].ToString());
                    key.OnDeleteAction = OnDeleteActionEnums.NoAction;
                    key.Enabled = (dr["STATUS"].ToString() == "DISABLED") ? false : true;
                    if (key.KeyType == KeyTypesEnum.Foreign)
                    {
                        key.ReferencingTable = dr["REFTABLE"].ToString();
                        key.ReferencingColumns = dr["REFCOL"].ToString();
                    }

                    Column col = new Column();
                    col.Name = dr["COLUMN_NAME"].ToString();

                    key.Columns.Add(col);

                    this.Keys.Add(key);
                }
            }
        }
コード例 #2
0
        public string GetAlterColumnsSql(bool dropStatment, bool createStatment)
        {
            try
            {
                string sql = "";

                if (dropStatment)
                {
                    sql += "------Drop Script ---------------\r\n";
                    sql += "DROP TABLE " + this.Name + ";";
                    sql += "\r\n";
                }

                if (createStatment)
                {
                    Key PK = IsPkAvailable();
                    Column col = new Column();
                    if (PK != null && PK.Columns.Count > 0)
                    {
                        col = this.Columns.Where(p => p.Name == PK.Columns.FirstOrDefault().Name).FirstOrDefault();
                    }
                    else
                    {
                        col = Columns.FirstOrDefault();
                    }

                    sql += "\r\n\r\n---Create Table Statment " + this.CreatePriority.ToString() + "-" + this.Name + Common.NewLine;
                    sql += "CREATE TABLE " + this.Name + "\r\n" +
                        " (\r\n" +
                        "       " + col.GetSelfString() +
                        "\r\n);";

                    sql += "\r\n\r\n---Alter Table " + this.Name + Common.NewLine;
                    foreach (Column item in Columns)
                    {
                        if (item.Name != col.Name)
                            sql += "\r\n" + item.GetSqlString();
                    }

                    sql += "\r\n\r\n---Create Keys " + this.Name + Common.NewLine; ;

                    foreach (Key item in this.Keys)
                    {
                        sql += "\r\n" + item.GetSqlString();
                    }
                }
                else
                {
                    sql += "\r\n\r\n---Create Columns " + this.Name + Common.NewLine; ;

                    foreach (Column col in Columns)
                    {
                        sql += "\r\n" + col.GetSqlString();
                    }

                    sql += "\r\n\r\n---Create Keys " + this.Name + Common.NewLine; ;

                    foreach (Key item in this.Keys)
                    {
                        sql += "\r\n" + item.GetSqlString();
                    }
                }
                return sql;
            }
            catch (Exception ex)
            {
                return "Hata Oluştu !!! : " + ex.Message;
            }
        }