Beispiel #1
0
        public static void ExportDataTableToCsv(Model.Table table)
        {
            string filePath = Directory.GetCurrentDirectory() + "/" + DateTime.Now.ToString("ddMMyyyy_HHmmss") + ".csv";

            if (!File.Exists(filePath))
            {
                File.Create(filePath).Close();
            }

            List <string> output = new List <string>();


            List <string> headersValueLine = new List <string>();

            foreach (Model.Cell cell in table.Headers.Cells)
            {
                headersValueLine.Add(cell.Value);
            }

            output.Add(string.Join(";", headersValueLine));

            foreach (Model.Row row in table.Rows)
            {
                List <string> rowValuesLine = new List <string>();
                foreach (Model.Cell cell in row.Cells)
                {
                    rowValuesLine.Add(cell.Value);
                }

                output.Add(string.Join(";", rowValuesLine));
            }


            System.IO.File.WriteAllLines(filePath, output);
        }
Beispiel #2
0
        void frmDatabase_CreateCode(Model.Table table)
        {
            CreateCodeForm frm = new CreateCodeForm(table);

            frm.ShowReadmeOfTemplate += new Action <string>(ShowTemplateReadme);
            frm.Show(MainForm.dockPanel);
        }
Beispiel #3
0
        public List <Model.Table> Select()
        {
            List <Model.Table> lstTable = new List <Model.Table>();
            SqlConnection      conexao  = new SqlConnection(strCon);
            string             sql      = "Select * from Table";
            SqlCommand         cmd      = new SqlCommand(sql, conexao);

            conexao.Open();
            SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

            try
            {
                while (reader.Read())
                {
                    Model.Table table = new Model.Table();
                    table.IdDevolucao    = Convert.ToInt32(reader[0]);
                    table.IdCliente      = Convert.ToInt32(reader["IdCliente"]);
                    table.IdVeiculo      = Convert.ToInt32(reader["IdVeiculo"]);
                    table.Data_devolucao = Convert.ToDateTime(reader["Data_devolucao"]);
                    lstTable.Add(table);
                }
            }
            finally
            {
                conexao.Close();
            }
            return(lstTable);
        }
Beispiel #4
0
        private static void PrepareExistCommand(Model.Database db, Model.Table table, Model.CodeStyle style, StringBuilder code)
        {
            AppendFormatLine(code, 2, "/// <summary>");
            AppendFormatLine(code, 2, "/// 为查询是否存在一条数据准备参数");
            AppendFormatLine(code, 2, "/// </summary>");

            switch (style.CmdType)
            {
            case CommandType.StoredProcedure:
                AppendFormatLine(code, 2, "internal static void PrepareExistCommand({0}, out DbParameter[] cmdParms)", GetArgumentsOfFunction(table));
                break;

            case CommandType.TableDirect:
            case CommandType.Text:
                AppendFormatLine(code, 2, "internal static void PrepareExistCommand({0}, out StringBuilder strSql, out DbParameter[] cmdParms)", GetArgumentsOfFunction(table));
                break;

            default:
                break;
            }
            AppendFormatLine(code, 2, "{");

            if (style.CmdType != CommandType.StoredProcedure)
            {
                AppendFormatLine(code, 3, "strSql = new StringBuilder();");
                AppendFormatLine(code, 3, "strSql.Append(\"SELECT COUNT(1) FROM {0}\");", table.Name);
                AppendFormatLine(code, 3, "strSql.Append(\" WHERE {0}\");", GetConditonOfMySql(table));
            }

            GetConditionParms(table, style, code);

            AppendFormatLine(code, 2, "}");
        }
Beispiel #5
0
        public static string ReadFromTemplate(string file, string dbName, Model.Table table, Model.Field IdentifierRow, Model.CodeStyle style)
        {
            string code = ReadFile(file);

            if (dbName != null)
            {
                code = code.Replace("$DBName$", dbName);
            }
            if (table != null)
            {
                code = code.Replace("$TableName$", table.Name);
            }
            if (IdentifierRow != null)
            {
                code = code.Replace("$IdType$", TypeConverter.DataTypeToCSharpTypeString(IdentifierRow.FieldType));
                code = code.Replace("$IdName$", IdentifierRow.FieldName);
                code = code.Replace("$NullValue$", GetNullValueString(IdentifierRow));
            }
            if (style != null)
            {
                code = code.Replace("$BeforeNamespaceDot$", style.BeforeNamespaceDot);
                code = code.Replace("$BeforeNamespace$", style.BeforeNamespace);
                code = code.Replace("$DotAfterNamespace$", style.DotAfterNamespace);
                code = code.Replace("$AfterNamespace$", style.AfterNamespace);
            }
            return(code);
        }
Beispiel #6
0
        public ConvertToNumWindow(Model.Table table)
        {
            InitializeComponent();
            mainTable = table;

            comboBoxColumn.ItemsSource = Services.DataTableService.GetColumnHeadersAsList(table);
        }
Beispiel #7
0
        public FormCodeCreate(Model.Database.DatabaseType dbType, string dbName, Model.Table table)
        {
            InitializeComponent();

            //如果是ACCESS数据库,不允许使用缓存依赖,不能使用存储过程方式
            if (dbType == Model.Database.DatabaseType.Access)
            {
                cobCacheFrame.Items.Remove(cobCacheFrame.Items[2]);
                cobDALFrame.Enabled = false;
            }
            _dbType = dbType;

            tcCodes.Controls.Clear();
            cobCodeFrame.SelectedIndex  = 0;
            cobCacheFrame.SelectedIndex = 0;
            cobDALFrame.SelectedIndex   = 0;
            _dbName = dbName;
            _table  = table;

            TextEditor.SetStyle(txtModel, "C#");
            TextEditor.SetStyle(txtIDAL, "C#");
            TextEditor.SetStyle(txtDBUtility, "C#");
            TextEditor.SetStyle(txtDALFactory, "C#");
            TextEditor.SetStyle(txtDAL, "C#");
            TextEditor.SetStyle(txtBLL, "C#");
            TextEditor.SetStyle(txtUserControl, "HTML");
            TextEditor.SetStyle(txtUserControlCs, "C#");

            TextEditor.SetStyle(txtICacheDependency, "C#");
            TextEditor.SetStyle(txtTableDependency, "C#");
            TextEditor.SetStyle(txtTableCacheDependency, "C#");
            TextEditor.SetStyle(txtDependencyAccess, "C#");
            TextEditor.SetStyle(txtDependencyFacade, "C#");
        }
Beispiel #8
0
        private static void GetList(Model.Database db, Model.Table table, Model.CodeStyle style, StringBuilder code)
        {
            AppendFormatLine(code, 2, "/// <summary>");
            AppendFormatLine(code, 2, "/// 获取泛型数据列表");
            AppendFormatLine(code, 2, "/// </summary>");
            AppendFormatLine(code, 2, "public List<{0}.{1}> GetList()", style.ModelNameSpace, table.Name);
            AppendFormatLine(code, 2, "{");

            switch (style.CmdType)
            {
            case CommandType.StoredProcedure:
                AppendFormatLine(code, 3, "using (DbDataReader dr = {0}.ExecuteReader(CommandType.StoredProcedure, \"sp_{1}_GetAllList\", null))",
                                 style.DBHelperName, table.Name);
                break;

            case CommandType.Text:
            case CommandType.TableDirect:
            default:
                AppendFormatLine(code, 3, "StringBuilder strSql = new StringBuilder(\"SELECT * FROM {0}\");", table.Name);
                AppendFormatLine(code, 3, "using (DbDataReader dr = {0}.ExecuteReader(CommandType.Text, strSql.ToString(), null))",
                                 style.DBHelperName);
                break;
            }
            AppendFormatLine(code, 3, "{");
            AppendFormatLine(code, 4, "List<{0}.{1}> lst = GetList(dr);", style.ModelNameSpace, table.Name);
            AppendFormatLine(code, 4, "return lst;");
            AppendFormatLine(code, 3, "}");
            AppendFormatLine(code, 2, "}");
        }
Beispiel #9
0
 private void menuDelete_Click(object sender, EventArgs e)
 {
     if (CreateCode != null)
     {
         string         dbName = tvDatabase.SelectedNode.Parent.Parent.Text;
         Model.Database db     = tvDatabase.SelectedNode.Parent.Parent.Tag as Model.Database;
         Model.Table    table  = tvDatabase.SelectedNode.Tag as Model.Table;
         if (table != null)
         {
             SqlSeleteViewForm ssv  = new SqlSeleteViewForm(db, table);
             string            str  = "\nwhere 1 = 1";
             string            str2 = "delete from ";
             str2 = (str2 + "" + this.tvDatabase.SelectedNode.Text + "") + str;
             if ((ssv.sqlTextEditor.Text.Trim().Length != 0) && (ssv.sqlTextEditor.Text[ssv.sqlTextEditor.Text.Length - 1] != '\n'))
             {
                 ssv.sqlTextEditor.Text = ssv.sqlTextEditor.Text + "\n";
             }
             ssv.sqlTextEditor.Text = ssv.sqlTextEditor.Text + str2;
             ssv.Show(MainForm.dockPanel);
         }
         else
         {
             ShowMessage.Alert("请先选中一个表或视图。");
         }
     }
 }
