Exemple #1
0
        /// <summary>
        /// 生成CHM
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Bulid_Chm(object sender, RoutedEventArgs e)
        {
            try
            {
                var path = string.Format("{0}chm", AppDomain.CurrentDomain.BaseDirectory);

                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }

                if (txtFile != "")
                {
                    path = txtFile;
                }

                //生成list
                var list = new List <ChmModel>();
                foreach (var item in Dtable.Items)
                {
                    var box = Common.GetTemplateColumn <System.Windows.Controls.CheckBox>(Dtable, 0, "tabBox", item);

                    if (box != null && box.IsChecked == true)
                    {
                        var model = new ChmModel();
                        model.tabComments = (item as BaseTable).tabComments;
                        model.tabName     = (item as BaseTable).tabName;
                        model.columns     = DataSchema.ColumnList(AppCache.GetBuildLink(), model.tabName) ?? new List <BaseColumn>();
                        model.columns     = model.disColType(model.columns);

                        list.Add(model);
                    }
                }

                if (list.Count == 0)
                {
                    CodeBox.Show("请选择要生成表", this);
                    return;
                }


                Chm.CreateHhp(path);
                Chm.CreateHhc(path, list);
                Chm.CreateHhk(path, list);
                Chm.Compile(path, list);

                CodeBox.Show("生成成功", this);
            }
            catch (Exception ex)
            {
                CodeBox.Show("生成失败", this);
            }
        }
Exemple #2
0
        /// <summary>
        /// 显示列结构
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Dtable_Selected(object sender, RoutedEventArgs e)
        {
            var item = (sender as System.Windows.Controls.DataGrid).SelectedItem as BaseTable;

            if (item != null)
            {
                //列checkbox全选为不选择
                var tempCol = Dcolumn.Columns[0] as DataGridTemplateColumn;
                var box     = tempCol.Header as System.Windows.Controls.CheckBox;
                box.IsChecked = false;

                //绑定新列的数据源
                Dcolumn.ItemsSource = DataSchema.ColumnList(AppCache.GetBuildLink(), item.tabName) ?? new List <BaseColumn>();
            }
        }
Exemple #3
0
        /// <summary>
        /// 编辑列备注
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Dcolumn_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
        {
            var table = Dtable.SelectedItem as BaseTable;

            if (table != null)
            {
                var list = DataSchema.ColumnList(AppCache.GetBuildLink(), table.tabName) ?? new List <BaseColumn>();
                var item = e.Row.Item as BaseColumn;

                var temp = list.Find(a => a.colId == item.colId);
                list.Remove(temp);
                list.Add(item);
                AppCache.SetTableColumn(list, DataSchema.GetColumnKey(AppCache.GetBuildLink(), table.tabName));
            }

            DataSchema.UpdateColComments(e.Row.Item as BaseColumn, Dtable.SelectedItem as BaseTable, AppCache.GetBuildLink());
        }
Exemple #4
0
    /// <summary>
    /// 获取tvps语句
    /// </summary>
    /// <returns></returns>.
    private static string GetTvps(DataContext db, string tableName)
    {
        var sql1 = new StringBuilder();
        var sql2 = new StringBuilder();
        var list = DataSchema.ColumnList(db, tableName);

        sql1.AppendFormat("insert into {0} (", tableName);
        sql2.Append("select ");
        list.ForEach(a => {
            sql1.AppendFormat("{0},", a.GetValue("name").ToStr());
            sql2.AppendFormat("tb.{0},", a.GetValue("name").ToStr());
        });

        sql1.Append(")");
        sql2.AppendFormat("from @{0} as tb", tableName);

        return(string.Format("{0}{1}", sql1.ToString().Replace(",)", ") "), sql2.ToString().Replace(",from", " from")));
    }
Exemple #5
0
    /// <summary>
    /// 获取mysql批量插入sql
    /// </summary>
    /// <returns></returns>
    private static string GetMySql(DataTable dt, DataContext db)
    {
        var sql = new StringBuilder();

        sql.AppendFormat("insert into {0}(", dt.TableName);
        DataSchema.ColumnList(db, dt.TableName).ForEach(a => { sql.AppendFormat("{0},", a.GetValue("name")); });
        sql.Append(")").Replace(",)", ")");
        sql.Append("values");

        foreach (DataRow dr in dt.Rows)
        {
            sql.Append("(");
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                sql.AppendFormat("'{0}',", dr[i]);
            }
            sql.Append("),").Replace(",)", ")");
        }

        return(sql.ToStr().Substring(0, sql.ToStr().Length - 1));
    }
