结合存储过程开发数据库应用程序

原创 2004年04月21日 10:26:00

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

存储过程提供了数据驱动应用程序中的许多优点。利用存储过程,数据库操作可以封装在单个命令中,为获取最佳性能而进行优化并通过附加的安全性得到增强;利用存储过程,还可以获得sql语句的重用,节省开发时间。在.NET中,我们可以结合SQL Server提供的存储过程功能开发安全的数据库程序。

和一般的数据库应用程序开发流程一样,采用存储过程的应用程序开发过程也分为如下几个过程:设计数据库、设计存储过程、连接数据库、编写命令、执行命令、关闭数据库连接。下面我以一个简单的用户注册程序一一加以介绍。

设计数据库

       为简单起见,用户数据库采用的字段只有四个:用户标识Uid、用户名wuser、用户密码pwd、电子邮件地址Email。打开SQL Server的企业管理器,新建数据库grid_web,然后新建表webuser,如下图设计该数据库表。

      

设计存储过程

       设计好数据库以后,就可以开始设计存储过程了。存储过程可以分为两种:有参数和没有参数的存储过程。由于在编程使用存储过程时,这两种存储过程使用方法不太一样,因而在这里我们设计两种存储过程。

       这里需要设计的存储过程为向数据库中插入新的行,在实际使用中可以用存储过程来实现插入、查询、修改、删除、统计等常见的数据库处理。没有参数的存储过程采用默认值作为数据库表的值,其实现如下:

CREATE PROCEDURE dt_insertuser1

 AS