Beispiel #10
0
 private static void GetPageListPrivate(Model.Database db, Model.Table table, Model.CodeStyle style, StringBuilder code)
 {
     AppendFormatLine(code, 2, "/// <summary>");
     AppendFormatLine(code, 2, "/// 由DbDataReader得到分页泛型数据列表");
     AppendFormatLine(code, 2, "/// </summary>");
     AppendFormatLine(code, 2, "private List<{0}.{1}> GetPageList(DbDataReader dr, int first, int count)", style.ModelNameSpace, table.Name);
     AppendFormatLine(code, 2, "{");
     AppendFormatLine(code, 3, "List<{0}.{1}> lst = new List<{0}.{1}>();", style.ModelNameSpace, table.Name);
     code.AppendLine();
     AppendFormatLine(code, 3, "for (int i = 0; i < first; i++)", style.ModelNameSpace, table.Name);
     AppendFormatLine(code, 3, "{");
     AppendFormatLine(code, 4, "if (!dr.Read())");
     AppendFormatLine(code, 4, "{");
     AppendFormatLine(code, 5, "return lst;");
     AppendFormatLine(code, 4, "}");
     AppendFormatLine(code, 3, "}");
     code.AppendLine();
     AppendFormatLine(code, 3, "int resultsFetched = 0;");
     AppendFormatLine(code, 3, "while (resultsFetched < count && dr.Read())");
     AppendFormatLine(code, 3, "{");
     AppendFormatLine(code, 4, "lst.Add(GetModel(dr));");
     AppendFormatLine(code, 4, "resultsFetched++;");
     AppendFormatLine(code, 3, "}");
     code.AppendLine();
     AppendFormatLine(code, 3, "return lst;");
     AppendFormatLine(code, 2, "}");
 }
Beispiel #11
0
        private List <Model.Table> GetSQLTableList(DataSet ds)
        {
            DataTable          dt     = ds.Tables[0];
            List <Model.Table> tables = new List <Model.Table>();

            foreach (DataRow r in dt.Rows)
            {
                Model.Field field           = GetField(r);
                string      parentTableName = SchemaHelper.GetString(r["TableName"]);

                bool hasTable = false;
                foreach (Model.Table modelTable in tables)
                {
                    if (parentTableName == modelTable.Name)
                    {
                        modelTable.AddField(field);
                        hasTable = true;
                        break;
                    }
                }
                if (!hasTable)
                {
                    Model.Table newTable = new Model.Table();
                    newTable.Name = parentTableName;
                    newTable.AddField(field);
                    tables.Add(newTable);
                }
            }

            foreach (Model.Table table in tables)
            {
                table.Fields.Sort();
            }
            return(tables);
        }
Beispiel #12
0
 public KNNChartWindow(Model.Table table)
 {
     InitializeComponent();
     mainTable     = table;
     columnBinding = DataTableService.GetColumnHeadersAsList(table);
     DataContext   = this;
 }
Beispiel #13
0
        /// <summary>
        /// 取得主键
        /// </summary>
        public static Model.Field GetKeyField(Model.Table table, out bool HasIdentifierField)
        {
            List <Model.Field> l = table.Fields;

            Model.Field IdentifierRow = null;
            HasIdentifierField = false;
            foreach (Model.Field model in l)
            {
                if (model.IsIdentifier)
                {
                    IdentifierRow      = model;
                    HasIdentifierField = true;
                    break;
                }
            }
            if (IdentifierRow == null)
            {
                foreach (Model.Field model in l)
                {
                    if (model.IsKeyField)
                    {
                        IdentifierRow = model;
                        break;
                    }
                }
            }
            if (IdentifierRow == null)
            {
                IdentifierRow = l[0];
            }
            return(IdentifierRow);
        }
Beispiel #14
0
        public static Model.Table Normalize(Model.Table table, int selectedColumnIndex)
        {
            List <double> columnValues      = GetListOfColumnValues(table, selectedColumnIndex);
            double        columnAvarage     = columnValues.Average();
            double        standardDeviation = CalculateStdDev(columnValues);



            table.Headers.Cells.Add(
                new Model.Cell(
                    table.Headers.Cells[selectedColumnIndex].Value + "_Norm"
                    ));

            foreach (Model.Row row in table.Rows)
            {
                row.Cells.Add(
                    new Model.Cell(
                        GetNormalizedValue(Convert.ToDouble(row.Cells[selectedColumnIndex].Value), columnAvarage, standardDeviation).ToString())
                    );
            }


            //double columnAvarage = GetAvarageOfColumn(table, selectedColumnIndex);


            return(table);
        }
Beispiel #15
0
        private List <Model.Table> GetSelectedTables(Database database)
        {
            var selectedTables = new List <DBLint.Model.Table>();
            var tid            = new WriteableTableID(_executer.ViewModel.MetadataSelection.Extractor.DatabaseName, null, null);

            foreach (var schema in _executer.ViewModel.MetadataSelection.Schemas)
            {
                if (schema.Include.HasValue && !schema.Include.Value)
                {
                    continue;
                }
                tid.SetSchemaName(schema.Name);
                foreach (var tbl in schema.Tables.Value)
                {
                    if (!tbl.Include)
                    {
                        continue;
                    }
                    tid.SetTableName(tbl.Name);
                    Model.Table table = database.GetTable(tid);
                    selectedTables.Add(table);
                }
            }
            return(selectedTables);
        }
        public static string GetMySqlStoreProcedureCode(Model.Table table, Model.CodeStyle style)
        {
            StringBuilder code = new StringBuilder();

            Add(table, code, style);

            code.AppendLine();

            Update(table, code);

            code.AppendLine();

            Delete(table, code);

            code.AppendLine();

            Exists(table, code);

            code.AppendLine();

            GetCount(table, code);

            code.AppendLine();

            GetModel(table, code);

            code.AppendLine();

            GetAllList(table, code);

            return(code.ToString());
        }
Beispiel #17
0
        public static string BookTable(Model.Table table, string employeeName)
        {
            string url  = SERVER + "/tables/Book/" + table.number;
            string json = "{\"employeeName\": \"" + employeeName +
                          "\", \"number\": \"" + table.number +
                          "\", \"note\": \"" + table.note +
                          "\", \"status\": \"" + table.status +
                          "\", \"customer\": { \"fullName\": \"" + table.customer.fullName +
                          "\", \"phone\": \"" + table.customer.phone + "\"}}";

            string url1  = SERVER + "/bills";
            string json1 = "{\"employeeName\": \"" + employeeName +
                           "\", \"number\": \"" + table.number +
                           "\", \"numberOfSeat\": \"" + table.numberOfSeat.ToString() +
                           "\", \"type\": \"" + table.type +
                           "\", \"customer\": { \"fullName\": \"" + table.customer.fullName +
                           "\", \"phone\": \"" + table.customer.phone + "\"}}";

            try
            {
                POST(url1, json1);
                return(PUT(url, json));
            }
            catch
            {
                MessageBox.Show("Kết nối không ổn định. Xin thử lại.");
                return("");
            }
        }
        public CodeCreateForm(ContextMenuStrip cms, Model.Database db, Model.Table table)
        {
            InitializeComponent();
            this.TabPageContextMenuStrip = cms;

            styleUserControl1.DB = db;
            styleUserControl1.LoadConfig();

            this.db      = db;
            this.table   = table;
            this.TabText = string.Format("生成代码 {0}", table.Name);

            tcCodes.Controls.Clear();

            TextEditor.SetStyle(txtInternalModel, "C#");
            TextEditor.SetStyle(txtModel, "C#");
            TextEditor.SetStyle(txtIDAL, "C#");
            TextEditor.SetStyle(txtDALFactory, "C#");
            TextEditor.SetStyle(txtInternalDAL, "C#");
            TextEditor.SetStyle(txtDAL, "C#");
            TextEditor.SetStyle(txtBL, "C#");
            TextEditor.SetStyle(txtUserControl, "HTML");
            TextEditor.SetStyle(txtUserControlDesignerCs, "C#");
            TextEditor.SetStyle(txtUserControlCs, "C#");

            TextEditor.SetStyle(txtICacheDependency, "C#");
            TextEditor.SetStyle(txtTableDependency, "C#");
            TextEditor.SetStyle(txtTableCacheDependency, "C#");
            TextEditor.SetStyle(txtDependencyAccess, "C#");
            TextEditor.SetStyle(txtDependencyFacade, "C#");
        }
