/// <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); } }
/// <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>(); } }
/// <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()); }
/// <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"))); }
/// <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)); }
/// <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(",)", ")"); }
/// <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); }
/// <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); }