CodeSmith OracleUI界面写法

来源:互联网 发布:centos smtp server 编辑:程序博客网 时间:2024/05/17 06:03

<%--
Name:OracleDAL
Author: 小谈
Description: 根据指定的数据库表生成访问层类模板
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Description="根据指定的数据库表生成访问层类模板" ResponseEncoding="Unicode" %>
<%@ Property Name="DevelopersName" Type="String" Default="小谈" Category="Context"  Description="开发人员姓名" %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="数据库表名" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Assembly Name="System.Data" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Import Namespace="System.Data" %>
///////////////////////////////////////////////////////////////////////////////////////
// File: <%= GetDecimal(SourceTable) %>DAL.cs
// Description: Enter summary here after generation.
// ---------------------
// Copyright <%= DevelopersName%> <%= DateTime.Now.Year %> Our Client
// ---------------------
// History
//    <%= DateTime.Now.ToShortDateString() %>    <%= DevelopersName%>    Original Version
///////////////////////////////////////////////////////////////////////////////////////

//添加界面代码
<% =GetInsert() %>

//修改界面代码
<% =GetUpdate() %>

//删除代码
<% =GetDel() %>

//控件标准命名
<% =GetNaming() %>

<script runat="template">
//截取字符串前面的小数点只显示后面的字符串
public string GetDecimal(TableSchema table)
{
    return table.Name.Substring(table.Name.LastIndexOf(".")+1).ToString();
}

#region 添加界面代码
public string GetInsert()
{//添加界面代码
 string strInsert=string.Empty;
 strInsert+=string.Format("{0} model=new {0}();",GetDecimal(SourceTable));
 strInsert+="/r/n";
 
 for(int i=0;i<this.SourceTable.Columns.Count;i++)
 {
  //如果数据类型是字符串之类的输出.ToString()
  if(GetOracleDbType(this.SourceTable.Columns[i])==".ToString()")
  {
   strInsert+=string.Format("model.{0}=this.txt{0}.Text;",
   SourceTable.Columns[i].Name);
  }
  //如果数据类型是int之类的输出Convert.ToInt32
  if(GetOracleDbType(this.SourceTable.Columns[i])=="Convert.ToInt32()")
  {
   strInsert+=string.Format("model.{0}=Convert.ToInt32(this.{0}.Text);",
   SourceTable.Columns[i].Name);
  }
  //如果数据类型是Double之类的输出Convert.ToDouble
  if(GetOracleDbType(this.SourceTable.Columns[i])=="Convert.ToDecimal()")
  {
   strInsert+=string.Format("model.{0}=Convert.ToDecimal(this.{0}.Text);",
   SourceTable.Columns[i].Name);
  }
  
  //如果数据类型是DateTime之类的输出Convert.ToDateTime
  if(GetOracleDbType(this.SourceTable.Columns[i])=="Convert.ToDateTime()")
  {
   strInsert+=string.Format("model.{0}=Convert.ToDateTime(this.{0}.Text);",
   SourceTable.Columns[i].Name);

  }
  //到表的最后一列不换行
  if(i!=(this.SourceTable.Columns.Count-1))
  {
   strInsert+="/r/n";
  }
 }
 strInsert+="/r/n";
 strInsert+=string.Format("int message= new {0}BLL().Insert(model);",GetDecimal(SourceTable));
 strInsert+="/r/n";
 strInsert+="if (message == 0)";
 strInsert+="/r/n";
 strInsert+="{";
 strInsert+="/r/n";
 strInsert+=" MessageBox.Show(/"添加失败!/");";
 strInsert+="/r/n";
 strInsert+="}";
 strInsert+="/r/n";
 strInsert+="else";
 strInsert+="/r/n";
 strInsert+="{";
 strInsert+="/r/n";
 strInsert+=" MessageBox.Show(/"添加成功!/");";
 strInsert+="/r/n";
 strInsert+="}";
 strInsert+="/r/n";
 
 return strInsert;
}
#endregion