Beispiel #19
0
        private static void Delete(Model.Database db, Model.Table table, Model.CodeStyle style, StringBuilder code)
        {
            AppendFormatLine(code, 2, "/// <summary>");
            AppendFormatLine(code, 2, "/// 删除一条数据");
            AppendFormatLine(code, 2, "/// </summary>");
            AppendFormatLine(code, 2, "public int Delete({0})", GetArgumentsOfFunction(table));
            AppendFormatLine(code, 2, "{");

            if (style.CmdType != CommandType.StoredProcedure)
            {
                AppendFormatLine(code, 3, "StringBuilder strSql;");
            }
            AppendFormatLine(code, 3, "DbParameter[] cmdParms;");

            switch (style.CmdType)
            {
            case System.Data.CommandType.StoredProcedure:
                AppendFormatLine(code, 3, "PrepareDeleteCommand({0}, out cmdParms);", GetArgumentValuesOfFunction(table));
                AppendFormatLine(code, 3, "return {0}.ExecuteNonQuery(CommandType.StoredProcedure, \"sp_{1}_Delete\", cmdParms);",
                                 style.DBHelperName,
                                 table.Name);
                break;

            case System.Data.CommandType.Text:
            default:
                AppendFormatLine(code, 3, "PrepareDeleteCommand({0}, out strSql, out cmdParms);", GetArgumentValuesOfFunction(table));
                AppendFormatLine(code, 3, "return {0}.ExecuteNonQuery(CommandType.Text, strSql.ToString(), cmdParms);",
                                 style.DBHelperName);
                break;
            }
            AppendFormatLine(code, 2, "}");
        }
Beispiel #20
0
        public static List <Model.Table> GetTableList(DataSet ds)
        {
            DataTable          dt     = ds.Tables[0];
            List <Model.Table> lTable = new List <Model.Table>();

            foreach (DataRow r in dt.Rows)
            {
                Model.Field model = GetField(r);
                foreach (Model.Table modelTable in lTable)
                {
                    if (model.TableName == modelTable.Fields[0].TableName)
                    {
                        modelTable.Fields.Add(model);
                    }
                    else
                    {
                        Model.Table newTable = new Model.Table();
                        newTable.Name = model.TableName;
                        newTable.Fields.Add(model);
                    }
                }
                //lTable.Add(model);
            }
            return(lTable);
        }
Beispiel #21
0
        private static Model.Table GetTable(DBUtility.DBHelper dbHelper, string dbName, DataRow rTable)
        {
            string tableName = rTable[0].ToString();

            Model.Table table = new Model.Table();
            table.Name = tableName;

            // 对每个表取字段属性
            DataSet dsColumns = dbHelper.ExecuteQuery(CommandType.Text,
                                                      string.Format("select * from COLUMNS where TABLE_SCHEMA='{0}' and TABLE_NAME='{1}'", dbName, tableName),
                                                      null);

            foreach (DataRow rField in dsColumns.Tables[0].Rows)
            {
                Model.Field field = new Model.Field();
                field.IsIdentifier = rField["EXTRA"].ToString().ToLower() == "auto_increment";
                field.IsKeyField   = rField["COLUMN_KEY"].ToString().ToLower() == "pri";
                field.AllowNull    = rField["IS_NULLABLE"].ToString().ToLower() == "yes";

                field.MySqlTypeString = SchemeHelper.GetString(rField["DATA_TYPE"]);
                field.DefaultValue    = SchemeHelper.GetString(rField["COLUMN_DEFAULT"]);
                field.FieldDescn      = SchemeHelper.GetString(rField["COLUMN_COMMENT"]);
                field.FieldLength     = SchemeHelper.GetLong(rField["CHARACTER_MAXIMUM_LENGTH"]);
                field.FieldName       = SchemeHelper.GetString(rField["COLUMN_NAME"]);
                field.FieldNumber     = SchemeHelper.GetInt(rField["ORDINAL_POSITION"]);
                table.Fields.Add(field);
            }
            return(table);
        }
Beispiel #22
0
        private static void GetCS3OrMvc2Model(Model.Table table, StringBuilder code, Model.CodeStyle style)
        {
            foreach (Model.Field model in table.Fields)
            {
                AppendFormatLine(code, 2, "/// <summary>");
                AppendFormatLine(code, 2, "/// {0}", model.FieldDescn);
                AppendFormatLine(code, 2, "/// </summary>");

                if (style.ModelStyle == Model.CodeStyle.ModelStyles.MVC2)
                {
                    int minLength = 0;
                    if (!model.IsIdentifier && !model.IsKeyField && CodeHelper.IsStringDbType(model) && !model.AllowNull)
                    {
                        AppendFormatLine(code, 2, "[Required(ErrorMessage=\"{0}不能为空\")]", model.FieldDescn);
                        minLength = 1;
                    }

                    AppendFormatLine(code, 2, "[DisplayName(\"{0}\")]", model.FieldDescn);
                    if (!model.IsIdentifier && !model.IsKeyField && CodeHelper.IsStringDbType(model))
                    {
                        AppendFormatLine(code, 2, "[RegularExpression(@\"[\\w\\W]{{1,{0}}}\", ErrorMessage = \"{1}为{2}-{0}位\")]//此默认生成的正则为允许任意字符,请根据业务逻辑修改", model.FieldLength, model.FieldDescn, minLength);
                    }
                }
                AppendFormatLine(code, 2, "public {0} {1} {{ get; set; }}", model.CSharpType, model.FieldName);
                code.AppendLine();
            }
        }
Beispiel #23
0
        private static void GetCount(Model.Database db, Model.Table table, Model.CodeStyle style, StringBuilder code)
        {
            AppendFormatLine(code, 2, "/// <summary>");
            AppendFormatLine(code, 2, "/// 获取数量");
            AppendFormatLine(code, 2, "/// </summary>");
            AppendFormatLine(code, 2, "public int GetCount()");
            AppendFormatLine(code, 2, "{");

            switch (style.CmdType)
            {
            case System.Data.CommandType.StoredProcedure:
                AppendFormatLine(code, 3, "object obj = {0}.ExecuteScalar(CommandType.StoredProcedure, \"sp_{1}_GetCount\", null);",
                                 style.DBHelperName, table.Name);
                break;

            case System.Data.CommandType.Text:
            default:
                AppendFormatLine(code, 3, "object obj = {0}.ExecuteScalar(CommandType.Text, \"SELECT count(*) FROM {1}\", null);",
                                 style.DBHelperName, table.Name);
                break;
            }

            AppendFormatLine(code, 3, "return int.Parse(obj.ToString());");
            AppendFormatLine(code, 2, "}");
        }
Beispiel #24
0
        void frmDatabase_CreateCode(Model.Table table)
        {
            CreateCodeForm frm = new CreateCodeForm(table);

            frm.ShowDebug += new Action <string, string, bool>(frm_ShowDebug);
            frm.Show(MainForm.dockPanel);
        }
Beispiel #25
0
 private void menuInsert_Click(object sender, EventArgs e)
 {
     if (CreateCode != null)
     {
         string         dbName = tvDatabase.SelectedNode.Parent.Parent.Text;
         Model.Database db     = tvDatabase.SelectedNode.Parent.Parent.Tag as Model.Database;
         Model.Table    table  = tvDatabase.SelectedNode.Tag as Model.Table;
         if (table != null)
         {
             SqlSeleteViewForm ssv  = new SqlSeleteViewForm(db, table);
             string            str  = "";
             string            str2 = "insert into ";
             str2 = (str2 + "" + this.tvDatabase.SelectedNode.Text + "") + " (" + this.tvDatabase.SelectedNode.Nodes[0].Text;
             for (int i = 1; i < this.tvDatabase.SelectedNode.Nodes.Count; i++)
             {
                 str  = str + ",''";
                 str2 = str2 + "," + this.tvDatabase.SelectedNode.Nodes[i].Text;
             }
             str2 = (str2 + ") \n" + "values(''") + str + ")";
             if ((ssv.sqlTextEditor.Text.Trim().Length != 0) && (ssv.sqlTextEditor.Text[ssv.sqlTextEditor.Text.Length - 1] != '\n'))
             {
                 ssv.sqlTextEditor.Text = ssv.sqlTextEditor.Text + "\n";
             }
             ssv.sqlTextEditor.Text = ssv.sqlTextEditor.Text + str2;
             ssv.Show(MainForm.dockPanel);
         }
         else
         {
             ShowMessage.Alert("请先选中一个表或视图。");
         }
     }
 }
