`
lovexuwenhao
  • 浏览: 200442 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Asp.net调用Access存储过程

阅读更多

调试环境:WinXP-sp2+Access2000+Visual Studio.net 2005 

【摘  要】本文阐述了存储过程在开发三层或N层数据库应用程序的优势,并通过示例给出了在Access中建立“存储过程”和用Asp.net调用的方法及需注意的问题。

在开发三层或N层结构的数据库应用程序时,数据访问层对数据库的访问大都采用调用“存储过程”的方式进行。相对于使用的是SQL命令文本来实现数据库的访问而言,利用存储过程使数据库和数据访问层彼此独立,增强了系统设计的灵活性,当数据库发生变化时只需改变存储过程的语句而无需改变程序代码。另外,在存储过程中可以使用参数传递,避免了在使用带参数的 SQL 语句时参数值在字符串中拼接问题。

然而,存储过程只有象SQL Server等这样较大型的数据库才支持,而对于开发基于Access这样的轻量级数据库应用程序时更多使用的是SQL命令文本来实现数据库的访问。事实上,Access的“查询”也具有类似于SQL Server“存储过程”的功能,虽功能上远不及SQL Server下的“存储过程”,但调用方法和调用SQL Server“存储过程”的方法几乎相同,因此掌握调用Access的“存储过程”,对设计出结构优良、移植性强的数据库应用程序是大有裨益的。

下面以Asp.net 2.0和Access2000为例,说明其调用方法。

一、建立示例数据库及查询

1、 建立示例数据库tstSp.mdb:

2、建立表StuGrade,结构如图所示:

 

2、 建立查询:

在Access2000中,选择“查询”--à“设计视图”--à“SQL视图”,建立如下查询

1) 查询QuerySp:

   SELECT  *  FROM  StuGrade;

2) 查询InsertSp:

INSERT  INTO  StuGrade ( Name, Chinese )  VALUES  ([Name], [Chinese]);

   注:参数值需用“ [ ] ”括起来,下同。

3) 查询UpdateSp:

   UPDATE  StuGrade  SET  Chinese = [chVal]  WHERE  Name=[stuName];

4) 查询DeleteSp:

   DELETE  *  FROM  StuGrade  WHERE  Name=[stuName];

   需要说明的是,Access的查询不能象SQL Server那样支持多条 SQL 语句和逻辑语句。

二、建立数据访问层

数据访问层类文件TstDal.cs



using  System.Data.OleDb;

namespace TstDal 

{public class Dal

  {    …

   public  string  GetConnStr    // 数据库连接字符串属性

   {  get

      {       return  "provider=Microsoft.Jet.OLEDB.4.0;Data Source="+

 ystem.Web.HttpContext.Current.Server.MapPath("App_Data/tstSp.mdb") + ";";

       }

    }

    public OleDbDataReader ExecQuerySp()

    { // 调用“查询QuerySp”

       OleDbConnection myConnStr = new OleDbConnection(this.GetConnStr);

       OleDbCommand myCmd = new OleDbCommand("QuerySp", myConnStr);

       myCmd.CommandType = CommandType.StoredProcedure;

       myConnStr.Open();

       OleDbDataReader ret = myCmd.ExecuteReader(CommandBehavior.CloseConnection);

       return ret;

     }

    public void ExecInsertSp(string Para1,string Para2)

    {   // 调用“查询InsertSp”

OleDbConnection myConnStr = new OleDbConnection(this.GetConnStr);

        OleDbCommand myCmd = new OleDbCommand("InsertSp", myConnStr);

        myCmd.CommandType = CommandType.StoredProcedure;

        myCmd.Parameters.Add("Name", OleDbType.Char);

        myCmd.Parameters["Name"].Value = Para1;

        myCmd.Parameters.Add("Chinese", OleDbType.Single);

        myCmd.Parameters["Chinese"].Value = float.Parse(Para2);

        myConnStr.Open();

        myCmd.ExecuteNonQuery();

        myConnStr.Close();

    }

public void ExecUpdateSp(string Para1, string Para2)

    {  // 调用“查询UpdateSp”

       OleDbConnection myConnStr = new OleDbConnection(this.GetConnStr);

       OleDbCommand myCmd = new OleDbCommand("UpdateSp", myConnStr);

       myCmd.CommandType = CommandType.StoredProcedure;

       myCmd.Parameters.Add("chVal", OleDbType.Single);

       myCmd.Parameters["chVal"].Value = float.Parse(Para2);

       myCmd.Parameters.Add("stuName", OleDbType.Char);

       myCmd.Parameters["stuName"].Value = Para1;

       myConnStr.Open();

       myCmd.ExecuteNonQuery();

       myConnStr.Close();

    }

    public void ExecDeleteSp(string Para1)

    {        // 调用“查询DeleteSp”

       OleDbConnection myConnStr = new OleDbConnection(this.GetConnStr);

       OleDbCommand myCmd = new OleDbCommand("DeleteSp", myConnStr);

       myCmd.CommandType = CommandType.StoredProcedure;

       myCmd.Parameters.Add("stuName", OleDbType.Char);

       myCmd.Parameters["stuName"].Value = Para1;

       myConnStr.Open();

       myCmd.ExecuteNonQuery();

       myConnStr.Close();

    }

  }

}

需要说明的是,Access“存储过程”不支持命名参数,即参数是以“顺序”而非“名字”来识别的,并且参数前不能有@符号,这一点在调用时需特别注意。

三、建立用户界面层

1、界面设计Default.aspx(如图所示):

控件 ID

GridView TstGv

TextBox TxtName

TxtChn

Button BtnInsert

BtnUpdate

BtnDelete

                                                              





  

控件属性设置

2、界面后台代码:

Default.aspx.cs



using TstDal;

public partial class _Default : System.Web.UI.Page 

{  protected  void  TstDataList()     // 调用数据库访问类并绑定到控件函数

    {   Dal QuerySp = new Dal();

        TstGv.DataSource = QuerySp.ExecQuerySp();  

        TstGv.DataBind();

     }

protected void Page_Load(object sender, EventArgs e)

    {   this.TstDataList();  }

    protected void BtnInsert_Click(object sender, EventArgs e)

    {   Dal InsertSp = new Dal();

        InsertSp.ExecInsertSp(TxtName.Text.Trim(), TxtChn.Text.Trim()); // 调用数据库访问类

        this.TstDataList();

    }

    protected void BtnUpdate_Click(object sender, EventArgs e)

    {   Dal UpdateSp = new Dal();

        UpdateSp.ExecUpdateSp(TxtName.Text.Trim(), TxtChn.Text.Trim()); 

        this.TstDataList();

    }

    protected void BtnDelete_Click(object sender, EventArgs e)

    {   Dal DeleteSp = new Dal();

        DeleteSp.ExecDeleteSp(TxtName.Text.Trim());

        this.TstDataList();

    }

}

分享到:
评论

相关推荐

    信息查询 ASp.NET + ACCESS

    【标题】:“信息查询 ASP.NET + ACCESS”是一个基于ASP.NET技术与ACCESS数据库构建的学生信息管理系统。这个系统的主要目的是实现对学生信息的有效管理和查询,为教育机构提供便利的数据处理平台。 【描述】:该...

    c# asp.net+access 简易论坛BBS

    【描述】:这个项目是一个基于C#编程语言和ASP.NET框架构建的简单在线论坛,采用了Access数据库作为后台数据存储。它对于初学者来说非常友好,提供了一个易于理解和实践的平台,能够帮助初学者快速掌握Web应用开发的...

    asp.net+access数据库小型网站

    【ASP.NET与Access数据库小型网站开发详解】 ASP.NET是微软公司推出的一种用于构建Web应用程序的框架,它基于.NET Framework,提供了强大的服务器端编程模型。在本文中,我们将深入探讨如何利用ASP.NET结合Access...

    asp.net+access 通讯录

    【标题】:“asp.net+access 通讯录”指的是一个基于ASP.NET技术和Access数据库构建的联系人管理系统。在本文中,我们将深入探讨如何利用这两种技术来创建一个简单的通讯录应用。 【描述】:“asp.net+access ...

    asp.net连接Access数据库

    在本例中,我们讨论的是如何使用 ASP.NET 连接到 Access 数据库进行数据操作,如读取、插入、更新和删除数据。Access 数据库是一种轻量级的关系型数据库管理系统,适用于小型应用或开发阶段的数据存储。 首先,要在...

    电子商务网站(ASP.NET+ACCESS)

    在电子商务网站的开发过程中,ASP.NET和ACCESS的结合工作流程如下: 1. **用户界面**:ASP.NET负责创建用户友好的界面,用户可以通过这些界面浏览商品、下订单、查看购物车等。 2. **数据交互**:当用户进行操作时...

    用asp.net+access做的简单聊天室

    【标题】"用asp.net+access做的简单聊天室"展示了如何使用ASP.NET这一Web应用程序开发框架,结合Access数据库,创建一个基本的在线聊天系统。这个项目对于初学者来说,是理解Web交互和数据库操作的好例子。 ASP.NET...

    asp.net+access简单的后台新闻发布

    【标题】"asp.net+access简单的后台新闻发布"指的是使用ASP.NET技术与Access数据库构建一个简易的后台新闻发布系统。ASP.NET是Microsoft开发的Web应用程序框架,它允许开发人员使用C#或VB.NET等语言创建动态网站、...

    ASP.NET 2.0 C# Access数据库访问类

    根据给定的信息,本文将详细解释“ASP.NET 2.0 C# Access数据库访问类”的核心概念、功能以及实现方式。 ### ASP.NET 2.0 和 C# 首先,我们需要了解两个重要的技术背景:ASP.NET 2.0 和 C#。 #### ASP.NET 2.0 ...

    asp.net 操作 access 强大的通用类

    "asp.net 操作 access 强大的通用类"指的是一个专门设计的C#类库,该类库简化了ASP.NET应用程序与Access数据库之间的交互。这个类可能包含了连接数据库、执行SQL语句、处理结果集、事务管理等一系列功能,从而提高...

    asp.net中oracle 存储过程(图文)

    在ASP.NET中调用这个存储过程,可以使用Oracle .NET 数据提供程序(Oracle.DataAccess.Client)。以下是一个C#方法,展示了如何执行存储过程并处理返回的多个结果集: ```csharp public object[] ExcuteProc_N_...

    ASP.NET网站首页新闻自动发布系统全源码提供+access数据库

    这个“ASP.NET网站首页新闻自动发布系统全源码提供+access数据库”项目,是一个利用ASP.NET进行开发的新闻管理系统,适用于企业或个人网站,能够实现新闻的自动化发布和管理。 该系统的功能主要包括: 1. 新闻管理...

    学生选课系统(aspv.net c# access)

    这个文件名表明项目的核心功能是实现学生选课,通过ASP.NET和C#的结合,提供用户界面和业务逻辑,而Access数据库则负责存储和管理学生的选课数据,如课程信息、学生信息、选课记录等。 在这样的系统中,可能会涉及...

    asp.net data access toturial

    在ASP.NET开发中,数据访问是一个至关重要的部分,它涉及到如何从数据库获取、存储和管理信息。本教程将深入探讨一种常见的数据访问架构——三层架构,以及如何处理数据并发问题和扩展数据访问控件。 三层架构是一...

    Asp.Net审批流程

    在Asp.Net中开发审批流程,可以帮助企业或组织实现高效、规范的业务审批过程,提升工作效率。在这个审批流程中,我们可以利用Asp.Net的核心特性和组件来创建一个用户友好的界面,以及强大的后台逻辑来处理审批逻辑。...

    ASP.NET毕业设计——ASP+ACCESS网上购物系统设计(源代码+论文+开题报告+答辩PPT).zip

    在这个毕业设计项目中,学生利用ASP.NET和ACCESS数据库来构建了一个完整的网上购物系统,涵盖了从商品浏览、购物车管理到订单处理等一系列电子商务流程。 该项目的核心知识点包括: 1. **ASP.NET基础**:ASP.NET是...

    ASP.NET开发网上购物(花店)

    ASP.NET提供了多种方式来实现这种集成,例如通过Web服务或API调用,确保支付过程的安全性和可靠性。 6. **安全性与身份验证** ASP.NET提供了多种安全机制,如身份验证、授权和角色管理。在本项目中,可能使用Forms...

    ASP.net+Access数据库源码 -本程序是一个电话本程序,仅供大家参考.zip

    在这个特定的案例中,我们看到的是一个使用ASP.NET和Access数据库构建的电话本程序。 Access数据库是Microsoft Office套件的一部分,是一个关系型数据库管理系统(RDBMS),适用于小型到中型企业级的数据存储需求。...

    ASP.NET 登陆窗口例子

    在这个“ASP.NET 登录窗口例子”中,我们将探讨如何在ASP.NET环境中实现用户登录功能,以及如何与Access数据库进行交互来存储和验证用户信息。 首先,ASP.NET登录窗口是应用程序中的关键组件,它允许用户输入他们的...

    asp.net新闻管理系统Access数据库源码.rar c#+Access

    这是一个基于ASP.NET技术构建的新闻管理系统,采用C#编程语言,并使用Access数据库作为后端数据存储。这个系统的核心目标是方便地管理和发布新闻内容,同时提供了用户注册、登录以及分类查看新闻的功能。以下是对该...

Global site tag (gtag.js) - Google Analytics