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

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

介绍之前必须具备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 @ 2014-04-11 23:51  汉城节度使  阅读(489)  评论(0编辑  收藏  举报