Beispiel #26
0
        private static void Exists(Model.Database db, Model.Table table, Model.CodeStyle style, StringBuilder code)
        {
            AppendFormatLine(code, 2, "/// <summary>");
            AppendFormatLine(code, 2, "/// 是否存在该记录");
            AppendFormatLine(code, 2, "/// </summary>");
            AppendFormatLine(code, 2, "public bool Exists({0})", GetArgumentsOfFunction(table));
            AppendFormatLine(code, 2, "{");

            if (style.CmdType != CommandType.StoredProcedure)
            {
                AppendFormatLine(code, 3, "StringBuilder strSql;");
            }

            AppendFormatLine(code, 3, "DbParameter[] cmdParms;");

            switch (style.CmdType)
            {
            case System.Data.CommandType.StoredProcedure:
                AppendFormatLine(code, 3, "PrepareExistCommand({0}, out cmdParms);", GetArgumentValuesOfFunction(table));
                AppendFormatLine(code, 3, "object obj = {0}.ExecuteScalar(CommandType.StoredProcedure, \"sp_{1}_Exists\", cmdParms);",
                                 style.DBHelperName, table.Name);
                break;

            case System.Data.CommandType.Text:
            default:
                AppendFormatLine(code, 3, "PrepareExistCommand({0}, out strSql, out cmdParms);", GetArgumentValuesOfFunction(table));
                AppendFormatLine(code, 3, "object obj = {0}.ExecuteScalar(CommandType.Text, strSql.ToString(), cmdParms);",
                                 style.DBHelperName);
                break;
            }

            AppendFormatLine(code, 3, "return int.Parse(obj.ToString()) > 0;");
            AppendFormatLine(code, 2, "}");
        }
Beispiel #27
0
        private static void Add(Model.Database db, Model.Table table, Model.CodeStyle style, StringBuilder code)
        {
            AppendFormatLine(code, 2, "/// <summary>");
            AppendFormatLine(code, 2, "/// 增加一条数据");
            AppendFormatLine(code, 2, "/// </summary>");
            AppendFormatLine(code, 2, "public int Add({0}.{1} model)", style.ModelNameSpace, table.Name);
            AppendFormatLine(code, 2, "{");
            if (style.CmdType != CommandType.StoredProcedure)
            {
                AppendFormatLine(code, 3, "StringBuilder strSql;");
            }

            AppendFormatLine(code, 3, "DbParameter[] cmdParms;");

            switch (style.CmdType)
            {
            case System.Data.CommandType.StoredProcedure:
                AppendFormatLine(code, 3, "PrepareAddCommand(model, out cmdParms);");
                AppendFormatLine(code, 3, "return {0}.ExecuteNonQuery(CommandType.StoredProcedure, \"sp_{1}_Add\", cmdParms);", style.DBHelperName, table.Name);
                break;

            case System.Data.CommandType.Text:
            default:
                AppendFormatLine(code, 3, "PrepareAddCommand(model, out strSql, out cmdParms);");
                AppendFormatLine(code, 3, "return {0}.ExecuteNonQuery(CommandType.Text, strSql.ToString(), cmdParms);", style.DBHelperName);
                break;
            }
            AppendFormatLine(code, 2, "}");
        }
Beispiel #28
0
        private List <Model.Table> GetSQLTableList(DataSet ds)
        {
            DataTable          dt     = ds.Tables[0];
            List <Model.Table> lTable = new List <Model.Table>();

            foreach (DataRow r in dt.Rows)
            {
                Model.Field model    = GetField(r);
                bool        hasTable = false;
                foreach (Model.Table modelTable in lTable)
                {
                    if (model.TableName == modelTable.Fields[0].TableName)
                    {
                        modelTable.Fields.Add(model);
                        hasTable = true;
                        break;
                    }
                }
                if (!hasTable)
                {
                    Model.Table newTable = new Model.Table();
                    newTable.Name = model.TableName;
                    List <Model.Field> lFields = new List <Model.Field>();
                    lFields.Add(model);
                    newTable.Fields = lFields;
                    lTable.Add(newTable);
                }
            }

            foreach (Model.Table table in lTable)
            {
                table.Fields.Sort();
            }
            return(lTable);
        }
Beispiel #29
0
        /// <summary>
        /// 生成Web用户控件
        /// </summary>
        public static string GetUserControlCode(Model.Table table, Model.CodeStyle style)
        {
            int width = table.Fields.Count > 1 ? 100 / (table.Fields.Count - 1) : 100;

            StringBuilder code = new StringBuilder(CommonCode.GetHtmlCopyrightCode());

            AppendFormatLine(code, 0, "<%@ Control Language=\"C#\" AutoEventWireup=\"true\" Codebehind=\"{0}{1}Grid.ascx.cs\"",
                             style.AfterNamespace, table.Name);
            AppendFormatLine(code, 1, "Inherits=\"Controls_{0}{1}Grid\" %>", style.AfterNamespace, table.Name);
            AppendFormatLine(code, 0, "<table id=\"{0}Grid\" class=\"data\" style=\"width: 100%;\">", table.Name);
            AppendFormatLine(code, 1, "<tr class=\"title\">");
            int i = 0;

            foreach (Model.Field field in table.Fields)
            {
                if (field != table.ConditionRows[0])
                {
                    AppendFormatLine(code, 2, "<td style=\"width: {0}%;\">", width);

                    if (i == 0)
                    {
                        AppendFormatLine(code, 3, "<input id=\"chkChooseAll{0}\" type=\"checkbox\" onclick=\"chooseAll('{0}Grid','chkChooseAll{0}')\" />",
                                         table.Name);
                    }
                    AppendFormatLine(code, 3, "{0}", field.FieldDescn);
                    AppendFormatLine(code, 2, "</td>");
                    i++;
                }
            }
            AppendFormatLine(code, 1, "</tr>");
            AppendFormatLine(code, 1, "<asp:Repeater ID=\"grd{0}\" runat=\"server\" OnItemCommand=\"grd{0}_ItemCommand\">", table.Name);
            AppendFormatLine(code, 2, "<ItemTemplate>");
            AppendFormatLine(code, 3, "<tr>");

            i = 0;
            foreach (Model.Field field in table.Fields)
            {
                if (field != table.ConditionRows[0])
                {
                    AppendFormatLine(code, 4, "<td>");

                    if (i == 0)
                    {
                        AppendFormatLine(code, 5, "<asp:CheckBox ID=\"chkChoose\" runat=\"server\" /><asp:HiddenField ID=\"hf{0}\"", table.Name);
                        AppendFormatLine(code, 6, "runat=\"server\" Value='<%# Eval(\"{0}\") %>' />", table.ConditionRows[0].FieldName);
                    }
                    AppendFormatLine(code, 5, "<span title=\"<%# Eval(\"{0}\") %>\">", field.FieldName);
                    AppendFormatLine(code, 6, "<%# Eval(\"{0}\") %></span>", field.FieldName);
                    AppendFormatLine(code, 4, "</td>");
                    i++;
                }
            }
            AppendFormatLine(code, 3, "</tr>");
            AppendFormatLine(code, 2, "</ItemTemplate>");
            AppendFormatLine(code, 1, "</asp:Repeater>");
            AppendFormatLine(code, 0, "</table>");

            return(code.ToString());
        }
Beispiel #30
0
        public Model.Database GetSchema(string connectionString, Model.Database.DatabaseType type)
        {
            Model.Database database = new Model.Database();
            database.ConnectionString = connectionString;
            database.Type             = type;

            //得到获取MySql结构的语句
            string dbName;
            string connStr   = database.ConnectionString;
            Match  mDatabase = Regex.Match(connStr, @"Database=(?<Database>[^\;]*);");

            if (mDatabase.Success)
            {
                dbName  = mDatabase.Groups["Database"].Value;
                connStr = connStr.Replace(string.Format("Database={0};", dbName), "Database=information_schema;");
            }
            else
            {
                return(null);
            }

            DBUtility.DBHelper dbHelper = new DBUtility.DBHelper(DBUtility.DBHelper.DatabaseTypes.MySql, connStr);

            // 获取表
            DataSet dsTables = dbHelper.ExecuteQuery(CommandType.Text,
                                                     string.Format("select distinct TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='{0}' and TABLE_TYPE='BASE TABLE'", dbName),
                                                     null);

            foreach (DataRow rTable in dsTables.Tables[0].Rows)
            {
                Model.Table table = GetTable(dbHelper, dbName, rTable);
                table.Fields.Sort();
                database.Tables.Add(table);
            }

            // 获取视图
            DataSet dsViews = dbHelper.ExecuteQuery(CommandType.Text,
                                                    string.Format("select distinct TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='{0}' and TABLE_TYPE='VIEW'", dbName),
                                                    null);

            foreach (DataRow rView in dsViews.Tables[0].Rows)
            {
                Model.Table view = GetTable(dbHelper, dbName, rView);
                view.Fields.Sort();
                database.Views.Add(view);
            }

            // 获取存储过程
            DataSet dsStoreProcedure = dbHelper.ExecuteQuery(CommandType.Text,
                                                             string.Format("select distinct SPECIFIC_NAME from ROUTINES where ROUTINE_SCHEMA='{0}'", dbName),
                                                             null);

            foreach (DataRow r in dsStoreProcedure.Tables[0].Rows)
            {
                database.StoreProcedures.Add(r[0].ToString());
            }

            return(database);
        }