INSERT INTO webuser VALUES(“lotusswan","123456","lotusswan@mycom.com")

GO

有参数的存储过程采用变量作为数据库表的值,和上面的实现大同小异,只是将默认值该为了变量参数:

CREATE PROCEDURE dt_insertuser

@user char(12),

@pwd char(12),

@email char(30)

 AS

INSERT INTO webuser VALUES(@user,@pwd,@email)

GO

连接数据库

       设计好数据库和存储过程之后,我们可以开始设计应用程序了。首先要做的是连接数据库,可以通过SqlConnection对象、OleDbConnection 对象、OdbcConnection 对象等方法连接数据库,由于我们采用的是SQL Server数据库,考虑到效率因素,我们采用SqlConnection对象。

       连接数据库最主要的一步是用好SqlConnectionConnectionString属性,这里我们采用的连接语句为:

string ConnStr;

       ConnStr="Data Source=jiang;Integrated Security=SSPI;Initial Catalog=grid_web";

       SqlConnection conn =new SqlConnection(ConnStr);

       上面的代码中采用的安全模式是SSPI,也可以采用用户名/密码的方式连接数据库,但是后一种方式用户名和密码放在程序中,显然是不太安全的。采用SSPI时,使用的用户名时ASPNET,因此必须当ASPNET具有访问数据和执行存储过程的权限时,该连接方法才是正确的,否则会出现错误。

编写和执行命令

       通过SqlCommand对象可以为编辑命令,为采用存储过程,SqlCommand对象的几个属性需要设置好。CommandText获取或设置要对数据源执行的 Transact-SQL 语句或存储过程,这里设置为dt_insertuser或是dt_insertuser1分别对应于有参数和无参数的存储过程;CommandType设置为System.Data.CommandType.StoredProcedure,采用存储过程解释CommandText属性的值;有参数和无参数的存储过程的执行区别在于Parameters属性,具体可参见下面的代码。设置好SqlCommand对象的属性后,就可以调用ExecuteNoQuery函数执行命令了。

       无参数的存储过程实现十分简单:

       SqlCommand comm =new SqlCommand();

       comm.CommandText="dt_insertuser1";

       comm.Connection=conn;

       comm.CommandType=System.Data.CommandType.StoredProcedure;

       comm.ExecuteNonQuery();

       有参数的存储过程的执行要复杂得多:

       //comm添加参数,参数名称和个数由储存过程决定;                          

       comm.Parameters.Add("@user",System.Data.SqlDbType.VarChar,12,"wuser");

       comm.Parameters.Add("@pwd",SqlDbType.VarChar,12,"pwd");

       comm.Parameters.Add("@email",SqlDbType.VarChar,30,"Email");

       //comm的参数赋值,作为参数值传递给存储过程;

       comm.Parameters["@user"].Value=usertxt.Text;

       comm.Parameters["@pwd"].Value=pwdtxt.Text;

       comm.Parameters["@email"].Value=emailtxt.Text;

       comm.ExecuteNonQuery();

       执行完SqlCommand对象的ExecuteNonQuery函数后,数据库中就会新添加了一行数据。

关闭数据库连接

       和其他类别的连接一样,关闭数据库连接是最简单的:

       conn.Close();

      

springmvc+mybatis使用存储过程查询多结果集

有时候查询一些数据需要存储过程,使用存储过程能大大的减少查询次数,增强性能。如下是使用存储过程完成一段复杂的查询。查询内容是根据课程的ID,难易程度和题目数量随机查出来题目。数据库如下 DROP T...
  • qq_24046745
  • qq_24046745
  • 2016年10月17日 14:08
  • 2160

java程序如何调用mysql数据库的存储过程

一:Java如何实现对存储过程的调用:    A:不带输出参数的    ---------------不带输出参数的---------------------------------- crea...
  • xiaozhu0301
  • xiaozhu0301
  • 2015年12月30日 11:11
  • 2035

初学Redis(3)——用Redis作为Mysql数据库的缓存

把MySQL结果集缓存到Redis的字符串或哈希结构中以后,我们面临一个新的问题,即如何为这些字符串或哈希命名,也就是如何确定它们的键。因为这些数据结构所对应的行都属于某个结果集,假如可以找到一种唯一...
  • xyw591238
  • xyw591238
  • 2016年06月22日 11:55
  • 1847

MFC在数据库应用程序开发中应用存储过程

  • 2011年08月03日 12:37
  • 45KB
  • 下载

存储过程,从新的视角看待数据库应用程序开发(游标,变量,结果集)

存储过程,从新的视角看待数据库应用程序开发(游标,变量,结果集) by ColdZoo 2015年03月26日 通常情况下,在操作数据库里数据的时候,我们会选择一种编程语言(Java,C++, e...
  • ColdZoo
  • ColdZoo
  • 2015年03月26日 20:33
  • 537

从存储过程说起,浅析业务逻辑写在数据库中还是应用程序中

从存储过程说起
  • qq_35735069
  • qq_35735069
  • 2017年07月26日 11:21
  • 424

数据库知识体系+sql语句实现存储过程和函数+应用程序接口

按存储模型分为:关系次数据库、网络次数据库、层次数据库。不同的数据库的是按不同的数据结构组织和联系的 数据结构:数据的组织形式与数据之间的联系 用ds=(D, R)其中D表示数据,R表示数据间的联系。...
  • lu93it
  • lu93it
  • 2016年09月15日 09:48
  • 1138

[09] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序使用异步及存储过程

[渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序使用异步及存储过程 2014-05-13 16:32 by Bce, 1106 阅读, 2...
  • Litt_J
  • Litt_J
  • 2014年12月29日 14:36
  • 885

译文:使用MVC5的Entity Framework 6入门(九)——为ASP.NET MVC应用程序使用异步及存储过程

为ASP.NET MVC应用程序使用异步及存储过程这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻...
  • yym373872996
  • yym373872996
  • 2016年11月11日 15:29
  • 1126

应用程序调用存储过程插入数据。

在c#应用程序中调用存储过程—执行添加数据 步骤: 首先,在SQL Server中创建存储过程; 示例代码: --创建添加数据的存储过程 if exists (select * from s...
  • wwttqq85538649
  • wwttqq85538649
  • 2011年01月05日 20:53
  • 490
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:结合存储过程开发数据库应用程序
举报原因:
原因补充:

(最多只允许输入30个字)