C#存储过程的循序渐进

 

话不多说 先谢谢http://developer.51cto.com/art/200908/142218.htm砸来的砖

经过上面这位哥哥的提点

我今天算是把存储过程弄懂了

现在贴上自己修改 逐个运行成功的代码

先是 sql server2008里的 存储过程语句

create procedure dbo.testProcedureUsers

as

select UserName from Users



create procedure dbo.testProcedureUserInfo

@UserName varchar(20)

as

select * from Users where UserName=@UserName



create procedure dbo.testProcedureCM

@NowDate datetime,

@OldDate datetime

as

select * from ChangingModel where putDate<@NowDate and putDate>@OldDate



create procedure dbo.testProcedureSelect

@Customer int

as

if @Customer=1

begin

select city from City

end

else

begin

select top(10) CompanyName from Company

end

 

如要对存储过程判断是否存在

请在每句前面加上

IF EXISTS (SELECT name FROM sysobjects WHERE name = '存储过程名' AND type = 'P')

    DROP PROCEDURE 存储过程名

    GO

 

 

后面是vs2008里c#的源码

protected void Page_Load(object sender, EventArgs e)

    {

        //init();

        //initOne();

        //initMore();

        initSelect();

    }



    /// <summary>

    /// 一个最简单的存储过程

    /// </summary>

    private void init()

    {

        List<string> list = new List<string>();

        SqlDataReader reader = DBHelp.GetReader("testProcedureUsers");

        while (reader.Read())

        {

            list.Add(reader[0].ToString()); 

        }

        reader.Close();

        if (list.Count>0)

        {

            for (int i = 0; i < list.Count; i++)

{

                DropDownList1.Items.Add(list[i]);  

}

        }

        Response.Write(list.Count);

    }



    /// <summary>

    /// 带一个参数的

    /// </summary>

    private void initOne()

    {

        SqlParameter[] sp = new SqlParameter[] { 

            new SqlParameter("@UserName","admin")

        };

        DataTable dt = DBHelp.GetDataSet("testProcedureUserInfo", sp);

        if (dt.Rows.Count>0)

        {

            Response.Write(dt.Rows[0]["FullName"].ToString());

            Response.Write(dt.Rows[0]["Password"].ToString());

        }

        else

        {

            Response.Write("NO!");

        }

    }



    /// <summary>

    /// 带多个参数的

    /// </summary>

    private void initMore()

    {

        SqlParameter[] sp = new SqlParameter[] { 

            new SqlParameter("@NowDate",DateTime.Now),

            new SqlParameter("@oldDate",DateTime.Now.AddYears(-1))

        };

        DataTable dt = DBHelp.GetDataSet("testProcedureCM", sp);

        if (dt.Rows.Count>0)

        {

            for (int i = 0; i < dt.Rows.Count; i++)

            {

                Response.Write(dt.Rows[i]["toName"].ToString());

                Response.Write(dt.Rows[i]["toCompany"].ToString());

                Response.Write(dt.Rows[i]["changingTitle".ToString()]);

                Response.Write("</BR>");

            }

        }

        else

        {

            Response.Write("NONONONONO!");

        }

    }



    /// <summary>

    /// 选择是调用存储过程中 哪个sql

    /// </summary>

    private void initSelect()

    {

        int customer = 0;

        DropDownList1.Items.Clear();

        SqlParameter[] sp = new SqlParameter[] { 

            new SqlParameter("@Customer",customer)

        };

        SqlDataReader reader = DBHelp.GetReader("testProcedureSelect", sp);

        while (reader.Read())

        {

            DropDownList1.Items.Add((string)reader[0].ToString());

        }

        reader.Close();

    }

最后 才贴上根据存储过程修改后的 基本类啊!


  

 public static SqlDataReader GetReader(string sql, params SqlParameter[] values)

    {

        SqlCommand cmd = new SqlCommand(sql, Connection);

        SqlDataAdapter da = new SqlDataAdapter(cmd);

        for (int i = 0; i < values.Length; i++)

        {

            da.SelectCommand.Parameters.Add(values[i]);

        }

        da.SelectCommand.CommandType = CommandType.StoredProcedure;

        SqlDataReader reader = cmd.ExecuteReader();

        return reader;

    }



    public static DataTable GetDataSet(string sql, params SqlParameter[] values)

    {

        DataSet ds = new DataSet();

        SqlCommand cmd = new SqlCommand(sql, Connection);

        SqlDataAdapter da = new SqlDataAdapter(cmd);

        for (int i = 0; i < values.Length; i++)

        {

            if ((string)reader[0]!="")

            {

                DropDownList1.Items.Add((string)reader[0]);                

            }

        }

        da.SelectCommand.CommandType = CommandType.StoredProcedure;

        da.Fill(ds);

        return ds.Tables[0];

    }

希望看完别 砸砖啊 呵呵 一起学习 进步 加油了!

备注:

下面关于CLR的引用自http://developer.51cto.com/art/200908/144478.htm

是因为我 在编写的时候也发现不能生成存储过程 执行完下面的语句就好了

 

启用CLR集成

在你开始用C#写存储过程之前,必须要启用你的SQL Server的CLR集成特性。 默认情况它是不启用的。 打开你的SQL Server Management Studio并执行如下脚本。

 

这里,我们执行了系统存储过程“sp_configure”,为其提供的两个参数分别为:“clr enabled”和“1”。如果要停用CLR集成的话也是执行这个存储过程,只不过第二个参数要变为“0”而已。另外,为了使新的设置产生效果,不要忘记调用“RECONFIGURE”。

    1. sp_configure 'clr enabled', 1   
    2. GO   
    3. RECONFIGURE   
    4. GO  

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值