Beispiel #31
0
        private Model.Table GetNewTable(string tableName)
        {
            ArchAngel.Interfaces.Events.RaiseObjectBeingProcessedEvent(tableName, "Table");
            //_columns = null; // Reset the columns
            //_indexes = null;
            //_dtReferencedColumns = null;
            //return new Model.Table();
            Model.Table table = new Model.Table(tableName, false);

            #region Columns
            DataRow[] columnRows = Columns.Select(string.Format("TABLE_NAME = '{0}'", tableName));

            foreach (DataRow row in columnRows)
            {
                bool isReadOnly = false;

                if (!row.IsNull("IsIdentity") && (int)row["IsIdentity"] == 1)
                {
                    isReadOnly = true;
                }
                else if (!row.IsNull("IsComputed") && (int)row["IsComputed"] == 1)
                {
                    isReadOnly = true;
                }
                else if (Slyce.Common.Utility.StringsAreEqual((string)row["DATA_TYPE"], "timestamp", false))
                {
                    isReadOnly = true;
                }
                // Check whether we have added this column before. Columns are repeated if they are both a PRIMARY_KEY and a FOREIGN_KEY
                Column column = new Column(
                    (string)row["COLUMN_NAME"],
                    false,
                    table,
                    (int)row["ORDINAL_POSITION"],
                    Slyce.Common.Utility.StringsAreEqual((string)row["IS_NULLABLE"], "YES", false),
                    (string)row["DATA_TYPE"],
                    row.IsNull("CHARACTER_MAXIMUM_LENGTH") ? 0 : Convert.ToInt32(row["CHARACTER_MAXIMUM_LENGTH"]),
                    (int)row["InPrimaryKey"] == 1,
                    row.IsNull("IsIdentity") ? false : Convert.ToInt32(row["IsIdentity"]) == 1,
                    row.IsNull("COLUMN_DEFAULT") ? "" : (string)row["COLUMN_DEFAULT"],
                    isReadOnly,
                    row.IsNull("IsComputed") ? false : Convert.ToInt32(row["IsComputed"]) == 1,
                    row.IsNull("NUMERIC_PRECISION") ? 0 : Convert.ToInt32(row["NUMERIC_PRECISION"]),
                    row.IsNull("NUMERIC_SCALE") ? 0 : Convert.ToInt32(row["NUMERIC_SCALE"]));

                table.AddColumn(column);
                //ordinalPosition++;
            }
            #endregion

            #region Indexes

            DataRow[] indexRows = Indexes.Select(string.Format("TABLE_NAME = '{0}'", tableName));
            foreach (DataRow indexRow in indexRows)
            {
                string indexType;
                string indexKeyType = indexRow["CONSTRAINT_TYPE"].ToString();
                if (indexKeyType == "PRIMARY KEY")
                {
                    continue;
                }
                else if (indexKeyType == "FOREIGN KEY")
                {
                    continue;
                }
                else if (indexKeyType == "UNIQUE")
                {
                    continue;
                    //indexType = DatabaseConstant.IndexType.Unique;
                }
                else if (indexKeyType == "CHECK")
                {
                    indexType = DatabaseConstant.IndexType.Check;
                }
                else if (indexKeyType == "NONE")    //TODO check is NONE
                {
                    indexType = DatabaseConstant.IndexType.None;
                }
                else
                {
                    //continue;
                    throw new Exception("IndexType " + indexKeyType + " Not Defined");
                }
                DataRow[] indexColumnRows;// = IndexColumns.Select(string.Format("TABLE_NAME = '{0}' AND CONSTRAINT_NAME  = '{1}'", tableName, indexRow["CONSTRAINT_NAME"]));

                if (indexKeyType == "NONE")
                {
                    indexColumnRows = Columns.Select(string.Format("TABLE_NAME = '{0}' AND COLUMN_NAME  = '{1}'", tableName, indexRow["ColumnName"]));
                }
                else
                {
                    indexColumnRows = IndexColumns.Select(string.Format("TABLE_NAME = '{0}' AND CONSTRAINT_NAME  = '{1}'", tableName, indexRow["CONSTRAINT_NAME"]));
                }
                Index index = new Index(indexRow["CONSTRAINT_NAME"].ToString(), false, indexType, table, (bool)indexRow["IS_UNIQUE"], (bool)indexRow["IS_CLUSTERED"]);

                // Fill Columns
                foreach (DataRow indexColumnRow in indexColumnRows)
                {
                    Column indexColumn = new Column(indexColumnRow["COLUMN_NAME"].ToString(), false);
                    index.AddColumn(indexColumn);
                }
                index.ResetDefaults();
                table.AddIndex(index);
            }

            // Indexes -- that should be keys
            foreach (DataRow keyRow in indexRows)
            {
                string keyType;
                string indexKeyType = keyRow["CONSTRAINT_TYPE"].ToString();
                if (indexKeyType == "PRIMARY KEY")
                {
                    keyType = DatabaseConstant.KeyType.Primary;
                }
                else if (indexKeyType == "FOREIGN KEY")
                {
                    keyType = DatabaseConstant.KeyType.Foreign;
                }
                else if (indexKeyType == "UNIQUE")
                {
                    keyType = DatabaseConstant.KeyType.Unique;
                }
                else if (indexKeyType == "CHECK")
                {
                    continue;
                }
                else if (indexKeyType == "NONE")
                {
                    continue;
                    //keyType = DatabaseConstant.KeyType.None;
                }
                else
                {
                    //continue;
                    throw new Exception("KeyType " + indexKeyType + " Not Defined");
                }
                Key key = new Key(keyRow["CONSTRAINT_NAME"].ToString(), false, keyType, table, false);
                DataRow[] keyColumnRows = IndexColumns.Select(string.Format("TABLE_NAME = '{0}' AND CONSTRAINT_NAME = '{1}'", tableName, keyRow["CONSTRAINT_NAME"]));

                // Fill Columns
                foreach (DataRow keyColumnRow in keyColumnRows)
                {
                    Column keyColumn = new Column(keyColumnRow["COLUMN_NAME"].ToString(), false);
                    keyColumn.DataType = (string)keyColumnRow["DATA_TYPE"];
                    key.AddColumn(keyColumn);
                }

                if (keyType == DatabaseConstant.KeyType.Foreign)
                {
                    DataRow[] keyReferencedColumnRows = IndexReferencedColumns.Select(string.Format("ForeignKey = '{0}'", keyRow["CONSTRAINT_NAME"]));
                    DataRow firstKeyReferencedColumnRow = keyReferencedColumnRows[0];
                    // Fill References
                    key.ReferencedTable = new Model.Table(firstKeyReferencedColumnRow["ReferencedTable"].ToString(), false);

                    //if (dmoKey.ReferencedKey != null)
                    //{
                    key.ReferencedKey = new Key(firstKeyReferencedColumnRow["ReferencedKey"].ToString(), false, true);
                    //}

                    // Fill Referenced Columns
                    foreach (DataRow keyReferencedColumnRow in keyReferencedColumnRows)
                    {
                        Column keyReferencedColumn = new Column(keyReferencedColumnRow["ReferencedColumn"].ToString(), false);
                        key.AddReferencedColumn(keyReferencedColumn);
                    }
                }
                key.ResetDefaults();
                table.AddKey(key);
            }

            #endregion

            //#region Indexes -- that should be keys
            //string prevConstraintName = "";
            //Key key = null;
            //DataRow[] indexRows = DtIndexes.Select(string.Format("TABLE_NAME = '{0}'", tableName));

            //for (int rowCounter = 0; rowCounter < indexRows.Length; rowCounter++)
            //{
            //    DataRow row = indexRows[rowCounter];
            //    for (int colCounter = 0; colCounter < DtIndexes.Columns.Count; colCounter++)
            //    {
            //        string colName = DtIndexes.Columns[colCounter].ColumnName;
            //    }
            //    string keyType;
            //    string indexKeyType = row.IsNull("Constraint_Type") ? "NONE" : (string)row["Constraint_Type"];
            //    string constraintName = row.IsNull("Constraint_Name") ? "" : (string)row["Constraint_Name"];
            //    string columnName = (string)row["COLUMN_NAME"];

            //    if (indexKeyType == "NONE")
            //    {
            //        keyType = DatabaseConstant.KeyType.None;
            //    }
            //    else if (indexKeyType == "PRIMARY KEY")
            //    {
            //        keyType = DatabaseConstant.KeyType.Primary;
            //    }
            //    else if (indexKeyType == "UNIQUE")
            //    {
            //        keyType = DatabaseConstant.KeyType.Unique;
            //    }
            //    else if (indexKeyType == "CHECK") // TODO: was 'None' for SMO
            //    {
            //        keyType = DatabaseConstant.KeyType.None;
            //    }
            //    else if (indexKeyType == "FOREIGN KEY") // TODO: was 'None' for SMO
            //    {
            //        keyType = DatabaseConstant.KeyType.Foreign;
            //    }
            //    else
            //    {
            //        throw new Exception("KeyType " + indexKeyType + " Not Defined");
            //    }
            //    // Create Alias
            //    if (string.Format("{0}{1}", constraintName, keyType) != prevConstraintName)
            //    {
            //        if (key != null)
            //        {
            //            // Reset the alias, because it is based on the Columns collection which has just finished being modified.
            //            key.ResetDefaults();
            //        }
            //        // Create a new Key
            //        key = new Key(constraintName, false, keyType, table, false);
            //        table.AddKey(key);
            //        prevConstraintName = string.Format("{0}{1}", constraintName, keyType);
            //        Column keyColumn = new Column(columnName, false);
            //        key.AddColumn(keyColumn);
            //    }
            //    else
            //    {
            //        // We are processing another column of the same Index as the previous index
            //        Column keyColumn = new Column(columnName, false);
            //        key.AddColumn(keyColumn);
            //    }
            //    if (keyType == DatabaseConstant.KeyType.Foreign)
            //    {
            //        DataRow[] referencedColumnRows = DtReferencedColumns.Select(string.Format("FOREIGN_KEY = '{0}'", key.Name));

            //        foreach (DataRow refColRow in referencedColumnRows)
            //        {
            //            // Fill References
            //            if (key.ReferencedTable == null)
            //            {
            //                string referencedTableName = (string)refColRow["Referenced_Table_Name"];
            //                string referencedKeyName = (string)refColRow["Referenced_Key"];

            //                key.ReferencedTable = new Model.Table(referencedTableName, false);
            //                key.ReferencedKey = new Key(referencedKeyName, false, true);
            //            }
            //            string referencedColumnName = (string)refColRow["Referenced_Column_Name"];

            //            // Fill Referenced Columns
            //            Column referencedKeyColumn = new Column(referencedColumnName, false);
            //            key.AddReferencedColumn(referencedKeyColumn);
            //        }
            //    }
            //    key.ResetDefaults();
            //}
            //#endregion

            return table;
        }
