惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
J
Java Code Geeks
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
V
Visual Studio Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
M
MIT News - Artificial intelligence
U
Unit 42
博客园 - 三生石上(FineUI控件)
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
I
InfoQ
WordPress大学
WordPress大学
H
Help Net Security
D
Docker
B
Blog
腾讯CDC
A
About on SuperTechFans
Recent Announcements
Recent Announcements
雷峰网
雷峰网
有赞技术团队
有赞技术团队
C
Check Point Blog
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC

博客园 - 索马

线程内键盘钩子实现Winforn快捷键(组合键) 反射常用功能-持续更新 Win32 API对文本框发送消息(多个文本Edit,动态 控件 ID) 一个项目同时支持VS2005和VS2008打开 (原创)代码生成器让你抓狂,结束你选择,就是如此简单! RadControls集成jquery,随便几行代码吊死你!不信来看! - 索马 - 博客园 RadGrid客户端绑定,分页,过滤,效率真不错 RadInputManager验证效果,很酷哦 RadControl中的radalert以后调用js函数啊 RadComboBox中的RadTreeView父节点不选择,子节点可以选择 - 索马 - 博客园 仿腾讯留言效果(拖动分页) RadComboBox中的RadGrid分页 漂亮的Alert 消息框! Java调用.net的web service - 索马 - 博客园 WCF传输大数据量DataSet sql获取表,字段,长度,类型,描述,等详细信息 .net根据模板生成Word文件 CheckBox单选 SQL SERVER 动态游标
生成C#执行指定存储过程的参数
索马 · 2008-04-17 · via 博客园 - 索马

CodeSimth
代码如下

<%-- 
Name:
Author: 
Description: 
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="Text" Src="" Inherits="" Debug="False" Description="Template description here." %>
<%@ Property Name="PROC_NAME" Type="System.String" Category="Context" Description="????????" %>
<%@ Assembly Name="System.Data" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
            SqlParameter[] parameters 
= {
        
<% 
            System.Text.StringBuilder builder 
= new System.Text.StringBuilder();
            DataSet ds 
= new DataSet();
            ds 
= GetDbParameter();
            
for(int i =0; i < ds.Tables[0].Rows.Count; i++)
            {
                
%>
                    
new SqlParameter("<%=ds.Tables[0].Rows[i]["PARAMETER_NAME"].ToString()%>", SqlDbType.<%=ds.Tables[0].Rows[i]["DATA_TYPE"].ToString()%>)<% if ((i+1)==ds.Tables[0].Rows.Count){%>
                    };
<%
                            }
                        
else
                        {
                    
%>,
                    
<%
                    }
                    
%>
                
<%
            }
        