Exemple #6
0
    /// <summary>
    ///  odp.net 特性 获取sql
    /// </summary>
    private static void GetOdpParam(DataTable dt, ref OracleCommand cmd, DataContext db, string tableName)
    {
        var i         = 0;
        var sql       = new StringBuilder();
        var list      = DataSchema.ColumnList(db, tableName);
        var paramList = new List <OracleParameter>();

        sql.AppendFormat("insert into {0} values(", tableName);
        DataSchema.ColumnList(db, tableName).ForEach(item => {
            sql.AppendFormat(":{0},", item.GetValue("name"));
            var param       = new OracleParameter(item.GetValue("name").ToStr(), GetOracleDbType(item.GetValue("type").ToStr()));
            param.Direction = ParameterDirection.Input;
            object[] pValue = new object[dt.Rows.Count];

            for (int j = 0; j < dt.Rows.Count; j++)
            {
                var itemValue = dt.Rows[j][i];

                if (itemValue == null)
                {
                    itemValue = DBNull.Value;
                }

                pValue[j] = itemValue;
            }

            param.Value = pValue;
            paramList.Add(param);
            i++;
        });

        cmd.Parameters.AddRange(paramList.ToArray());
        sql.Append(")");

        cmd.CommandText = sql.ToString().Replace(",)", ")");
    }
Exemple #7
0
        /// <summary>
        /// 生成建表语句
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Bulid_Table(object sender, RoutedEventArgs e)
        {
            var bat  = new StringBuilder();
            var path = string.Format("{0}sql", AppDomain.CurrentDomain.BaseDirectory);

            if (txtFile != "")
            {
                path = txtFile + "\\sql";
            }

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }

            foreach (var item in Dtable.Items)
            {
                var box = Common.GetTemplateColumn <System.Windows.Controls.CheckBox>(Dtable, 0, "tabBox", item);

                if (box != null && box.IsChecked == true)
                {
                    var sql = new StringBuilder();
                    sql.AppendFormat("create table {0}(\r\n", (item as BaseTable).tabName);
                    var field = DataSchema.ColumnList(AppCache.GetBuildLink(), (item as BaseTable).tabName) ?? new List <BaseColumn>();
                    var i     = 0;
                    field.ForEach(a => {
                        if (AppCache.GetBuildLink().dbType == DataDbType.MySql)
                        {
                            if (a.isNull == "是")
                            {
                                sql.AppendFormat("\t{0} {1}{2} comment {3}\r\n", a.colName, a.showType, i == field.Count - 1 ? "" : ",", a.colComments.Replace("'", ""));
                            }
                            else
                            {
                                sql.AppendFormat("\t{0} {1} not null{2} comment {3}\r\n", a.colName, a.showType, i == field.Count - 1 ? "" : ",", a.colComments.Replace("'", ""));
                            }
                        }
                        else
                        {
                            if (a.isNull == "是")
                            {
                                sql.AppendFormat("\t{0} {1}{2}\r\n", a.colName, a.showType, i == field.Count - 1 ? "" : ",");
                            }
                            else
                            {
                                sql.AppendFormat("\t{0} {1} not null{2}\r\n", a.colName, a.showType, i == field.Count - 1 ? "" : ",");
                            }
                        }
                        i++;
                    });

                    if (AppCache.GetBuildLink().dbType == DataDbType.MySql)
                    {
                        sql.AppendFormat(")comment={0} ", (item as BaseTable).tabComments.Replace("'", ""));
                        bat.AppendFormat("mysql -h {0} -u {1} -p {2} < @{3}.sql\r\n", AppCache.GetBuildLink().hostName, AppCache.GetBuildLink().userName, AppCache.GetBuildLink().userPwd, (item as BaseTable).tabName);
                    }
                    else
                    {
                        sql.Append(") ");
                    }

                    if (AppCache.GetBuildLink().dbType == DataDbType.SqlServer)
                    {
                        field.ForEach(a => {
                            if (a.colComments != "")
                            {
                                sql.AppendFormat("execute sp_addextendedproperty 'MS_Description','{0}','user','dbo','table','{1}','column','{2}';\r\n", a.colComments.Replace("'", ""), (item as BaseTable).tabName, a.colName);
                            }
                        });
                        sql.AppendFormat("execute sp_addextendedproperty 'MS_Description','{0}','user','dbo','table','{1}',null,null;\r\n", (item as BaseTable).tabComments.Replace("'", ""), (item as BaseTable).tabName);

                        bat.AppendFormat("sqlcmd -U {0} -P {1} -i @{2}.sql\r\n", AppCache.GetBuildLink().userName, AppCache.GetBuildLink().userPwd, (item as BaseTable).tabName);
                    }

                    if (AppCache.GetBuildLink().dbType == DataDbType.Oracle)
                    {
                        sql.Append("\r\n tablespace USERS pctfree 10 initrans 1 maxtrans 255 storage(initial 64K minextents 1 maxextents unlimited);\r\n");

                        field.ForEach(a => {
                            if (a.colComments != "")
                            {
                                sql.AppendFormat("comment on column {0}.{1} is '{2}'; \r\n", (item as BaseTable).tabName, a.colName, a.colComments.Replace("'", ""));
                            }
                        });
                        sql.AppendFormat("comment on table {0} is '{1}';\r\n", (item as BaseTable).tabName, (item as BaseTable).tabComments.Replace("'", ""));

                        bat.AppendFormat("sqlplus {0}/{1}@{2} @{3}.sql> CreateTable.log\r\n", AppCache.GetBuildLink().userName, AppCache.GetBuildLink().userPwd, AppCache.GetBuildLink().serverValue, (item as BaseTable).tabName);
                    }

                    File.WriteAllText(string.Format("{0}/{1}.sql", path, (item as BaseTable).tabName), sql.ToString(), Encoding.UTF8);
                }
            }

            bat.Append("exit;");

            if (AppCache.GetBuildLink().dbType == DataDbType.Oracle)
            {
                File.WriteAllText(string.Format("{0}/Oracle.bat", path), bat.ToString(), Encoding.UTF8);
            }

            if (AppCache.GetBuildLink().dbType == DataDbType.MySql)
            {
                File.WriteAllText(string.Format("{0}/MySql.bat", path), bat.ToString(), Encoding.UTF8);
            }

            if (AppCache.GetBuildLink().dbType == DataDbType.SqlServer)
            {
                File.WriteAllText(string.Format("{0}/SqlServer.bat", path), bat.ToString(), Encoding.UTF8);
            }

            CodeBox.Show("生成成功", this);
        }
