C#网页版代码生成器

    技术2024-11-30  28

    C#网页版代码生成器

           C#网页版代码生成器,还在更新中....以前修复过ASPNETPAGER分页控件的网页版存储过程代码生成器,学到了一种思维,替换字符串,因此有空就写下了这个。仅供参考,本人水平还有待提高,写这个完全是兴趣,写的不好的地方不要骂我就行,呵呵。

    存储过程代码如下,参考MSSQL SERVER文档。

    存储过程代码  1   2  ALTER proc [dbo].[GetTablesFromDatabase]  3  @dataBaseName nvarchar( 200 )  4  as  5  declare @sql nvarchar( 2000 );  6  set  @sql = ' SELECT TABLE_CATALOG as "数据库", TABLE_SCHEMA as "表架构" , TABLE_NAME as "表名" ,TABLE_TYPE as "表类型" FROM INFORMATION_SCHEMA.TABLES   7  where  TABLE_CATALOG = N ' +@dataBaseName+ '  order by TABLE_NAME  ' ;                 --get the role !  8  -- SELECT  *  FROM INFORMATION_SCHEMA.TABLES   9  -- where  TABLE_CATALOG = ' TestSub '   -- get  the schema from databse 10  exec(@sql); 11  print(@sql); 12  13  ALTER  proc  [dbo].[GetColumnsFromTable] 14  @dataBaseName nvarchar( 200 ), 15  @tableName nvarchar( 200 ) 16  as 17  declare @dataBase  nvarchar( 200 ); 18  set  @dataBase = rtrim(@dataBaseName) + ' .INFORMATION_SCHEMA.COLUMNS ' ; 19  declare @sql nvarchar( 2000 ); 20  -- set  @sql = ' SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLUMN_DEFAULT 21  -- FROM   ' +@dataBaseName+ ' .INFORMATION_SCHEMA.COLUMNS 22  -- WHERE TABLE_NAME  = N ' +@tableName+ ' ; ' 23  set  @sql = ' SELECT TABLE_CATALOG as "数据库", TABLE_SCHEMA as "表架构" , TABLE_NAME as "表名", COLUMN_NAME as "列名",DATA_TYPE  as "列数据类型" 24  FROM  ' +@dataBase 25  + '  WHERE TABLE_NAME =N ' + @tableName + '  order by COLUMN_NAME ' ; 26  exec(@sql); 27  print(@sql);

     

    页面代码如下:

     

    页面布局代码   1  < html xmlns = " http://www.w3.org/1999/xhtml " >   2  < head runat = " server " >   3       < title > 无标题页 </ title >   4       < style type = " text/css "   >   5      .dg - HeaderStyle {   6      background - color: #E3E3E3;   7      font - size: 12px;   8      font - weight: bold;   9      text - indent: 5px;  10      line - height: 15px;  11      }  12      .dg - ItemStyle {  13      text - indent: 5px;  14      font - size: 12px;  15      line - height: 15px;  16      }  17      .textInput { width:185px; height:22px;  float :left;}  18      .textInput_focus { border:solid red 1px; height:20px; line - height:20px; background:url( / DataBaseTablesColumns / textInput_bg.gif) repeat - x left; width:175px; padding: 0   0   0  5px;}  19      .textInput_blur { border:solid blue 1px; height:20px; line - height:20px; background:url( / DataBaseTablesColumns / textInput_bg.gif) repeat - x left;width:175px; padding: 0   0   0  5px;}  20   21       </ style >  22  </ head >  23  < body >  24       < form id = " form1 "  runat = " server " >  25       < div >  26           < div style = " width:100%; height:28px; background-color:Silver; " >  27               < p style = " border-style: groove; border-color: #0000FF; color: #CC00FF; text-decoration: underline; text-align: center; font-weight: bold; background-color: #C0C0C0; " >  Maded By JasenKin    2010 / 01 / 11   00 : 53 </ p ></ div >  28            29           < div style = " width:45%; float: left; " >  30           < p style = " font:blue; " > 第一步:选择数据库 </ p >  31               < asp:DropDownList ID = " ddlDataBase "  runat = " server " >  32               </ asp:DropDownList >< br  />  33           < asp:Button ID = " btnShowTables "  runat = " server "  Text = " Show Tables From DataBase "    34                  onclick = " btnShowTables_Click "  BackColor = " Silver "  BorderStyle = " Groove "    35                  Font - Bold = " True "    />  36           < br  />  37           < asp:DataGrid ID = " dg "  runat = " server "  AutoGenerateColumns = " False "  CellPadding = " 3 "  38              CellSpacing = " 0 "  PageSize = " 1 "  OnItemCommand = " dg_ItemCommand "    39                  style = " margin-right: 17px " >  40               < HeaderStyle CssClass = " dg-HeaderStyle " ></ HeaderStyle >  41               < ItemStyle CssClass = " dg-ItemStyle "   />  42               < Columns >  43                   < asp:TemplateColumn HeaderText = " 数据库 " >  44                       < HeaderStyle Width = " 50px "   />  45                       < ItemStyle Width = " 50px "   />  46                       < ItemTemplate >  47                           <% # DataBinder.Eval(Container.DataItem,  " 数据库 " ) %>  48                       </ ItemTemplate >  49                   </ asp:TemplateColumn >  50                   < asp:TemplateColumn HeaderText = " 表架构 " >  51                       < HeaderStyle Width = " 50px "   />  52                       < ItemStyle Width = " 50px "   />  53                       < ItemTemplate >  54                           <% # DataBinder.Eval(Container.DataItem,  " 表架构 " ).ToString() %>  55                       </ ItemTemplate >  56                   </ asp:TemplateColumn >  57                   < asp:TemplateColumn HeaderText = " 表名 " >  58                       < HeaderStyle Width = " 50px "   />  59                       < ItemStyle Width = " 50px "   />  60                       < ItemTemplate >  61                           <% # GetTableName(Container.DataItem) %>  62                       </ ItemTemplate >  63                   </ asp:TemplateColumn >  64                   < asp:TemplateColumn HeaderText = " 表类型 " >  65                       < HeaderStyle Width = " 100px "   />  66                       < ItemStyle Width = " 100px "   />  67                       < ItemTemplate >  68                           <% # DataBinder.Eval(Container.DataItem,  " 表类型 " ).ToString() %>  69                       </ ItemTemplate >  70                   </ asp:TemplateColumn >  71                   < asp:TemplateColumn HeaderText = " 操作 " >  72                       < HeaderStyle Width = " 65px "   />  73                       < ItemStyle Width = " 65px "   />  74                       < ItemTemplate >  75                           < asp:LinkButton ID = " edit "  CommandName = " edit "  ForeColor = " #FF0000 "  runat = " server " > 编辑 </ asp:LinkButton >  76                           < asp:LinkButton ID = " del "  CommandName = " del "  ForeColor = " #FF0000 "  runat = " server " > 删除 </ asp:LinkButton >  77                       </ ItemTemplate >  78                   </ asp:TemplateColumn >  79               </ Columns >  80           </ asp:DataGrid >  81           </ div >     82            83           < div style = " width:45%; float:right; " >  84           < p style = " font:blue; " > 第二步:选择表名 </ p >  85           < asp:DropDownList ID = " ddlTablesName "  runat = " server "    86              onselectedindexchanged = " ddlTablesName_SelectedIndexChanged "    87              Visible = " False "  AutoPostBack = " True "   >  88           </ asp:DropDownList >    89           < br  />  90            < asp:DataGrid ID = " gwShowColumn "  runat = " server "  AutoGenerateColumns = " False "  CellPadding = " 3 "  91              CellSpacing = " 0 "  PageSize = " 1 "   style = " margin-right: 17px " >  92               < HeaderStyle CssClass = " dg-HeaderStyle " ></ HeaderStyle >  93               < ItemStyle CssClass = " dg-ItemStyle "   />  94               < Columns >  95                   < asp:TemplateColumn HeaderText = " 数据库 " >  96                       < HeaderStyle Width = " 70px "   />  97                       < ItemStyle Width = " 70px "   />  98                       < ItemTemplate >  99                           <% # DataBinder.Eval(Container.DataItem,  " 数据库 " ) %> 100                       </ ItemTemplate > 101                   </ asp:TemplateColumn > 102                   < asp:TemplateColumn HeaderText = " 表架构 " > 103                       < HeaderStyle Width = " 50px "   /> 104                       < ItemStyle Width = " 50px "   /> 105                       < ItemTemplate > 106                           <% # DataBinder.Eval(Container.DataItem,  " 表架构 " ).ToString() %> 107                       </ ItemTemplate > 108                   </ asp:TemplateColumn > 109                   < asp:TemplateColumn HeaderText = " 表名 " > 110                       < HeaderStyle Width = " 70px "   /> 111                       < ItemStyle Width = " 70px "   /> 112                       < ItemTemplate > 113                           <% # GetTableName(Container.DataItem) %> 114                       </ ItemTemplate > 115                   </ asp:TemplateColumn > 116                   < asp:TemplateColumn HeaderText = " 列名 " > 117                       < HeaderStyle Width = " 70px "   /> 118                       < ItemStyle Width = " 70px "   /> 119                       < ItemTemplate > 120                           <% # DataBinder.Eval(Container.DataItem,  " 列名 " ).ToString() %> 121                       </ ItemTemplate > 122                   </ asp:TemplateColumn > 123                   < asp:TemplateColumn HeaderText = " 列数据类型 " > 124                       < HeaderStyle Width = " 70px "   /> 125                       < ItemStyle Width = " 70px "   /> 126                       < ItemTemplate > 127                           <% # DataBinder.Eval(Container.DataItem,  " 列数据类型 " ).ToString() %> 128                       </ ItemTemplate > 129                   </ asp:TemplateColumn > 130               </ Columns > 131           </ asp:DataGrid > 132               < br  /> 133               < p style = " font:blue; " > 第三步:指定命名空间,点击按钮获取数据库表对象模型 </ p > 134               Input NameSpace Name: < asp:TextBox ID = " tbNameSpace "  runat = " server "  CssClass = " textInput_blur "   onfocus = " this.className='textInput_focus' " 135                                          onblur = " this.className='textInput_blur' " ></ asp:TextBox > 136               < br  /> 137               < asp:Button ID = " btnCreate "  runat = " server "  Text = " Create Object Model "   138                  onclick = " btnCreate_Click "  BorderColor = " Silver "  BorderStyle = " Groove "   139                  Font - Bold = " True "   /> 140           < br  /> 141               < asp:Button ID = " btnCreateFile "  runat = " server "  Text = " CreateFile "  OnClick = " btnCreateFile_Click "   />< br  /> 142          143               < asp:Label ID = " lblShow "  runat = " server "  BackColor = " Silver "  BorderColor = " Blue "   144                  BorderStyle = " Solid " ></ asp:Label > 145           </ div > 146           < br  /> 147           < div > 148             149           150           151           </ div > 152            153            154       </ div > 155       </ form > 156  </ body > 157  </ html > 158 

     

    后台操作代码:由于获取操作系统消耗内存太大,有点卡,就没那么写了

     

    操作代码   1  using  System;   2  using  System.Collections;   3  using  System.Configuration;   4  using  System.Data;   5  using  System.Web;   6  using  System.Web.Security;   7  using  System.Web.UI;   8  using  System.Web.UI.HtmlControls;   9  using  System.Web.UI.WebControls;  10  using  System.Web.UI.WebControls.WebParts;  11   12  using  ForeTech.Data;  13  using  System.Data.SqlClient;  14   15  using  System.IO;  16   17  public   partial   class  DataBaseTablesColumns_GetTablesFromDB : System.Web.UI.Page  18  {  19       protected   void  Page_Load( object  sender, EventArgs e)  20      {  21          btnCreate.Enabled  =   false ;  22          BindData();  23      }  24   25       private   void  BindData()  26      {  27          lblShow.Text  =   " <br />操作指南<br /> "   +   " 第一步:选择数据库 <br /> "   +   " 第二步:选择表名 <br /> "   +   " 第三步:指定命名空间,点击按钮获取数据库表对象模型<br /><br /> " ;  28           if  (ddlDataBase.Items.Count  <=   0 )  29          {  30              ddlDataBase.Items.Add( new  ListItem( " ForeTechTest " )); // get the database from sql server   31               // throw new NotImplementedException();  32          }  33      }  34   35       protected   void  btnShowTables_Click( object  sender, EventArgs e)  36      {  37           string  dataBaseName  =   " ' "   +  ddlDataBase.SelectedItem.Text.Trim()  +   " ' " ;  38          ddlTablesName.Visible  =   true ;  39          SqlParameter sp  =   new  SqlParameter( " @dataBaseName " , SqlDbType.NVarChar,  200 );  40          sp.Value  =  dataBaseName;  41          DataSet ds  =  DBTool.ExecuteDataset(CommandType.StoredProcedure,  " GetTablesFromDatabase " , sp);  42          ddlTablesName.DataTextField  =   " 表名 " ;  43          ddlTablesName.DataValueField  =   " 表名 " ;  44          ddlTablesName.DataSource  =  ds;  45          ddlTablesName.DataBind();  46          dg.DataSource  =  ds;  47          dg.DataBind();  48           /*   try  49            {  50                int colWidth = 200;  51                if (colWidth > 0)  52                {  53                    for (int i = 0; i < gwShowTables.Columns.Count; i++)  54                    {  55                        gwShowTables.Columns[i].HeaderStyle.Width = 200;// ItemStyle.Width = colWidth;  56                    }  57                }  58            }  59            catch  60            {  61                // Report error.        62            }  63             */  64      }  65   66       protected   void  ddlTablesName_SelectedIndexChanged( object  sender, EventArgs e)  67      {  68           string  strTable  =   " ' "   +  ddlTablesName.SelectedItem.Value.Trim()  +   " ' " ;  69          SqlParameter[] sp  =   new  SqlParameter[ 2 ];  70          SqlParameter database  =   new  SqlParameter( " @dataBaseName " , SqlDbType.NVarChar,  200 );  71          database.Value  =  ddlDataBase.SelectedItem.Text.Trim();  72          SqlParameter selectedTable  =   new  SqlParameter( " @tableName " , SqlDbType.NVarChar,  200 );  73          selectedTable.Value  =  strTable;  74          sp[ 0 ]  =  database;  75          sp[ 1 ]  =  selectedTable;  76          DataSet ds  =  DBTool.ExecuteDataset(CommandType.StoredProcedure,  " GetColumnsFromTable " , sp);  77          gwShowColumn.DataSource  =  ds;  78          gwShowColumn.DataBind();  79          btnCreate.Enabled  =   true ;  80           /*    try  81             {  82                 int colWidth = 200;  83                 if (colWidth > 0)  84                 {  85                     for (int i = 0; i < gwShowTables.Columns.Count; i++)  86                     {  87                         gwShowTables.Columns[i].HeaderStyle.Width = 200;// ItemStyle.Width = colWidth;  88                     }  89                 }  90             }  91             catch  92             {  93                 // Report error.        94             } */  95   96      }  97       protected   string  GetTableName( object  dataItem)  98      {  99           string  str  =   "" ; 100           if  (dataItem.GetType().Name.Equals( " DataRowView " )) 101          { 102              DataRowView row  =  (DataRowView)dataItem; 103              str  =  row[ " 表名 " ].ToString(); 104          } 105           return  str; 106      } 107  108       protected   void  dg_ItemCommand( object  source, DataGridCommandEventArgs e) 109      { 110           /*    111            if (e.CommandName == "edit") 112            { 113               114            } 115            else if (e.CommandName == "del") 116            { 117              118            } */ 119      } 120  121       protected   void  btnCreate_Click( object  sender, EventArgs e) 122      { 123  124           if  (tbNameSpace.Text  ==   "" ) 125          { 126              Response.Write( " <script>alert('Please input namespace!!!');</script> " ); 127          } 128          btnCreate.Enabled  =   true ; 129           string  className  =  ddlTablesName.SelectedItem.Text.ToString(); 130           string  strTable  =   " ' "   +  className  +   " ' " ; 131          SqlParameter[] sp  =   new  SqlParameter[ 2 ]; 132          SqlParameter database  =   new  SqlParameter( " @dataBaseName " , SqlDbType.NVarChar,  200 ); 133          database.Value  =  ddlDataBase.SelectedItem.Text.Trim(); 134          SqlParameter selectedTable  =   new  SqlParameter( " @tableName " , SqlDbType.NVarChar,  200 ); 135          selectedTable.Value  =  strTable; 136          sp[ 0 ]  =  database; 137          sp[ 1 ]  =  selectedTable; 138          DataSet ds  =  DBTool.ExecuteDataset(CommandType.StoredProcedure,  " GetColumnsFromTable " , sp); 139           string  fields  =   "" ; 140           string  propertities  =   "" ; 141           if  (ds  !=   null   &&  ds.Tables[ 0 ].Rows.Count  >   0 ) 142          { 143               for  ( int  i  =   0 ; i  <  ds.Tables[ 0 ].Rows.Count; i ++ ) 144              { 145                  propertities  +=   "  %null%%null%%null%%null%%null%%null%%null%%null%public  "   +  ChangeToCSharpType(ds.Tables[ 0 ].Rows[i][ " 列数据类型 " ].ToString().Trim())  +   "     "   +  ds.Tables[ 0 ].Rows[i][ " 列名 " ].ToString().Trim()  +   " %changeRow% "   + 146                        " %null%%null%%null%%null%%null%%null%%null%%null%{%changeRow% "   + 147                           "  %null%%null%%null%%null%%null%%null%%null%%null%%null%%null%%null%set "   +   "  {   "   +  ds.Tables[ 0 ].Rows[i][ " 列名 " ].ToString().Trim()  +   "  = value; }%changeRow% "   + 148                           "  %null%%null%%null%%null%%null%%null%%null%%null%%null%%null%%null%get "   +   "  { return _ "   +  ds.Tables[ 0 ].Rows[i][ " 列名 " ].ToString().Trim()  +   " ; }%changeRow% "   + 149                        " %null%%null%%null%%null%%null%%null%%null%%null%}%changeRow% " ; 150                  fields  +=   "  %null%%null%%null%%null%%null%%null%%null%%null%private   "   +  ChangeToCSharpType(ds.Tables[ 0 ].Rows[i][ " 列数据类型 " ].ToString().Trim())  +   "    _ "   +  ds.Tables[ 0 ].Rows[i][ " 列名 " ].ToString().Trim()  +   " ;%changeRow% " ; 151              } 152          } 153           string  sql  =   @" 154  using System;%changeRow% 155  namespace %namespace%%changeRow% 156  {%changeRow% 157   %null%%null%%null%%null%   /// <summary>%changeRow% 158   %null%%null%%null%%null%   /// 实体类%class% (属性说明自动提取数据库字段的描述信息)%changeRow% 159   %null%%null%%null%%null%   /// </summary>%changeRow% 160   %null%%null%%null%%null%   public partial class %class%  %changeRow% 161   %null%%null%%null%%null%   {%changeRow% 162   %null%%null%%null%%null%%null%%null%%null%%null%      public %class% ()%changeRow% 163   %null%%null%%null%%null%%null%%null%%null%%null%      {%changeRow% 164   %null%%null%%null%%null%%null%%null%%null%%null%      }%changeRow% 165  166   %null%%null%%null%%null%%null%%null%%null%%null%      #region 字段%changeRow% 167                                                         %fields%%changeRow% 168   %null%%null%%null%%null%%null%%null%%null%%null%       #endregion 字段%changeRow% 169  170   %null%%null%%null%%null%%null%%null%%null%%null%       #region 属性%changeRow% 171                                                          %propertities%%changeRow% 172   %null%%null%%null%%null%%null%%null%%null%%null%       #endregion 属性%changeRow% 173   %null%%null%%null%%null%    }%changeRow% 174  } 175  " ; 176           string  replaceSql  =  sql.Replace( " %namespace% " , tbNameSpace.Text.Trim()).Replace( " %class% " , className).Replace( " %fields% " , fields).Replace( " %propertities% " , propertities).Replace( " %null% " ,  " &nbsp; " ).Replace( " %changeRow% " ,  " <br /> " ); 177  178           //  tbObjectData.Text =Server.HtmlDecode(replaceSql); 179          lblShow.Text  =  replaceSql; 180          WriteContent(replaceSql,className); 181      } 182  183       ///   <summary> 184       ///  数据库中与C#中的数据类型对照 185       ///   </summary> 186       ///   <param name="type"></param> 187       ///   <returns></returns> 188       private   string  ChangeToCSharpType( string  type) 189      { 190           string  reval  =   string .Empty; 191           switch  (type.ToLower()) 192          { 193               case   " int " : 194                  reval  =   " Int32 " ; 195                   break ; 196               case   " text " : 197                  reval  =   " String " ; 198                   break ; 199               case   " bigint " : 200                  reval  =   " Int64 " ; 201                   break ; 202               case   " binary " : 203                  reval  =   " System.Byte[] " ; 204                   break ; 205               case   " bit " : 206                  reval  =   " Boolean " ; 207                   break ; 208               case   " char " : 209                  reval  =   " String " ; 210                   break ; 211               case   " datetime " : 212                  reval  =   " System.DateTime " ; 213                   break ; 214               case   " decimal " : 215                  reval  =   " System.Decimal " ; 216                   break ; 217               case   " float " : 218                  reval  =   " System.Double " ; 219                   break ; 220               case   " image " : 221                  reval  =   " System.Byte[] " ; 222                   break ; 223               case   " money " : 224                  reval  =   " System.Decimal " ; 225                   break ; 226               case   " nchar " : 227                  reval  =   " String " ; 228                   break ; 229               case   " ntext " : 230                  reval  =   " String " ; 231                   break ; 232               case   " numeric " : 233                  reval  =   " System.Decimal " ; 234                   break ; 235               case   " nvarchar " : 236                  reval  =   " String " ; 237                   break ; 238               case   " real " : 239                  reval  =   " System.Single " ; 240                   break ; 241               case   " smalldatetime " : 242                  reval  =   " System.DateTime " ; 243                   break ; 244               case   " smallint " : 245                  reval  =   " Int16 " ; 246                   break ; 247               case   " smallmoney " : 248                  reval  =   " System.Decimal " ; 249                   break ; 250               case   " timestamp " : 251                  reval  =   " System.DateTime " ; 252                   break ; 253               case   " tinyint " : 254                  reval  =   " System.Byte " ; 255                   break ; 256               case   " uniqueidentifier " : 257                  reval  =   " System.Guid " ; 258                   break ; 259               case   " varbinary " : 260                  reval  =   " System.Byte[] " ; 261                   break ; 262               case   " varchar " : 263                  reval  =   " String " ; 264                   break ; 265               case   " Variant " : 266                  reval  =   " Object " ; 267                   break ; 268               default : 269                  reval  =   " String " ; 270                   break ; 271          } 272           return  reval; 273      } 274  275       protected   void  btnCreateFile_Click( object  sender, EventArgs e) 276      { 277          //  WriteContent(); 278  279      } 280  281       private   void  WriteContent( string  inputString, string  className) 282      { 283           string  path  =   @" d:/MyTestDir/ " + className.Trim() + " .cs " ; 284           string  inputStr  =  inputString; 285           try 286          {   if (!Directory.Exists(@"d:/MyTestDir/"))            {                Directory.CreateDirectory(@"d:/MyTestDir/");            } 287               if  (File.Exists(path)) 288              { 289                  File.Delete(path); 290  291              } 292               if  ( ! File.Exists(path)) 293              { 294                   //  Create a file to write to. 295  296                   using  (StreamWriter sw  =  File.CreateText(path)) 297                  { 298                       string [] strRows  =  inputStr.Replace( " &nbsp; " ,  "   " ).Replace( " <br /> " , Convert.ToChar( 255 ).ToString()).Split(Convert.ToChar( 255 )); 299                       foreach  ( string  strRow  in  strRows) 300                      { 301                          sw.WriteLine(strRow); 302                      } 303                  } 304              } 305  306               //  Open the file to read from. 307               using  (StreamReader sr  =  File.OpenText(path)) 308              { 309                   string  s  =   "" ; 310                   while  ((s  =  sr.ReadLine())  !=   null ) 311                  { 312                      Response.Write(s  +   " <br /> " ); 313                  } 314              } 315          } 316           catch  (IOException ex) 317          { 318              Response.Write(ex.ToString()); 319          } 320      } 321  } 322 

     

    操作图片如下:

     

     

     

     

     

     

     

     

     

    最新回复(0)