%>
        
        
<%  for(int j=0; j < ds.Tables[0].Rows.Count;  j++)
            {
        
%>    
            
<% if( ds.Tables[0].Rows[j]["PARAMETER_MODE"].ToString().Trim()=="IN"){ %>
            parameters[
<% %><%=j%><% %>].Value=model.<%=SubStr(ds.Tables[0].Rows[j]["PARAMETER_NAME"].ToString().Trim()) %>;
            
<% } else{%>
            parameters[
<% %><%=j%><% %>].Direction=ParameterDirection.Output;
<%%>
            
<%
            }
        
%><script runat="template">#region ??SQL??????
public DataSet GetDbParameter()
{
    SqlConnection con 
=new SqlConnection("Database=ksm000;Server=.;user id =sa;password =sa");
    SqlCommand cmd 
=new SqlCommand("select * from information_schema.parameters where specific_name ='s_customer_ADD'",con);
    SqlDataAdapter sda 
=new SqlDataAdapter();
    sda.SelectCommand 
= cmd;
    DataSet ds 
=new DataSet();
    sda.Fill(ds);
    
return ds;
}
#endregion#region ????
public string SubStr(string str)
{
    
return str.Substring(1,str.Length-1);    
}
#endregion</script>

MyGeneration
代码如下:

<%#REFERENCE System.Data.dll%><%#NAMESPACE System.Data%><%#NAMESPACE System.Data.SqlClient%><%#REFERENCE System.Xml.dll%><%
public class GeneratedTemplate : DotNetScriptTemplate
{
    
public GeneratedTemplate(ZeusContext context) : base(context) {}//---------------------------------------------------
    
// Render() is where you want to write your logic    
    
//---------------------------------------------------
    public override void Render()
    {
        output.write(
"\t\t");
        output.write(
"SqlParameter[] parameters = {");
        System.Text.StringBuilder builder 
= new System.Text.StringBuilder();
        DataSet ds 
= new DataSet();
        ds 
= GetDbParameter1();
        output.write(
"\n");
        
for(int i =0; i < ds.Tables[0].Rows.Count; i++)
        {
            output.write(
"\t\t\t\t");
            output.write(
"new SqlParameter(");
            output.write(
"\"" + ds.Tables[0].Rows[i]["PARAMETER_NAME"].ToString() + "\""+", SqlDbType." + SubstrToUpper(ds.Tables[0].Rows[i]["DATA_TYPE"].ToString()));
            output.write(
")");
            
if ((i+1)==ds.Tables[0].Rows.Count)
            {
                output.write(
"\n");
                output.write(
"\t\t};");
            }
            
else
            {
                output.write(
",");
                output.writeln(
"");
            }
        }
        output.writeln(
"\t\n");
        
for(int j=0; j < ds.Tables[0].Rows.Count;  j++)
        {
            
if(ds.Tables[0].Rows[j]["PARAMETER_MODE"].ToString().Trim()=="IN")
            { 
                output.write(
"\t\t");
                output.write(
"parameters[");
                output.write(j.ToString());
                output.write(
"].Value=model.");
                output.write(SubStr(ds.Tables[
0].Rows[j]["PARAMETER_NAME"].ToString().Trim()));
                output.write(
";");
                output.writeln(
"");
            } 
            
else
            {
                output.write(
"\t\t");
                output.write(
"parameters["+j.ToString());
                output.write(
"].Direction=ParameterDirection.Output;");
                output.writeln(
"");
            } 
        }
    }
    
public DataSet GetDbParameter1()
    {
        SqlConnection con 
=new SqlConnection("Database=ksm000;Server=.;user id =sa;password =sa");
        SqlCommand cmd 
=new SqlCommand("select * from information_schema.parameters where specific_name ='s_customer_ADD'",con);
        SqlDataAdapter sda 
=new SqlDataAdapter();
        sda.SelectCommand 
= cmd;
        DataSet ds 
=new DataSet();
        sda.Fill(ds);
        
return ds;
    }
    
private string SubstrToUpper(string str)
    {
        
switch (str.ToLower())
        {
            
case "int":
                str 
= "Int";
                
break;
            
case "nchar":
                str 
= "NChar";
                
break;
            
case "bit":
                str 
= "Bit";
                
break;
            
case "nvarchar":
                str 
= "NVarChar";
                
break;
            
case "datetime":
                str 
= "DataTime";
                
break;
            
case "varchar":
                str 
= "VarChar";
                
break;
            
case "smalldatetime":
                str 
= "SmallDateTime";
                
break;
            
case "decimal":
                str 
= "Decimal";
                
break;
            
case "float":
                str 
= "Float";
                
break;
            
case "char":
                str 
= "Char";
                
break;
            
case "text":
                str 
= "Text";
                
break;
            
case "money":
                str 
= "Money";
                
break;
            
default:
                str 
= "没有找到数据类型";
                
break;
        }
        
return str;
    }
public string SubStr(string str)
    {
        
return str.Substring(1,str.Length-1);    
    }

}

%>

    protected void Page_Load(object sender, EventArgs e)
    {
        StringBuilder sb 
= new StringBuilder();
        sb.Append(
"\t\t");
        sb.Append(
"SqlParameter[] parameters = {");
        System.Text.StringBuilder builder 
= new System.Text.StringBuilder();
        DataSet ds 
= new DataSet();
        ds 
= GetDbParameter1();
        sb.Append(
"\n");
        
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            sb.Append(
"\t\t\t\t");
            sb.Append(
"new SqlParameter(");
            sb.Append(
"\"" + ds.Tables[0].Rows[i]["PARAMETER_NAME"].ToString() + "\"" + ", SqlDbType." + SubstrToUpper(ds.Tables[0].Rows[i]["DATA_TYPE"].ToString()));
            sb.Append(
")");
            
if ((i + 1== ds.Tables[0].Rows.Count)
            {
                sb.Append(
"\n");
                sb.Append(
"\t\t};");
            }
            
else
            {
                sb.Append(
",");
                sb.Append(
"\n");
            }
        }
        sb.Append(
"\t\n");
        
for (int j = 0; j < ds.Tables[0].Rows.Count; j++)
        {
            
if (ds.Tables[0].Rows[j]["PARAMETER_MODE"].ToString().Trim() == "IN")
            {
                sb.Append(
"\t\t");
                sb.Append(
"parameters[");
                sb.Append(j.ToString());
                sb.Append(
"].Value=model.");
                sb.Append(SubStr(ds.Tables[
0].Rows[j]["PARAMETER_NAME"].ToString().Trim()));
                sb.Append(
";");
                sb.Append(
"\n");
            }
            
else
            {
                sb.Append(
"\t\t");
                sb.Append(
"parameters[" + j.ToString());
                sb.Append(
"].Direction=ParameterDirection.Output;");
                sb.Append(
"\n");
            }
        }
        
//Response.Write(sb.ToString);
        TextBox1.Text = sb.ToString();
    }
    
public DataSet GetDbParameter1()
    {
        SqlConnection con 
= new SqlConnection("Database=ksm000;Server=.;user id =sa;password =sa");
        SqlCommand cmd 
= new SqlCommand("select * from information_schema.parameters where specific_name ='s_customer_ADD'", con);
        SqlDataAdapter sda 
= new SqlDataAdapter();
        sda.SelectCommand 
= cmd;
        DataSet ds 
= new DataSet();
        sda.Fill(ds);
        
return ds;
    }
    
private string SubstrToUpper(string str)
    {
        
switch (str.ToLower())
        {
            
case "int":
                str 
= "Int";
                
break;
            
case "nchar":
                str 
= "NChar";
                
break;
            
case "bit":
                str 
= "Bit";
                
break;
            
case "nvarchar":
                str 
= "NVarChar";
                
break;
            
case "datetime":
                str 
= "DataTime";
                
break;
            
case "varchar":
                str 
= "VarChar";
                
break;
            
case "smalldatetime":
                str 
= "SmallDateTime";
                
break;
            
case "decimal":
                str 
= "Decimal";
                
break;
            
case "float":
                str 
= "Float";
                
break;
            
case "char":
                str 
= "Char";
                
break;
            
case "text":
                str 
= "Text";
                
break;
            
case "money":
                str 
= "Money";
                
break;
            
default:
                
throw new Exception("没有找到匹配数据类型");
                
break;
        }
        
return str;
    }
    
public string SubStr(string str)
    {
        
return str.Substring(1, str.Length - 1);
    }

 代码下载