Exemple #8
0
        /// <summary>
        /// 生成实体
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Build_Model(object sender, RoutedEventArgs e)
        {
            var list = new List <EntityInfo>();

            //生成list
            foreach (var item in Dtable.Items)
            {
                var box = Common.GetTemplateColumn <System.Windows.Controls.CheckBox>(Dtable, 0, "tabBox", item);

                if (box != null && box.IsChecked == true)
                {
                    var entiy = new EntityInfo();
                    entiy.table       = item as BaseTable;
                    entiy.language    = language.SelectionBoxItem.ToString();
                    entiy.columns     = DataSchema.ColumnList(AppCache.GetBuildLink(), entiy.table.tabName) ?? new List <BaseColumn>();
                    entiy.columns     = entiy.disColType(entiy.columns, entiy.language);
                    entiy.isSerialize = (bool)isSerialize.IsChecked;
                    entiy.isCheck     = (bool)isCheck.IsChecked;
                    entiy.isMap       = (bool)isMap.IsChecked;
                    entiy.isModel     = (bool)isModel.IsChecked;
                    entiy.isOldModel  = (bool)isOldModel.IsChecked;

                    if (DataDbType.Oracle == AppCache.GetBuildLink().dbType)
                    {
                        entiy.param = ":";
                    }

                    if (DataDbType.MySql == AppCache.GetBuildLink().dbType)
                    {
                        entiy.param = "?";
                    }

                    if (DataDbType.SqlServer == AppCache.GetBuildLink().dbType)
                    {
                        entiy.param = "@";
                    }

                    if (!entiy.isCheck && !entiy.isSerialize && !entiy.isMap && !entiy.isModel && !entiy.isOldModel)
                    {
                        CodeBox.Show("请选择模板", this);
                        return;
                    }

                    list.Add(entiy);
                }
            }

            if (list.Count == 0)
            {
                CodeBox.Show("请选择要生成表", this);
                return;
            }

            //执行生成实体
            list.ForEach(a => {
                //命名空间
                a.nameSpace = txtNameSpace.Text.Trim();

                //生成路径
                if (txtFile != "")
                {
                    a.modelFile = txtFile;
                }

                //语言
                a.language = language.SelectionBoxItem.ToString();

                if (a.isMap)
                {
                    Common.BuildCodeModel(a, "xml");
                }

                else
                {
                    Common.BuildCodeModel(a);
                }
            });

            CodeBox.Show(string.Format("生成完成"), this);
        }