自动生成存储过程C#调用代码

/*
  背景知识 SQL Server 2000
 
  ************************************************************************************************
  系统表 sys.systypes (Transact-SQL)   描述系统定义的类型信息
  ------------------------------------------------------------------------------------------------
  列名        数据类型  说明   
  name        sysname   数据类型名称。
  xtype       tinyint   物理存储类型。 
  status      tinyint   仅供内部使用。 
  xusertype   smallint  扩展用户类型。如果用户数和角色数超过 32,767,则会溢出或返回 NULL。有关详细信息,请参阅查询 SQL Server 系统目录。 
  length      smallint  数据类型的物理长度。 
  xprec       tinyint   服务器使用的内部精度。不在查询中使用。
  xscale      tinyint   服务器使用的内部小数位数。不在查询中使用。
  tdefault    int       特定存储过程的 ID,此存储过程包含对该数据类型的完整性检查功能。
  domain      int       特定存储过程的 ID,此存储过程包含对该数据类型的完整性检查功能。
  uid         smallint  数据类型创建者的用户 ID。如果用户数和角色数超过 32,767,则会溢出或返回 NULL。有关详细信息,请参阅查询 SQL Server 系统目录。 
  reserved  smallint  仅供内部使用。 
  usertype  smallint  用户类型 ID。如果数据类型数超过 32,767,则溢出或返回 NULL。有关详细信息,请参阅查询 SQL Server 系统目录。
  variable  bit       可变长度数据类型。 1 = True  0 = False 
  allownulls  bit       指示此数据类型的默认为空性。如果使用 CREATE TABLE 或 ALTER TABLE 指定了为空性,则覆盖此默认值。
  type        tinyint   物理存储数据类型。
  printfmt  varchar(255)  保留。
  prec      smallint  此数据类型的精度级别。 -1 = xml 或大值类型。
  scale     tinyint   此数据类型根据精度确定的小数位数。 NULL = 数据类型不是数值。
  collation  sysname   如果使用的是字符,则 collation 为当前数据库的排序规则;否则为 NULL。
  ************************************************************************************************
  系统表 sys.syscolumns (Transact-SQL)   为每个表和视图中的每列返回一行,并为数据库中的存储过程的每个参数返回一行。
  ------------------------------------------------------------------------------------------------
  列名        数据类型  说明   
  name        sysname   列名或过程参数的名称。
  id          int       此列所属表的对象 ID,或者与此参数关联的存储过程的 ID。
  xtype       tinyint   sys.types 中的物理存储类型。
  typestat    tinyint   仅供内部使用。
  xusertype  smallint  扩展的用户定义数据类型的 ID。如果数据类型数超过 32767,则会发生溢出或返回 NULL。有关详细信息,请参阅查询 SQL Server 系统目录。
  length    smallint  sys.types 中的最大物理存储长度。
  xprec       tinyint   仅供内部使用。
  xscale      tinyint   仅供内部使用。
  colid    smallint  列 ID 或参数 ID。
  xoffset     smallint  仅供内部使用。
  bitpos    tinyint   仅供内部使用。
  reserved    tinyint   仅供内部使用。
  colstat     smallint  仅供内部使用。
  cdefault    int       此列的默认值的 ID。
  domain      int       此列的规则或 CHECK 约束的 ID。
  number      smallint  过程分组时的子过程号。0 = 非过程项
  colorder   smallint  仅供内部使用。
  autoval     varbinary(8000) 仅供内部使用。
  offset      smallint  此列所在行的偏移量。
  collationid int       列的排序规则的 ID。对于非字符列,此值为 NULL。
  status    tinyint   用于说明列或参数的属性的位图: 
                        0x08 = 列允许空值。  
                        0x10 = 添加 varchar 或 varbinary 列时,执行 ANSI 填充。保留 varchar 列的尾随空格以及 varbinary 列的尾随零。 
                        0x40 = 参数为 OUTPUT 参数。
                        0x80 = 列为标识列。
  type        tinyint   sys.types 中的物理存储类型。
  usertype  smallint  sys.types 中的用户定义数据类型的 ID。如果数据类型数超过 32767,则会发生溢出或返回 NULL。有关详细信息,请参阅查询 SQL Server 系统目录。
  printfmt  varchar(255)  仅供内部使用。
  prec        smallint  此列的精度级别。-1 = xml 或大值类型。
  scale     int       此列的小数位数。NULL = 数据类型不是数值。
  iscomputed  int       指示列是否为计算列的标志: 0 = 非计算列。  1 = 计算列。
  isoutparam  int       指示过程参数是否为输出参数: 1 = True  0 = False
  isnullable  int       指示列是否允许空值: 1 = True  0 = False 
  collation  sysname   列的排序规则的名称。如果不是基于字符的列,则为 NULL。
  ************************************************************************************************
  系统表 sys.sysobjects (Transact-SQL)   在数据库中创建的每个对象(例如约束、默认值、日志、规则以及存储过程)都对应一行。
  ----------------------------------------------------------------------------------------------------------------------
  列名        数据类型  说明   
  name      sysname   对象名称
  id        int       对象标识号
  xtype      char(2)   对象类型。可以是下列对象类型中的一种:
         C = CHECK 约束
         D = 默认设置或 DEFAULT 约束
         F = FOREIGN KEY 约束
         L = 日志
         FN = 标量函数
         IF = 内联表函数
         P = 存储过程
         PK = PRIMARY KEY 约束(类型为 K)
         RF = 复制筛选存储过程
         S = 系统表
         TF = 表函数
         TR = 触发器
         U = 用户表
         UQ = UNIQUE 约束(类型为 K)
         V = 视图
         X = 扩展存储过程
     uid         smallint  所有者对象的用户 ID。如果用户数和角色数超过 32,767,则会溢出或返回 NULL。有关详细信息,请参阅查询 SQL Server 系统目录。
     info        smallint  保留为仅供内部使用。
  status      int       保留为仅供内部使用。
  base_schema_ver  int  保留为仅供内部使用。
  replinfo  int       为复制保留。
  parent_obj  int       父对象的对象标识号。例如,表 ID(如果父对象是触发器或约束)。
  crdate      datetime  对象的创建日期。
  ftcatid     smallint  注册为使用全文索引的所有用户表的全文目录标识符,对于没有注册的所有用户表则为 0。
  schema_ver  int       在每次更改表的架构时都会增加的版本号。始终返回 0
  stats_schema_ver int  保留为仅供内部使用。
  type        char(2)   对象类型。可以是下列值之一:
                        C = CHECK 约束
                        D = 默认设置或 DEFAULT 约束
                        F = FOREIGN KEY 约束
                        FN = 标量函数
                        IF = 内联表函数
                        K = PRIMARY KEY 或 UNIQUE 约束
                        L = 日志
                        P = 存储过程
                        R = 规则
                        RF = 复制筛选存储过程
                        S = 系统表
                        TF = 表函数
                        TR = 触发器
                        U = 用户表
                        V = 视图
                        X = 扩展存储过程
     userstat    smallint  保留
  sysstat     smallint  内部状态信息。
  indexdel    smallint  保留
  refdate     datetime  保留供将来使用。
  version     int       保留供将来使用。
  deltrig   int       保留
  instrig     int       保留
  updtrig     int       保留   
  seltrig     int       保留
  category  int       用于发布、约束和标识。
  cache       int       保留
  ************************************************************************************************
 
 
 */

 

