结合存储过程开发数据库应用程
2007-08-16 11:24
330 查看
存储过程提供了数据驱动应用程序中的许多优点。利用存储过程,数据库操作可以封装在单个命令中,为获取最佳性能而进行优化并通过附加的安全性得到增强;利用存储过程,还可以获得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对象。
连接数据库最主要的一步是用好SqlConnection的ConnectionString属性,这里我们采用的连接语句为:
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();
和一般的数据库应用程序开发流程一样,采用存储过程的应用程序开发过程也分为如下几个过程:设计数据库、设计存储过程、连接数据库、编写命令、执行命令、关闭数据库连接。下面我以一个简单的用户注册程序一一加以介绍。
设计数据库
为简单起见,用户数据库采用的字段只有四个:用户标识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对象。
连接数据库最主要的一步是用好SqlConnection的ConnectionString属性,这里我们采用的连接语句为:
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();
相关文章推荐
- 结合存储过程开发数据库应用程
- 结合存储过程开发数据库应用程序
- 结合存储过程开发数据库应用程序
- 结合存储过程开发数据库应用程序
- 在数据库开发过程中,数据库、表、字段、视图、存储过程等的命名规则
- SQL SERVER数据库开发之存储过程应用
- SQLSERVER开发之存储过程的应用
- SQL2K数据库开发二十七之存储过程操作创建存储过程(二)
- Visual C# 2008+SQL Server 2005 数据库与网络开发--4.6.1 存储过程简介
- ASP存储过程开发应用详解第1/2页
- SQL SERVER数据库开发之存储过程的应用
- SQL使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识
- 存储过程结合bcp--将数据库记录导出成SQL脚本的形式。
- SQL2K数据库开发二十九之存储过程操作查看存储过程 推荐
- ASP存储过程开发应用详解第1/2页
- 数据库在IOS开发过程中的应用
- SQL SERVER数据库开发之存储过程的应用
- 本文是笔者根据数据库编程经验,利用C++语言的模板、继承、授权、多态等面向对象特性,借鉴命令模式,实现了对象在关系数据中的存储,降低应用系统与数据库之间的耦合,提高开发效率。
- SQL2K数据库开发二十六之存储过程操作创建存储过程(一)
- 数据库开发必看 -- 用索引优化SQL,开发优秀的分页存储过程(三)