C#存储过程的使用

存储过程在应用程序端的使用的优点
1 如果sq1语句直接写在客户端,以一个字符中的形式体现的,提示不友好,会导致效率降低
2 sql语句写在客户端,可以利用sql注入进行攻击,为了安全性,可以把sql封装在服务器存储过程,在客户端进行调用即可

-- 1. 自定义无参数存储过程:
-- 创建存储过程 usp_ScoreQuery1
-- 查询考试成绩,显示:学号、姓名、班级、总成绩,并按成绩的总分高低排序。
-- 统计分析考试成绩,显示班级名称、C#平均分、数据库平均分,按照班级分组实现。

在WinForm中添加一个按钮和两个dataGridView控件,我们要在winform中调用SQL中的存储,代码如下

以上是定义两个类去接收查询出来的两个表

随后在按钮的点击事件中调用SQL中的事件

string proceName = "usp_ScoreQuery1";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = proceName;
cmd.Connection = conn;
cmd.CommandType = System.Data.CommandType.StoredProcedure;

List<Modell> model1 = new List<Modell>();
List<Model2> model2 = new List<Model2>();
try
{
    SqlDataReader dr = cmd.ExecuteReader();
    while (dr.Read())
    {
        model1.Add(new Modell()
        {
            StudentId = Convert.ToInt32(dr["StudentId"]),
            StudentName = dr["StudentName"].ToString(),
            ClassName = dr["ClassName"].ToString(),
            ScoreNum = Convert.ToInt32(dr["ScoreSum"])
        });
    }
    if (dr.NextResult())
    {
        while (dr.Read())
        {
            model2.Add(new Model2()
            {
                ClassName = dr["ClassName"].ToString(),
                CSherpAvg = Convert.ToInt32(dr["C#Avg"]),
                DBAvg = Convert.ToInt32(dr["DBAvg"])

            });

        }
    }
    dr.Close();
    this.dataGridView1.DataSource = model1;
    this.dataGridView2.DataSource = model2;

}
catch (Exception)
{

    throw;
}

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值