Beispiel #32
0
        protected virtual void OnSelectedTableChanged(object sender, Model.Table oldTable, Model.Table newTable)
        {
            if (newTable != null)
            {
                newTable.PropertyChanged += SelectedTablePropertyChanged;
            }
            if (oldTable != null)
            {
                oldTable.PropertyChanged -= SelectedTablePropertyChanged;
            }

            this.ColumnsGrid = new ColumnsGrid();
            this.ColumnsGrid.SelectedTable = newTable;
            this.ColumnsGrid.DataContext = newTable;
        }
Beispiel #33
0
 protected void OnSelectedTableChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
 {
     WaveTech.Dafuscator.Model.Table t = e.NewValue as WaveTech.Dafuscator.Model.Table;
     SelectedTable = t;
 }
Beispiel #34
0
        private Model.Table GetNewTable(string schema, string tableName)
        {
            Interfaces.Events.RaiseObjectBeingProcessedEvent(tableName, "Table");
            Model.Table table = new Model.Table(tableName, false);

            #region Columns
            DataRow[] columnRows = Columns.Select(string.Format("TABLE_SCHEMA = '{0}' AND TABLE_NAME = '{1}'", schema, tableName));

            foreach (DataRow columnRow in columnRows)
            {
                bool isReadOnly = false;

                if (!columnRow.IsNull("IsIdentity") && (int)columnRow["IsIdentity"] == 1)
                {
                    isReadOnly = true;
                }
                else if (!columnRow.IsNull("IsComputed") && (int)columnRow["IsComputed"] == 1)
                {
                    isReadOnly = true;
                }
                else if (Slyce.Common.Utility.StringsAreEqual((string)columnRow["DATA_TYPE"], "timestamp", false))
                {
                    isReadOnly = true;
                }
                Column column = new Column(
                    (string)columnRow["COLUMN_NAME"],
                    false,
                    table,
                    (int)columnRow["ORDINAL_POSITION"],
                    Slyce.Common.Utility.StringsAreEqual((string)columnRow["IS_NULLABLE"], "YES", false),
                    (string)columnRow["DATA_TYPE"],
                    columnRow.IsNull("CHARACTER_MAXIMUM_LENGTH") ? 0 : Convert.ToInt32(columnRow["CHARACTER_MAXIMUM_LENGTH"]),
                    (int)columnRow["InPrimaryKey"] == 1,
                    columnRow.IsNull("IsIdentity") ? false : Convert.ToInt32(columnRow["IsIdentity"]) == 1,
                    columnRow.IsNull("COLUMN_DEFAULT") ? "" : (string)columnRow["COLUMN_DEFAULT"],
                    isReadOnly,
                    columnRow.IsNull("IsComputed") ? false : Convert.ToInt32(columnRow["IsComputed"]) == 1,
                    columnRow.IsNull("NUMERIC_PRECISION") ? 0 : Convert.ToInt32(columnRow["NUMERIC_PRECISION"]),
                    columnRow.IsNull("NUMERIC_SCALE") ? 0 : Convert.ToInt32(columnRow["NUMERIC_SCALE"]));

                if (IsSupported(column))
                {
                    table.AddColumn(column);
                }
            }

            #endregion

            #region Indexes
            DataRow[] indexRows = Indexes.Select(string.Format("TABLE_SCHEMA = '{0}' AND TABLE_NAME = '{1}'", schema, tableName));
            //foreach (DataRow indexRow in indexRows)
            for (int i = 0; i < indexRows.Length; i++)
            {
                DataRow indexRow = indexRows[i];
                string indexType;
                string indexKeyType = indexRow["CONSTRAINT_TYPE"].ToString();

                if (indexKeyType == "PRIMARY KEY")
                {
                    indexType = DatabaseConstant.IndexType.PrimaryKey;
                    //continue;
                }
                else if (indexKeyType == "FOREIGN KEY")
                {
                    indexType = DatabaseConstant.IndexType.ForeignKey;
                    //continue;
                }
                else if (indexKeyType == "UNIQUE")
                {
                    //continue;
                    indexType = DatabaseConstant.IndexType.Unique;
                }
                else if (indexKeyType == "CHECK")
                {
                    indexType = DatabaseConstant.IndexType.Check;
                }
                else if (indexKeyType == "NONE")    //TODO check is NONE
                {
                    indexType = DatabaseConstant.IndexType.None;
                }
                else
                {
                    //continue;
                    throw new Exception("IndexType " + indexKeyType + " Not Defined");
                }
                List<DataRow> indexColumnRows = new List<DataRow>();// = IndexColumns.Select(string.Format("TABLE_NAME = '{0}' AND CONSTRAINT_NAME  = '{1}'", tableName, indexRow["CONSTRAINT_NAME"]));

                indexColumnRows.AddRange(Columns.Select(string.Format("TABLE_SCHEMA = '{0}' AND TABLE_NAME = '{1}' AND COLUMN_NAME  = '{2}'", schema, tableName, indexRow["COLUMN_NAME"])));

                while ((i < indexRows.Length - 1) && (string)indexRows[i + 1]["TABLE_NAME"] == tableName && (string)indexRows[i + 1]["CONSTRAINT_NAME"] == (string)indexRow["CONSTRAINT_NAME"])
                {
                    i++;
                    indexRow = indexRows[i];
                    indexColumnRows.AddRange(Columns.Select(string.Format("TABLE_SCHEMA = '{0}' AND TABLE_NAME = '{1}' AND COLUMN_NAME  = '{2}'", schema, tableName, indexRow["COLUMN_NAME"])));
                }
                bool isUnique = (int)indexRow["IS_UNIQUE"] == 1 ? true : false;
                bool isClustered = (int)indexRow["IS_CLUSTERED"] == 1 ? true : false;
                Index index = new Index(indexRow["CONSTRAINT_NAME"].ToString(), false, indexType, table, isUnique, isClustered);

                // Fill Columns
                foreach (DataRow indexColumnRow in indexColumnRows)
                {
                    Column indexColumn = new Column(indexColumnRow["COLUMN_NAME"].ToString(), false);
                    index.AddColumn(indexColumn);
                }
                index.ResetDefaults();
                table.AddIndex(index);
            }

            // Indexes -- that should be keys
            DataRow[] keyRows = Indexes.Select(string.Format("TABLE_SCHEMA = '{0}' AND TABLE_NAME = '{1}'", schema, tableName));

            //foreach (DataRow keyRow in indexRows)
            for (int i = 0; i < keyRows.Length; i++)
            {
                DataRow keyRow = keyRows[i];
                string keyType;
                string indexKeyType = keyRow["CONSTRAINT_TYPE"].ToString();

                if (indexKeyType == "PRIMARY KEY")
                {
                    keyType = DatabaseConstant.KeyType.Primary;
                }
                else if (indexKeyType == "FOREIGN KEY")
                {
                    keyType = DatabaseConstant.KeyType.Foreign;
                }
                else if (indexKeyType == "UNIQUE")
                {
                    keyType = DatabaseConstant.KeyType.Unique;
                }
                else
                {
                    continue;
                }
                Key key = new Key(keyRow["CONSTRAINT_NAME"].ToString(), false, keyType, table, false);

                // Fill Columns
                List<DataRow> keyColumnRows = new List<DataRow>();
                keyColumnRows.AddRange(Columns.Select(string.Format("TABLE_SCHEMA = '{0}' AND TABLE_NAME = '{1}' AND COLUMN_NAME = '{2}'", schema, tableName, keyRow["COLUMN_NAME"])));

                while ((i < keyRows.Length - 1) && (string)keyRows[i + 1]["TABLE_NAME"] == tableName && (string)keyRows[i + 1]["CONSTRAINT_NAME"] == (string)keyRow["CONSTRAINT_NAME"])
                {
                    i++;
                    keyRow = keyRows[i];
                    keyColumnRows.AddRange(Columns.Select(string.Format("TABLE_SCHEMA = '{0}' AND TABLE_NAME = '{1}' AND COLUMN_NAME = '{2}'", schema, tableName, keyRow["COLUMN_NAME"])));
                }
                // Fill Columns
                foreach (DataRow keyColumnRow in keyColumnRows)
                {
                    Column keyColumn = new Column(keyColumnRow["COLUMN_NAME"].ToString(), false);
                    keyColumn.DataType = (string)keyColumnRow["DATA_TYPE"];
                    key.AddColumn(keyColumn);
                }
                if (keyType == DatabaseConstant.KeyType.Foreign)
                {
                    DataRow[] keyReferencedColumnRows = IndexReferencedColumns.Select(string.Format("ForeignKeySchema = '{0}' AND ForeignKeyTable = '{1}' AND ForeignKey = '{2}'", schema, tableName, keyRow["CONSTRAINT_NAME"]));
                    DataRow firstKeyReferencedColumnRow = keyReferencedColumnRows[0];

                    // Fill References
                    key.ReferencedTable = new Model.Table(firstKeyReferencedColumnRow["ReferencedTable"].ToString(), false) { Schema = firstKeyReferencedColumnRow["ReferencedSchema"].ToString() };
                    key.ReferencedKey = new Key(firstKeyReferencedColumnRow["ReferencedKey"].ToString(), false, true);

                    // Fill Referenced Columns
                    foreach (DataRow keyReferencedColumnRow in keyReferencedColumnRows)
                    {
                        Column keyReferencedColumn = new Column(keyReferencedColumnRow["ReferencedColumn"].ToString(), false);
                        key.AddReferencedColumn(keyReferencedColumn);
                    }
                }
                key.ResetDefaults();
                table.AddKey(key);
            }

            #endregion

            return table;
        }
