博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DataQuicker2快速入门----存储过程篇

Posted on 2006-04-09 22:02  Alex.He  阅读(2168)  评论(5编辑  收藏  举报
 上一篇写了实体操作篇,收到很多朋友的反馈,在这里向支持我的朋友表示感谢。

本章的内容是介绍DataQuicker2(以下DQ2)中存储过程的操作。其实以我的理解,DQ2把存储过程也给实体化了,本篇应该算是上一篇的遗补吧。

         DQ2中,对储存过程的操作是封装好了的,结合代码生成器,可以很方便的执行存储过程。为了让大家能更能够体会的DQ2的简洁,就先看看一个比较常用的操作存储过程的操作方法。

比如,我们定义个个存储过程如下:

CREATE PROCEDURE Categories_ADD
@CategoryName nvarchar(30) ,
@Description ntext , 
 
AS 
     
INSERT INTO Categories(
     
[CategoryName],[Description]
     )
VALUES(
     
@CategoryName,@Description
     ) 
GO

为了能够很方便的操作存储过程,还需要定义一些操作函数,如:

 1 public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected )
 2 {
 3      using (SqlConnection connection = new SqlConnection(connectionString))
 4      {
 5          int result;
 6          connection.Open();
 7          SqlCommand command = BuildIntCommand(connection,storedProcName, parameters );
 8          rowsAffected = command.ExecuteNonQuery();
 9          result = (int)command.Parameters["ReturnValue"].Value;
10          return result;
11      }
12 }

 1 public int Add(Categories model)  
 2 {
 3      int rowsAffected;
 4      SqlParameter[] parameters = {
 5          new SqlParameter("@CategoryName", SqlDbType.NVarChar),
 6          new SqlParameter("@Description", SqlDbType.NText) };
 7      parameters[0].Value = model.CategoryName;
 8      parameters[1].Value = model.Description;
 9      DbHelperSQL.RunProcedure("Categories_ADD",parameters,out rowsAffected);
10      return (int)parameters[0].Value;
11 }

 1public class Categories
 2    {
 3        public Categories()
 4        {}
 5        Model Model
43    }

44


使用的时候需要把model对象传入ADD方法就好了。

==========

特别声明:以上代码片断采用李天平老兄的动软代码生成器生的,没有经过调试。这里列出只是为了显示传统的存储过程的使用模式而已。如果只是对数据库作一些简单的操作,动软.NET代码生成器是一个不错的选择。

==========

下面看看同样的存储过程,要使用DQ2操作这个简单的储存过程的步骤:

使用代码生成器,选择存储过程实体代码生成。其他操作基本同上一讲。值得注意的是,每一个存储过程会被转换为单独的类,然后参数转换为对应的属性。

 1using System;
 2using System.Text;
 3using System.Collections.Generic;
 4using DataQuicker2.Framework;
 5
 6namespace DataQuicker2.Demo
 7{
 8    /// <summary>
 9    /// 存储过程类Categories_ADD。<br />
10    /// Store procedure class Categories_ADD.
11    /// </summary>

12    public class Categories_ADD : StoreProcedure
13    {
14        Store Procedure Parameters
51
52        /// <summary>
53        /// 构造存储过程对象GetPostList。<br />
54        /// Construct store procedure instance GetPostList.
55        /// </summary>

56        public Categories_ADD() : base() { }
57
58        /// <summary>
59        /// 绑定实体对象与数据库对象。<br />
60        /// Bind entity instance to database.
61        /// </summary>

62        protected override void Bind()
63        {
64            this.BindStoreParameterName("Categories_ADD");
65
66            this.BindParameter(this.categoryName, "CategoryName");
67
68            this.BindParameter(this.description, "Description");
69        }

70    }

71}

72


使用的代码如下

1 protected void btnRunProcedure_Click(object sender, EventArgs e)
2 {
3             Categories_ADD add = new Categories_ADD();
4             add.CategoryName ="DataQuicker2";
5             add.Description = "数据处理的好助手";
6             add.ExecuteNonQuery(DbConn);
7 }

就完成了存储过程的调用,其他工作,DQ2已经在后台做好了,是不是很简单。-_-! ,不知不觉,又偏题了。 

其实DQ2的存储过程操作很简单,只涉及到几个函数:

/// 执行存储过程

ExecuteNonQuery

/// 执行存储过程,返回结果的第一行第一列单元格的结果。

ExecuteScalar

/// 执行查询返回数据集。

Fill

/// 返回阅读器对象。

GetDataReader      //DataQuicker2 0.8.8.0版本新增 

以上四个函数都有两个或者以上的重载版本,例如ExecuteNonQuery

 1 /// <summary>
 2 /// 执行存储过程。当数据链接字符串名称为Default时使用
 3 /// </summary>
 4 ExecuteNonQuery();
 5 
 6 /// <summary>
 7 /// 执行存储过程。
 8 /// </summary>
 9 /// <param name="connection">数据库链接对象</param>
10 ExecuteNonQuery(IDbConnection connection); 
11 
12 /// <summary>
13 /// 执行存储过程。
14 /// </summary>
15 /// <param name="transaction">事务处理对象,请保证数据库已经打开</param>
16 ExecuteNonQuery(IDbTransaction transaction);
17 
18 


其他三个函数和ExecuteNonQuery很类似。就不一一SHOW出来了。有兴趣的朋友可以看看代码文件。

因为这一节很简单,所以没有准备相应的DEMO,在全文完成的时候,我尽量作一个完整的DEMO提供给大家下载。

DataQuicker2已经升级到0.8.8版,为StoreProcedure类增加了GetDataReader及相关的重载版本
下载地址
http://lovinger2000.cnblogs.com/archive/2006/04/02/DataQuicker2Package.html