存储过程——存储过程在程序中应用(五)

前几个章节介绍了存储过程的创建,和数据库中的各个关联;那存储过程有这么的的优点,具体在程序中如何应用呢?下面进行详细介绍:

介绍之前必须具备ADO.NET六个核心对象的概念,如不太清楚,可浏览http://www.cnblogs.com/tuqun/p/3654104.html中有详细介绍,ADO.NET简单介绍如下

  • ADO.NET核心对象
  1. Command 命令对象(执行CRUD操作用)
  2. Connection 连接对象(连接数据库)
  3. DataAdapter 数据适配器对象(太专业的解释,其实通俗来讲就是一个容器,里面可以存放DataSet、DataTalbe对象)
  4. DataRead 数据阅读器对象(这个运用比较少,具体啥用处,希望大神们提供具体DEMO指点?)
  5. DataSet 数据集合对象(类似与数据库,里面可以存放多个DataTable)
  6. DataTabel 数据表对象(这个就不需要解释了,看字面意思就了解了,通常我们关注里面的ROW,COLUMN)
  • 使用命令操作数据库

 

  • 使用命令操作数据库

  • 在ADO.NET中调用存储过程
  1. 必须在指定命令对象执行类型:存储过程
--制定命令对象类型
--存储过程的名称
CommandType.StoredProcedure
--SQL 文本命令
CommandType.Text
  1. 如果存储过程中定义了参数,在应用程序中必须给存储过程传递参数
--传递参数
SqlParameter[] pars = new SqlParameter[] { new SqlParameter("@typeid", typeid) };
  • 程序应用如下

    1. 编写SqlHelper类
      复制代码
          public class SqlHelper
          {
              /// <summary>
              /// 连接字符串
              /// </summary>
              private static string strconn = @"data source=Y8OFSI87AJIS7R8\MSSQL;Database=wisdominfo;uid=sa;password=199077";
      
              /// <summary>
              /// 查询产品信息
              /// </summary>
              /// <param name="sql">查询sql</param>
              /// <param name="type">查询类型</param>
              /// <param name="pars">查询参数</param>
              /// <returns></returns>
              public static DataTable GetProDuctByTypeId(string sql, CommandType type, SqlParameter[] pars)
              {
                  SqlConnection cnn = new SqlConnection(strconn);
                  SqlDataAdapter dpt = new SqlDataAdapter(sql, cnn);
                  dpt.SelectCommand.CommandType = type;
                  dpt.SelectCommand.Parameters.AddRange(pars);
                  DataTable dt = new DataTable();
                  dpt.Fill(dt);
                  return dt;
              }
          }
      复制代码

 

  1. 编写存储过程
复制代码
CREATE PROCEDURE GetProByTypeId 
    @typeid int
AS
BEGIN
    SELECT   a.ID, a.Name, a.Price, a.Address, b.Name AS 品牌
FROM      dbo.product AS a INNER JOIN
                dbo.productType AS b ON a.Type = b.ID  where b.ID=@typeid
END
GO
复制代码

  3.  winform窗体后台代码

复制代码
        public Form1()
        {
            InitializeComponent();
            this.Load += Form1_Load;
        }

        void Form1_Load(object sender, EventArgs e)
        {
            SqlParameter[] pars = new SqlParameter[] { new SqlParameter("@typeid", 1) };
            dataGridView1.DataSource = SqlHelper.GetProDuctByTypeId("GetProByTypeId", CommandType.StoredProcedure, pars);
        }
复制代码


总结:

  1. 不管存储过程还是直接写sql,实际上都需要通过ADO.NET来访问数据,所以对ADO.NET核心对象必须掌握清楚
  2. 通过存储过程调用,实际上运行速度比在直接写select语句执行效率高
  3. 通过调用存储过程,在项目维护起来较为方便,在改动程序中的代码较少,只需要在程序中调用的存储过程进行更改,减少了维护难度。

后续对存储过程还会进一步的了解,往大家一如既往的关注,学无止尽。。。

posted @   汉城节度使  阅读(490)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示