Beispiel #35
0
        private Model.Table GetNewTable(SQLDMO.Table dmoTable)
        {
            Model.Table table = new Model.Table(dmoTable.Name, Script.GetSingluar(dmoTable.Name), false);

            // Columns
            int ordinalPosition = 0;
            List<SQLDMO.Column> dmoColumns = new List<SQLDMO.Column>();
            foreach (SQLDMO.Column dmoColumn in dmoTable.Columns)
            {
                dmoColumns.Add(dmoColumn);
            }

            foreach (SQLDMO.Column dmoColumn in dmoColumns)
            {
                if (UnsupportedDataTypes.ToLower().IndexOf("'" + dmoColumn.PhysicalDatatype.ToLower() + "'") >= 0)
                {
                    continue;
                }

                Column column = new Column(dmoColumn.Name, Script.GetSingluar(dmoColumn.Name), false, dmoColumn.Name, table, ordinalPosition, dmoColumn.AllowNulls, dmoColumn.PhysicalDatatype, dmoColumn.Length,
                    dmoColumn.InPrimaryKey, dmoColumn.Identity, dmoColumn.Default, dmoColumn.IsComputed);
                table.AddColumn(column);
                ordinalPosition++;
            }

            // Index
            foreach (SQLDMO.Index dmoIndex in dmoTable.Indexes)
            {
                string indexType;
                if (dmoIndex.Type == SQLDMO.SQLDMO_INDEX_TYPE.SQLDMOIndex_DRIPrimaryKey)
                {
                    continue;
                }
                if (dmoIndex.Type == SQLDMO.SQLDMO_INDEX_TYPE.SQLDMOIndex_DRIUniqueKey)
                {
                    continue;
                }
                else
                {
                    continue;
                    //throw new Exception("IndexType " + dmoIndex.Type + " Not Defined");
                }

                // Create Alias
                string indexAlias = indexType + "_";
                SQLDMO.SQLObjectList indexes = dmoIndex.ListIndexedColumns();

                for (int i = 1; i <= indexes.Count; i++)
                {
                    SQLDMO._Column dmoColumn = (SQLDMO._Column)indexes.Item(i);

                    indexAlias += dmoColumn.Name;
                    if (i < indexes.Count)
                    {
                        indexAlias += "And";
                    }
                }

                Index index = new Index(dmoIndex.Name, Script.GetSingluar(indexAlias), false, indexType, table);

                // Fill Columns
                for (int i = 1; i <= indexes.Count; i++)
                {
                    SQLDMO._Column dmoColumn = (SQLDMO._Column)indexes.Item(i);

                    Column indexColumn = new Column(dmoColumn.Name, Script.GetSingluar(dmoColumn.Name), false);
                    index.AddColumn(indexColumn);
                }

                table.AddIndex(index);
            }

            // Indexes -- that should be keys
            foreach (SQLDMO.Index dmoIndex in dmoTable.Indexes)
            {
                string keyType;
                if (dmoIndex.Type == SQLDMO.SQLDMO_INDEX_TYPE.SQLDMOIndex_DRIPrimaryKey)
                {
                    keyType = DatabaseConstant.KeyType.Primary;
                }
                if (dmoIndex.Type == SQLDMO.SQLDMO_INDEX_TYPE.SQLDMOIndex_DRIUniqueKey)
                {
                    keyType = DatabaseConstant.KeyType.Unique;
                }
                else
                {
                    continue;
                    //throw new Exception("KeyType " + dmoIndex.Type + " Not Defined");
                }

                // Create Alias
                string keyAlias = keyType + "_";
                SQLDMO.SQLObjectList indexes = dmoIndex.ListIndexedColumns();

                for (int i = 1; i <= indexes.Count; i++)
                {
                    SQLDMO._Column dmoColumn = dmoTable.Columns.Item(indexes.Item(i));

                    keyAlias += dmoColumn.Name;
                    if (i < indexes.Count)
                    {
                        keyAlias += "And";
                    }
                }

                Key key = new Key(dmoIndex.Name, Script.GetSingluar(keyAlias), false, keyType, table);

                // Fill Columns
                for (int i = 1; i <= indexes.Count; i++)
                {
                    Column keyColumn = new Column(indexes.Item(i).ToString(), Script.GetSingluar(indexes.Item(i).ToString()), false);
                    key.AddColumn(keyColumn);
                }

                table.AddKey(key);
            }

            // Keys
            foreach (SQLDMO.Key dmoKey in dmoTable.Keys)
            {
                string keyType;
                if (dmoKey.Type == SQLDMO.SQLDMO_KEY_TYPE.SQLDMOKey_Primary)
                {
                    keyType = DatabaseConstant.KeyType.Primary;
                }
                else if (dmoKey.Type == SQLDMO.SQLDMO_KEY_TYPE.SQLDMOKey_Foreign)
                {
                    keyType = DatabaseConstant.KeyType.Foreign;
                }
                else if (dmoKey.Type == SQLDMO.SQLDMO_KEY_TYPE.SQLDMOKey_Unique)
                {
                    keyType = DatabaseConstant.KeyType.Unique;
                }
                else if (dmoKey.Type == SQLDMO.SQLDMO_KEY_TYPE.SQLDMOKey_Unknown)
                {
                    continue;
                }
                else
                {
                    throw new Exception("KeyType " + dmoKey.Type.ToString() + " Not Defined");
                }

                // Create Alias
                string keyAlias = keyType + "_";
                for (int i = 1; i <= dmoKey.KeyColumns.Count; i++)
                {
                    SQLDMO._Column dmoColumn = dmoTable.Columns.Item(dmoKey.KeyColumns.Item(i));

                    keyAlias += dmoColumn.Name;
                    if (i < dmoKey.KeyColumns.Count)
                    {
                        keyAlias += "And";
                    }
                }

                Key key = new Key(dmoKey.Name, Script.GetSingluar(keyAlias), false, keyType, table);

                // Fill Columns
                for (int i = 1; i <= dmoKey.KeyColumns.Count; i++)
                {
                    Column keyColumn = new Column(dmoKey.KeyColumns.Item(i), Script.GetSingluar(dmoKey.KeyColumns.Item(i)), false);
                    key.AddColumn(keyColumn);
                }

                if (keyType == DatabaseConstant.KeyType.Foreign)
                {
                    // Fill References
                    key.ReferencedTable = new Model.Table(dmoKey.ReferencedTable, Script.GetSingluar(dmoKey.ReferencedTable), false);

                    if (dmoKey.ReferencedKey != null)
                    {
                        key.ReferencedKey = new Key(dmoKey.ReferencedKey, Script.GetSingluar(dmoKey.ReferencedKey), false);
                    }

                    // Fill Referenced Columns
                    for (int i = 1; i <= dmoKey.KeyColumns.Count; i++)
                    {
                        Column referencedKeyColumn = new Column(dmoKey.ReferencedColumns.Item(i), Script.GetSingluar(dmoKey.ReferencedColumns.Item(i)), false);
                        key.AddReferencedColumn(referencedKeyColumn);
                    }
                }

                table.AddKey(key);
            }

            return table;
        }