using System;
using DataTools;
using System.Data;

namespace TestSQL
{

 
 
 /// <summary>
 /// Procedure 的摘要说明。
 /// 存储过程处理
 /// </summary>
 public class Procedure
 {
  DataTools.cDB db;
  public string  strCallProcedureFunctions ="";
  public bool m_bWebService;//[WebMethod]

  public string m_strOutFileName="";
  public Procedure(string strConn)
  {
   //
   // TODO: 在此处添加构造函数逻辑
   //
   db = new DataTools.cDB(strConn);
   if(m_strOutFileName.Length < 1)
   {
    m_strOutFileName = "CProcedure";
   }
   m_bWebService = false;
  }
  
  /// <summary>
  /// 导出所有存储过程
  /// </summary>
  /// <returns></returns>
  public int  WriteProcedures()
  {
   try
   {
    string strFormat;
    string strSQL;
    string strProcedureName;
    strCallProcedureFunctions = "";

    strSQL = "SELECT * FROM sysobjects WHERE (xtype = 'P') ORDER BY name";
   
    System.Data.DataSet ds = db.DIRunSQLretDs(strSQL);
    if(ds == null)
    {
     return 1;
    }
    if(ds.Tables.Count <1)
    {
     return 2;
    }
    Log.WriteLogLine("输出存储过程:");

    Log.WriteLine(m_strOutFileName," ");
    Log.WriteLine(m_strOutFileName,"// Create by jim 2006-11-30 ");
    Log.WriteLine(m_strOutFileName,"// Email:gopojim@163.com ");
    Log.WriteLine(m_strOutFileName,"// QQ:277403754");
    Log.WriteLine(m_strOutFileName,"// Create DateTime:"+System.DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss"));
    Log.WriteLine(m_strOutFileName," ");

    Log.WriteLine(m_strOutFileName,"using System;");
    Log.WriteLine(m_strOutFileName,"using System.Data;");
    Log.WriteLine(m_strOutFileName,"using System.Data.SqlClient ;");

    Log.WriteLine(m_strOutFileName,"");

    Log.WriteLine(m_strOutFileName,"namespace MySQL.Procedure");
    Log.WriteLine(m_strOutFileName,"{");
    
    WirteProvider(m_strOutFileName);//Wirete Provider Class

    int n=0;
    foreach(System.Data.DataRow rd in  ds.Tables[0].Rows)
    {
     strProcedureName = rd["name"].ToString();
     WriteProcedureClass(strProcedureName);
     n++;
     Log.WriteLogLine(strProcedureName);
     if(n > 5)
     {
      //break;
     }

    }
    //strCallProcedureFunctions

    Log.WriteLine(m_strOutFileName,"    public class CallProcedureFunctions");
    Log.WriteLine(m_strOutFileName,"    {");
    Log.WriteLine(m_strOutFileName,"        public string m_strConnnectString;//m_strConnnectString = /"Server=(local); DataBase=jim; user id=test; pwd=test; Connect Timeout=30;/"/n");
    Log.WriteLine(m_strOutFileName,strCallProcedureFunctions);
    Log.WriteLine(m_strOutFileName,"    }");


    Log.WriteLine(m_strOutFileName,"}");
    strFormat = string.Format("输出{0}个存储过程。",n);
    Log.WriteLogLine(strFormat);
   }
   catch(System.Exception e)
   {
    Log.WriteLogLine(e);
    
   }

   return 0;
  }
  /// <summary>
  /// SELECT c.colid AS id, c.name AS name, t.name AS type, c.length AS length
  /// FROM syscolumns c INNER JOIN
  /// sysobjects o ON c.id = o.id INNER JOIN
  /// systypes t ON c.xtype = t.xtype
  /// WHERE (o.xtype = 'P') AND (o.name = 'Phone_Insert')
  /// ORDER BY c.id
  /// </summary>
  /// <param name="strProcedureName"></param>
  /// <returns></returns>
  public int  WriteProcedureClass(string strProcedureName)
  {
   string strFormat;
   string strSQL;
   string str;
   string strName,strType,strLength;
   string strCallProcedureFunctionHead;
   string strCallProcedureFunctionBoy;
   //  public static DataSet Agent_Select_charge(DateTime _time, int _agentid)
   //  {
   //   SqlConnection connection1 = new SqlConnection(Config.ConnnectString);
   //   SqlCommand command = new SqlCommand("Agent_Select_charge", connection1);
   //   command.CommandType = CommandType.StoredProcedure;
   //   command.Parameters.Add("@Time", SqlDbType.DateTime).Value = _time;
   //   command.Parameters.Add("@AgentID", SqlDbType.Int).Value = _agentid;
   //   return DataProvider.GetDataSet(command);
   //  }

   strCallProcedureFunctionHead = "  public  DataSet Call_"+strProcedureName+"(";
   strCallProcedureFunctionBoy = "            SqlConnection connection  = new SqlConnection();/n"+
                              "            connection.ConnectionString = m_strConnnectString;/n"+
                                 "            SqlCommand command = new SqlCommand(/""+strProcedureName+"/", connection );/n"+
                                 "            command.CommandType = CommandType.StoredProcedure;/n";

   System.Data.DataSet ds;

   strSQL = "sp_helptext  " +strProcedureName;
   ds = db.DIRunSQLretDs(strSQL);
   if(ds == null)
   {
    return 1;
   }
   if(ds.Tables.Count <1)
   {
    return 2;
   }
  
   
   
   Log.WriteLine(m_strOutFileName,"");
   Log.WriteLine(m_strOutFileName," // ProcedureName:"+strProcedureName);
  
   //Log.WriteLine(m_strOutFileName," /*");

   foreach(System.Data.DataRow rd in  ds.Tables[0].Rows)
   {
    str = rd["Text"].ToString();
    str = str.Replace("/r/n","");
    str = str.Replace("/n","");
    str = "    // "+str;
    Log.WriteLine(m_strOutFileName,str);
   }

   //Log.WriteLine(m_strOutFileName," */");

 

   strFormat = "SELECT c.colid AS id, c.name AS name, t.name AS type, c.length AS length "+
    "FROM syscolumns c INNER JOIN "+
    "sysobjects o ON c.id = o.id INNER JOIN "+
    "systypes t ON c.xtype = t.xtype "+
    "WHERE (o.xtype = 'P') AND (o.name = '{0}') "+
    "ORDER BY c.id";
   strSQL = string.Format(strFormat,strProcedureName);

   ds = db.DIRunSQLretDs(strSQL);
   if(ds == null)
   {
    return 1;
   }
   if(ds.Tables.Count <1)
   {
    return 2;
   }

   strFormat= " /// {0} 的摘要说明。";
   str = string.Format(strFormat,strProcedureName);
   Log.WriteLine(m_strOutFileName," /// <summary>");
   Log.WriteLine(m_strOutFileName,str);
   Log.WriteLine(m_strOutFileName," /// </summary>");
  


   Log.WriteLine(m_strOutFileName," public class C"+strProcedureName);
   Log.WriteLine(m_strOutFileName," {");
   strFormat= "  public  C{0}()";
   str = string.Format(strFormat,strProcedureName);
 
   Log.WriteLine(m_strOutFileName,str);
   Log.WriteLine(m_strOutFileName,"  {");
   Log.WriteLine(m_strOutFileName,"   //");
   Log.WriteLine(m_strOutFileName,"   // TODO: 在此处添加构造函数逻辑");
   Log.WriteLine(m_strOutFileName,"   //");
   Log.WriteLine(m_strOutFileName,"  }");
   Log.WriteLine(m_strOutFileName,"  ");
   

   Log.WriteLine(m_strOutFileName,"  public string m_strConnnectString;  ");
   Log.WriteLine(m_strOutFileName,"");

   Log.WriteLine(m_strOutFileName,"  //Procedure Parameters  ");

   

   
   foreach(System.Data.DataRow rd in  ds.Tables[0].Rows)
   {
    // strName,strType,strLength;
    strName = rd["name"].ToString();
    strType = rd["type"].ToString();
    strLength = rd["length"].ToString();
    if(strType.CompareTo("sysname") == 0)
    {
     str ="        //"+ GetNote(strName,strType,strLength);
     Log.WriteLine(m_strOutFileName,str);
     continue;
    }

    //strName = strName.Replace("@","");//去处"@"字符
    str = "  "+GetMember(strName,strType,strLength,ref strCallProcedureFunctionHead,ref strCallProcedureFunctionBoy);
    
   
    Log.WriteLine(m_strOutFileName,str);

   }
   Log.WriteLine(m_strOutFileName,"                           ");
   strCallProcedureFunctionHead = strCallProcedureFunctionHead.Replace("( , "  ,"(")+")";
   string strFunction = "        /// Methods Procedure:"+strProcedureName+" /n";
   if(m_bWebService == true)
   {
    strFunction +=    "        [WebMethod]/n";
   }
   else
   {
    strFunction +=    "        //[WebMethod] // WebService 使用取消注释/n";
   }
   strFunction +=        strCallProcedureFunctionHead+ "/n"+
                     "  {/n"+
                     strCallProcedureFunctionBoy+
                     "   return DataProvider.GetDataSet(command);/n"+
                     "  }/n/n";
   Log.WriteLine(m_strOutFileName,strFunction);
//   Log.WriteLine(m_strOutFileName,"        /// Methods");
//
//   Log.WriteLine(m_strOutFileName,strCallProcedureFunctionHead);
//   Log.WriteLine(m_strOutFileName,"  {/n");
//   Log.WriteLine(m_strOutFileName,strCallProcedureFunctionBoy);
//   Log.WriteLine(m_strOutFileName,"   return DataProvider.GetDataSet(command);/n"); 
//   Log.WriteLine(m_strOutFileName,"  }");

   Log.WriteLine(m_strOutFileName," }");
   
   
                      

   strCallProcedureFunctions += strFunction;
   


   return 0;
  }

  

 

 

  
  
  
  
  
  private string GetNote(string strName,string strType,string strLength)
  {
   string str = "Name:"+strName+" Type:"+strType+" Length:"+strLength;
   return str;

  }
  private string GetMember(string strName,string strType,string strLength,ref string strParameter ,ref string strBoy)
  {
   string strMember="";
   string strAttribute = "public ";
   string  strName2 = strName;
   

   strName = strName.Replace("@","");
   strBoy  += "         ";
   switch(strType)
   {
    case "bigint":
     strMember =  strAttribute  +"long     m_" +strName+"; //  "+GetNote(strName,strType,strLength);
                    strParameter += " , long "+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.BigInt).Value =  "+strName+";/n";
     break ;
    case "binary":
     strMember =  strAttribute  +"byte     []m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , byte []"+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.Binary ).Value =  "+strName+";/n";
     break ;
    case "bit":
     strMember =  strAttribute  +"Boolean  m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , Boolean "+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.Bit  ).Value =  "+strName+";/n";
     break ;
    case "char":
     strMember =  strAttribute  +"string   m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , string "+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.Char  ).Value =  "+strName+";/n";
     break ;
    case "datetime":
     strMember =  strAttribute  +"System.DateTime   m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , System.DateTime "+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.DateTime ).Value =  "+strName+";/n";
     break ;
    case "decimal":
     strMember =  strAttribute  +"Decimal  m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , Decimal "+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.Decimal ).Value =  "+strName+";/n";
     
     break ;
    case "float":
     strMember =  strAttribute  +"double   m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , double "+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.Float  ).Value =  "+strName+";/n";
     break ;
    case "image":
     strMember =  "//"+strAttribute  +" byte      []m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , byte []"+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.Image  ).Value =  "+strName+";/n";
     break ;
    case "int":
     strMember =  strAttribute  +"Int32    m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , Int32 "+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.Int  ).Value =  "+strName+";/n";
     break ;
    case "money":
     strMember =  strAttribute  +"decimal  m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , Decimal "+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.Money  ).Value =  "+strName+";/n";
     break ;
    case "nchar":
     strMember =  strAttribute  +"string   m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , string "+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.NChar  ).Value =  "+strName+";/n";
     break ;
    case "ntext":
     strMember =  strAttribute  +"byte     []m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , string   "+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.NText  ).Value =  "+strName+";/n";
     break ;
    case "numeric":
     strMember =  strAttribute  +"Decimal  m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += "  , Decimal"+strName;
     strBoy  += "//command.Parameters.Add(/""+strName2+"/", SqlDbType.VarNumeric ).Value =  "+strName+";/n";//VarNumeric
     break ;
    case "nvarchar":
     strMember =  strAttribute  +"byte     []m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , string  "+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.NVarChar ).Value =  "+strName+";/n";
     break ;
    case "real":
     strMember =  strAttribute  +"Single   m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , Single  "+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.Real  ).Value =  "+strName+";/n";
     break ;
    case "smalldatetime":
     strMember =  strAttribute  +"System.DateTime   m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , System.DateTime "+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.SmallDateTime  ).Value =  "+strName+";/n";
     break ;
    case "smallint":
     strMember =  strAttribute  +"Int16    m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , Int16   "+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.SmallInt  ).Value =  "+strName+";/n";
     break ;
    case "smallmoney":
     strMember =  strAttribute  +"Decimal  m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , Decimal "+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.SmallMoney  ).Value =  "+strName+";/n";
     break ;
    case "sql_variant":
     strMember =  strAttribute  +"object   m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += "  , object"+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.Variant ).Value =  "+strName+";/n";
     break ;
    case "sysname":
     strMember =  strAttribute  +"byte     []m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += "/* , byte []"+strName+"*/";
     strBoy  += "//command.Parameters.Add(/""+strName2+"/", SqlDbType.Binary ).Value =  "+strName+";/n";
     break ;
    case "text":
     strMember =  strAttribute  +"string   m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , string   "+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.Text  ).Value =  "+strName+";/n";
     break ;
    case "timestamp":
     strMember =  strAttribute  +"byte     []m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , byte []"+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.Timestamp  ).Value =  "+strName+";/n";
     break ;
    case "tinyint":
     strMember =  strAttribute  +"byte     m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , byte  "+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.TinyInt ).Value =  "+strName+";/n";
     break ;
    case "uniqueidentifier":
     strMember =  strAttribute  +"Guid     m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , Guid  "+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.UniqueIdentifier  ).Value =  "+strName+";/n";
     break ;
    case "varbinary":
     strMember =  strAttribute  +"byte     []m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , byte []"+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.VarBinary  ).Value =  "+strName+";/n";
     break ;
    case "varchar":   
     strMember =  strAttribute  +"string   m_" +strName+"; //  "+GetNote(strName,strType,strLength);
     strParameter += " , string "+strName;
     strBoy  += "command.Parameters.Add(/""+strName2+"/", SqlDbType.VarChar  ).Value =  "+strName+";/n";
     break;
    default:
     strMember =  "//UnKnow type "+GetNote(strName,strType,strLength);;
     strParameter += "/* , byte []"+strName+"*/";
     strBoy  += "//command.Parameters.Add(/""+strName2+"/", SqlDbType.Binary ).Value =  "+strName+";/n";
     break;
   }
    

   return strMember;
  }


  private void WirteProvider(string strFileName)
  {
   
   Log.WriteLine(strFileName," ");
   string strFileContent="    // For database"+"/n"+
                                  "    public class DataProvider"+"/n"+
                                  " {"+"/n"+
                                  "         // Methods"+"/n"+
                                  "  public DataProvider()"+"/n"+
                                  "  {"+"/n"+
                                  "  }"+"/n"+
                                  ""+"/n"+
                                  " "+"/n"+
                                  ""+"/n"+
                                  "  public static int ExecNonQuery(SqlCommand Sqlcmd)"+"/n"+
                                  "  {"+"/n"+
                                  "   int num1;"+"/n"+
                                  "   try"+"/n"+
                                  "   {"+"/n"+
                                  "    if (Sqlcmd.Connection.State != ConnectionState.Open)"+"/n"+
                                  "    {"+"/n"+
                                  "     Sqlcmd.Connection.Open();"+"/n"+
                                  "    }"+"/n"+
                                  "    num1 = Sqlcmd.ExecuteNonQuery();"+"/n"+
                                  "   }"+"/n"+
                                  "   catch (Exception exception1)"+"/n"+
                                  "   {"+"/n"+
                                  "    throw exception1;"+"/n"+
                                  "   }"+"/n"+
                                  "   finally"+"/n"+
                                  "   {"+"/n"+
                                  "    if (Sqlcmd.Connection.State == ConnectionState.Open)"+"/n"+
                                  "    {"+"/n"+
                                  "     Sqlcmd.Connection.Close();"+"/n"+
                                  "    }"+"/n"+
                                  "   }"+"/n"+
                                  "   return num1;"+"/n"+
                                  "  }"+"/n"+
                                  ""+"/n"+
                                  ""+"/n"+
                                  "  public static object ExecuteScalar(SqlCommand Sqlcmd)"+"/n"+
                                  "  {"+"/n"+
                                  "   object obj1;"+"/n"+
                                  "   try"+"/n"+
                                  "   {"+"/n"+
                                  "    if (Sqlcmd.Connection.State != ConnectionState.Open)"+"/n"+
                                  "    {"+"/n"+
                                  "     Sqlcmd.Connection.Open();"+"/n"+
                                  "    }"+"/n"+
                                  "    obj1 = Sqlcmd.ExecuteScalar();"+"/n"+
                                  "   }"+"/n"+
                                  "   catch (Exception exception1)"+"/n"+
                                  "   {"+"/n"+
                                  "    throw exception1;"+"/n"+
                                  "   }"+"/n"+
                                  "   finally"+"/n"+
                                  "   {"+"/n"+
                                  "    if (Sqlcmd.Connection.State == ConnectionState.Open)"+"/n"+
                                  "    {"+"/n"+
                                  "     Sqlcmd.Connection.Close();"+"/n"+
                                  "    }"+"/n"+
                                  "   }"+"/n"+
                                  "   return obj1;"+"/n"+
                                  "  }"+"/n"+
                                  ""+"/n"+
                                  " "+"/n"+
                                  ""+"/n"+
                                  "  public static DataSet GetDataSet(SqlCommand SqlCmd)"+"/n"+
                                  "  {"+"/n"+
                                  "   DataSet set2;"+"/n"+
                                  "   DataSet set1 = new DataSet();"+"/n"+
                                  "   try"+"/n"+
                                  "   {"+"/n"+
                                  "    if (SqlCmd.Connection.State != ConnectionState.Open)"+"/n"+
                                  "    {"+"/n"+
                                  "     SqlCmd.Connection.Open();"+"/n"+
                                  "    }"+"/n"+
                                  "    new SqlDataAdapter(SqlCmd).Fill(set1);"+"/n"+
                                  "    set2 = set1;"+"/n"+
                                  "   }"+"/n"+
                                  "   catch (Exception exception1)"+"/n"+
                                  "   {"+"/n"+
                                  "    throw exception1;"+"/n"+
                                  "   }"+"/n"+
                                  "   finally"+"/n"+
                                  "   {"+"/n"+                                 
                                  "    if (SqlCmd.Connection.State == ConnectionState.Open)"+"/n"+
                                  "    {"+"/n"+
                                  "     SqlCmd.Connection.Close();"+"/n"+
                                  "    }"+"/n"+
                                  "   }"+"/n"+
                                  "   return set2;"+"/n"+
                                  "  }"+"/n"+
                                  ""+"/n"+
                                  " }";

   Log.WriteLine(strFileName,strFileContent);
   Log.WriteLine(strFileName,"");
   Log.WriteLine(strFileName,"");
   
  }
 }
}

调用例子

string strConn = "Server=192.168.0.111; DataBase=5; user id=sa; pwd=sa; Connect Timeout=30;";
   Procedure pro = new Procedure(strConn);
   pro.m_bWebService = false;
   pro.m_strOutFileName = "p.cs";

   pro.WriteProcedures();
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值