#region 修改界面代码
public string GetUpdate()
{//修改界面代码
 string strUpdate=string.Empty;
 strUpdate+=string.Format("{0} model=new {0}();",GetDecimal(SourceTable));
 strUpdate+="/r/n";
 
 for(int i=0;i<this.SourceTable.Columns.Count;i++)
 {
  //如果数据类型是字符串之类的输出.ToString()
  if(GetOracleDbType(this.SourceTable.Columns[i])==".ToString()")
  {
   strUpdate+=string.Format("model.{0}=this.txt{0}.Text;",
   SourceTable.Columns[i].Name);
  }
  //如果数据类型是int之类的输出Convert.ToInt32
  if(GetOracleDbType(this.SourceTable.Columns[i])=="Convert.ToInt32()")
  {
   strUpdate+=string.Format("model.{0}=Convert.ToInt32(this.{0}.Text);",
   SourceTable.Columns[i].Name);
  }
  //如果数据类型是Double之类的输出Convert.ToDecimal()
  if(GetOracleDbType(this.SourceTable.Columns[i])=="Convert.ToDecimal()")
  {
   strUpdate+=string.Format("model.{0}=Convert.ToDecimal(this.{0}.Text);",
   SourceTable.Columns[i].Name);
  }
  
  //如果数据类型是DateTime之类的输出Convert.ToDateTime
  if(GetOracleDbType(this.SourceTable.Columns[i])=="Convert.ToDateTime()")
  {
   strUpdate+=string.Format("model.{0}=Convert.ToDateTime(this.{0}.Text);",
   SourceTable.Columns[i].Name);

  }
  //到表的最后一列不换行
  if(i!=(this.SourceTable.Columns.Count-1))
  {
   strUpdate+="/r/n";
  }
 }
 strUpdate+="/r/n";
 strUpdate+=string.Format("int message= new {0}BLL().Update(model);",GetDecimal(SourceTable));
 strUpdate+="/r/n";
 strUpdate+="if (message == 0)";
 strUpdate+="/r/n";
 strUpdate+="{";
 strUpdate+="/r/n";
 strUpdate+=" MessageBox.Show(/"修改失败!/");";
 strUpdate+="/r/n";
 strUpdate+="}";
 strUpdate+="/r/n";
 strUpdate+="else";
 strUpdate+="/r/n";
 strUpdate+="{";
 strUpdate+="/r/n";
 strUpdate+=" MessageBox.Show(/"修改成功!/");";
 strUpdate+="/r/n";
 strUpdate+="}";
 strUpdate+="/r/n";
 
 return strUpdate;
}
#endregion