Beispiel #36
0
        private Model.Table GetNewTable(Microsoft.SqlServer.Management.Smo.Table smoTable)
        {
            Model.Table table = new Model.Table(smoTable.Name, Script.GetSingluar(smoTable.Name), false);

            #region Columns
            int ordinalPosition = 0;
            List<Microsoft.SqlServer.Management.Smo.Column> smoColumns = new List<Microsoft.SqlServer.Management.Smo.Column>();

            foreach (Microsoft.SqlServer.Management.Smo.Column smoColumn in smoTable.Columns)
            {
                smoColumns.Add(smoColumn);
            }
            foreach (Microsoft.SqlServer.Management.Smo.Column smoColumn in smoColumns)
            {
                if (UnsupportedDataTypes.ToLower().IndexOf("'" + smoColumn.DataType.Name.ToLower() + "'") >= 0)
                {
                    continue;
                }

                // Some columns do not have default values
                string defaultValue = null;
                try
                {
                    defaultValue = smoColumn.Default;
                }
                catch { }

                Column column = new Column(smoColumn.Name, Script.GetSingluar(smoColumn.Name), false, smoColumn.Name, table, ordinalPosition, smoColumn.Nullable, smoColumn.DataType.Name,
                    smoColumn.DataType.MaximumLength, smoColumn.InPrimaryKey, smoColumn.Identity, defaultValue, smoColumn.Computed);
                table.AddColumn(column);
                ordinalPosition++;
            }
            #endregion

            #region Indexes
            //foreach (Microsoft.SqlServer.Management.Smo.Index smoIndex in smoTable.Indexes)
            //{
            //    string indexType;
            //    string indexKeyType = smoIndex.IndexKeyType.ToString();
            //    if (indexKeyType == "DriPrimaryKey")
            //    {
            //        continue;
            //    }
            //    else if (indexKeyType == "DriUniqueKey")
            //    {
            //        continue;
            //    }
            //    else if (indexKeyType == "None")
            //    {
            //        continue;
            //        //indexType = DatabaseConstant.IndexType.None;
            //    }
            //    else
            //    {
            //        throw new Exception("IndexType " + indexKeyType + " Not Defined");
            //    }

            //    // Create Alias
            //    string indexAlias = indexType + "_";
            //    for (int i = 0; i <= smoIndex.IndexedColumns.Count - 1; i++)
            //    {
            //        Microsoft.SqlServer.Management.Smo.IndexedColumn smoIndexedColumn = smoIndex.IndexedColumns[i];

            //        indexAlias += smoIndexedColumn.Name;
            //        if (i < smoIndex.IndexedColumns.Count - 1)
            //        {
            //            indexAlias += "And";
            //        }
            //    }

            //    Index index = new Index(smoIndex.Name, Script.GetSingluar(indexAlias), false, indexType, table);

            //    // Fill Columns
            //    foreach (Microsoft.SqlServer.Management.Smo.IndexedColumn smoColumn in smoIndex.IndexedColumns)
            //    {
            //        Column indexColumn = new Column(smoColumn.Name, Script.GetSingluar(smoColumn.Name), false);
            //        index.AddColumn(indexColumn);
            //    }

            //    table.AddIndex(index);
            //}

            // Indexes -- that should be keys
            foreach (Microsoft.SqlServer.Management.Smo.Index smoIndex in smoTable.Indexes)
            {
                string keyType;
                string indexKeyType = smoIndex.IndexKeyType.ToString();
                if (indexKeyType == "DriPrimaryKey")
                {
                    keyType = DatabaseConstant.KeyType.Primary;
                }
                else if (indexKeyType == "DriUniqueKey")
                {
                    keyType = DatabaseConstant.KeyType.Unique;
                }
                else if (indexKeyType == "None")
                {
                    keyType = DatabaseConstant.KeyType.None;
                    continue;
                }
                else
                {
                    throw new Exception("KeyType " + indexKeyType + " Not Defined");
                }

                // Create Alias
                string keyAlias = keyType + "_";
                for (int i = 0; i <= smoIndex.IndexedColumns.Count - 1; i++)
                {
                    Microsoft.SqlServer.Management.Smo.Column smoColumn = smoTable.Columns[smoIndex.IndexedColumns[i].Name];

                    keyAlias += smoColumn.Name;
                    if (i < smoIndex.IndexedColumns.Count - 1)
                    {
                        keyAlias += "And";
                    }
                }

                Key key = new Key(smoIndex.Name, Script.GetSingluar(keyAlias), false, keyType, table);

                // Fill Columns
                foreach (Microsoft.SqlServer.Management.Smo.IndexedColumn smoColumn in smoIndex.IndexedColumns)
                {
                    Column keyColumn = new Column(smoColumn.Name, Script.GetSingluar(smoColumn.Name), false);
                    key.AddColumn(keyColumn);
                }

                table.AddKey(key);
            }
            #endregion

            #region Keys
            foreach (Microsoft.SqlServer.Management.Smo.ForeignKey smoForeignKey in smoTable.ForeignKeys)
            {
                string keyType = DatabaseConstant.KeyType.Foreign;

                // Create Alias
                string keyAlias = keyType + "_";
                for (int i = 0; i <= smoForeignKey.Columns.Count - 1; i++)
                {
                    Microsoft.SqlServer.Management.Smo.Column smoColumn = smoTable.Columns[smoForeignKey.Columns[i].Name];

                    keyAlias += smoColumn.Name;
                    if (i < smoForeignKey.Columns.Count - 1)
                    {
                        keyAlias += "And";
                    }
                }

                Key key = new Key(smoForeignKey.Name, Script.GetSingluar(keyAlias), false, keyType, table);

                // Fill Columns
                foreach (Microsoft.SqlServer.Management.Smo.ForeignKeyColumn smoColumn in smoForeignKey.Columns)
                {
                    Column keyColumn = new Column(smoColumn.Name, Script.GetSingluar(smoColumn.Name), false);
                    key.AddColumn(keyColumn);
                }

                // Fill References
                key.ReferencedTable = new Model.Table(smoForeignKey.ReferencedTable, Script.GetSingluar(smoForeignKey.ReferencedTable), false);
                key.ReferencedKey = new Key(smoForeignKey.ReferencedKey, Script.GetSingluar(smoForeignKey.ReferencedKey), false);

                // Fill Referenced Columns
                foreach (Microsoft.SqlServer.Management.Smo.ForeignKeyColumn smoColumn in smoForeignKey.Columns)
                {
                    Column referencedKeyColumn = new Column(smoColumn.ReferencedColumn, Script.GetSingluar(smoColumn.ReferencedColumn), false);
                    key.AddReferencedColumn(referencedKeyColumn);
                }

                table.AddKey(key);
            }
            #endregion

            return table;
        }