#region 删除界面代码
public string GetDel()
{//删除界面代码
 string strDel=string.Empty;
 strDel+=string.Format("{0} model=new {0}();",GetDecimal(SourceTable));
 strDel+="/r/n";
 
 if(getPk().Length>0)
 {//有主键的时候
  for(int i=0;i<this.SourceTable.PrimaryKey.MemberColumns.Count;i++)
  {//获得主键总列数
   //如果数据类型是字符串之类的输出.ToString()
   if(GetOracleDbType(this.SourceTable.PrimaryKey.MemberColumns[i])==".ToString()")
   {
    strDel+=string.Format("model.{0}=this.txt{0}.Text;",
    SourceTable.Columns[i].Name);
   }
   //如果数据类型是int之类的输出Convert.ToInt32
   if(GetOracleDbType(this.SourceTable.PrimaryKey.MemberColumns[i])=="Convert.ToInt32()")
   {
    strDel+=string.Format("model.{0}=Convert.ToInt32(this.{0}.Text);",
    SourceTable.Columns[i].Name);
   }
   //如果数据类型是Double之类的输出Convert.ToDouble
   if(GetOracleDbType(this.SourceTable.PrimaryKey.MemberColumns[i])=="Convert.ToDouble()")
   {
    strDel+=string.Format("model.{0}=Convert.ToDouble(this.{0}.Text);",
    SourceTable.Columns[i].Name);
   }
   
   //如果数据类型是DateTime之类的输出Convert.ToDateTime
   if(GetOracleDbType(this.SourceTable.PrimaryKey.MemberColumns[i])=="Convert.ToDateTime()")
   {
    strDel+=string.Format("model.{0}=Convert.ToDateTime(this.{0}.Text);",
    SourceTable.Columns[i].Name);
 
   }
   //到表的最后一列不换行
   if(i!=(this.SourceTable.Columns.Count-1))
   {
    strDel+="/r/n";
   }
  }
 }
 else
 {//没有主键的时候全部输出列
  for(int i=0;i<this.SourceTable.Columns.Count;i++)
  {
   //如果数据类型是字符串之类的输出.ToString()
   if(GetOracleDbType(this.SourceTable.Columns[i])==".ToString()")
   {
    strDel+=string.Format("model.{0}=this.txt{0}.Text;",
    SourceTable.Columns[i].Name);
   }
   //如果数据类型是int之类的输出Convert.ToInt32
   if(GetOracleDbType(this.SourceTable.Columns[i])=="Convert.ToInt32()")
   {
    strDel+=string.Format("model.{0}=Convert.ToInt32(this.{0}.Text);",
    SourceTable.Columns[i].Name);
   }
   //如果数据类型是Double之类的输出Convert.ToDouble
   if(GetOracleDbType(this.SourceTable.Columns[i])=="Convert.ToDouble()")
   {
    strDel+=string.Format("model.{0}=Convert.ToDouble(this.{0}.Text);",
    SourceTable.Columns[i].Name);
   }
   
   //如果数据类型是DateTime之类的输出Convert.ToDateTime
   if(GetOracleDbType(this.SourceTable.Columns[i])=="Convert.ToDateTime()")
   {
    strDel+=string.Format("model.{0}=Convert.ToDateTime(this.{0}.Text);",
    SourceTable.Columns[i].Name);
 
   }
   //到表的最后一列不换行
   if(i!=(this.SourceTable.Columns.Count-1))
   {
    strDel+="/r/n";
   }
  }
 }
 
 strDel+="/r/n";
 strDel+=string.Format("int message= new {0}BLL().Del(model);",GetDecimal(SourceTable));
 strDel+="/r/n";
 strDel+="if (message == 0)";
 strDel+="/r/n";
 strDel+="{";
 strDel+="/r/n";
 strDel+=" MessageBox.Show(/"删除失败!/");";
 strDel+="/r/n";
 strDel+="}";
 strDel+="/r/n";
 strDel+="else";
 strDel+="/r/n";
 strDel+="{";
 strDel+="/r/n";
 strDel+=" MessageBox.Show(/"删除成功!/");";
 strDel+="/r/n";
 strDel+="}";
 strDel+="/r/n";
 
 return strDel;
}
#endregion

#region 判断数据类型
///<summary>
///根据列获取数据库的数据类型
///<summary>
public string GetOracleDbType(ColumnSchema column)
{
 switch (column.NativeType)
 {
  case "Char": case "char": case "CHAR":
  case "varchar2": case "VarChar2": case "Varchar2": case "VARCHAR2":
  case "nchar": case "Nchar": case "NCHAR":
  case "nvarchar2": case "NVarChar2": case "NVARCHAR2":
  case "Long": case "LONG": case "long":
  case "Raw": case "RAW": case "raw":
  case "Long raw": case "LONG RAW": case "long raw":
  case "Rowid": case "rowid": case "ROWID":
  case "Blob": case "blob": case "BLOB":
  case "Clob": case "clob": case "CLOB":
  case "nclob": case "NCLOB": case "Nclob":
  case "Bfile": case "bfile": case "BFILE":
  case "Urowid": case "urowid": case "UROWID":
  return ".ToString()";
  
  case "number": case "Number": case "NUMBER":
  return "Convert.ToInt32()";
  
  case "double": case "Double": case "DOUBLE":
  case "float": case "Float": case "FLOAT":
  return "Convert.ToDecimal()";
  
  case "DateTime": case "datetime": case "DATETIME":
  case "Date": case "date": case "DATE":
  return "Convert.ToDateTime()";
  
  default: return "__UNKNOWN__" + column.NativeType;
 }
}
#endregion

#region 控制标准命名
public string GetNaming()
{
 string strtextBoxName=string.Empty;
 string strlableName=string.Empty;
 for(int i=0;i<this.SourceTable.Columns.Count;i++)
 {
  //textBox命名
  strtextBoxName+=string.Format("txt{0}",this.SourceTable.Columns[i].Name);
  strtextBoxName+="/r/n";
  
  //lable命名
  strlableName+=string.Format("lb{0}",this.SourceTable.Columns[i].Name);
  if(i!=(this.SourceTable.Columns.Count-1))
  {//不到最后一列不换行
   strlableName+="/r/n";
  }
 }
 return "//textBox命名/r/n"+strtextBoxName+"/r/n//lable命名/r/n"+strlableName;
}
#endregion

原创粉丝点击