首页 理论教育 C#编程教程:存储过程,演示数据库操作

C#编程教程:存储过程,演示数据库操作

时间:2023-10-22 理论教育 版权反馈
【摘要】:通过定义存储过程,可以实现数据库的多种操作。下面以数据库Northwind内的Region为例,说明存储过程的处理。该存储过程有如下两个参数。这样可以通过在存储过程中创建一个主键码来简化主键码的生成。并且在最后一行使用了UpdateRowSource枚举来表示通过输出参数从这个存储过程返回的数据。当从一个DataTable中执行存储过程调用时,一般使用这个标志。

C#编程教程:存储过程,演示数据库操作

当使用一个命令对象调用存储过程后,就实现了对存储过程的名称定义。通过定义存储过程,可以实现数据库的多种操作。下面以数据库Northwind内的Region为例,说明存储过程的处理。

1.调用没有返回值的存储过程

调用存储过程的最简单示例是不给调用者任何返回值。下面定义了两个这样的存储过程,一个用于更新Region记录,另一个用于删除指定的Region记录。

(1)记录的更新

因为只能更新一个列,所以可以比较很简单地更新Region的记录操作。只需直接在SQL Server查询分析器中输入对应代码,即可实现存储过程处理。看下面的存储过程:

如果为数据库表执行更新命令,需要重复选择和返回已更新的记录。这个存储过程有两个输入参数@RegionID和@RegionDescription,对数据库执行UPDATE语句。

要在.NET代码中运行这个存储过程,需要定义一个SQL命令并执行这个指令,例如下面的代码:

在上述代码中,创建了一个新SqlCommand对象mm,并把它定义为一个存储过程。然后,依次添加每个参数,最后把存储过程的结果设置为UpdateRowSource枚举中的一个值。

该存储过程有如下两个参数。

978-7-111-36370-5-Part03-643.jpg要更新的Region记录的唯一主键码。

978-7-111-36370-5-Part03-644.jpg给这个记录的新描述。

创建好执行命令后,就可以用下面的命令来执行:

上述命令设置了每个参数的值,然后执行存储过程。命令参数可以像前面那样依次设置,或者按照名称来设置。

(2)记录的删除(www.xing528.com)

通过下面的存储过程,可以从数据库中删除一个Region记录。

上述过程只需要该记录的主键码值。

在下面的代码中,通过SqlCommand对象mm调用了上述存储过程。

上述命令只接收一个参数。

通过如下代码可以执行Regionshanchu存储过程:

2.调用返回输出参数的存储过程

上面的两个存储过程的执行结果都没有返回值。如果存储过程包含输出参数,则这些参数需要在.NET客户程序中定义,以便在过程返回时填充其输出参数。

Region表仅由一个主键码(RegionID)和描述字段(RegionDescription)组成。要插入一个记录,需要生成该数字主键码,再把新行插入到数据库中。这样可以通过在存储过程中创建一个主键码来简化主键码的生成。具体代码如下:

通过上述插入过程创建了一个新的Region记录,在数据库本身生成主键码值时,这个值作为输出参数从过程返回(@RegionID)。如果是比较复杂的表就通常不会使用输出参数,而是将整个行插入,把该行返回给调用者。看下面的代码:

第二个参数@RegionID定义为包含其参数定向,在这个示例中是Output。并且在最后一行使用了UpdateRowSource枚举来表示通过输出参数从这个存储过程返回的数据。当从一个DataTable中执行存储过程调用时,一般使用这个标志。

调用上述存储过程类似于前面的存储过程调用,但在上述代码中需要在执行完过程后读取输出参数,调用代码如下:

在执行完命令后,读取@RegionID参数的值,并把它的数据类型转换为整型

如果调用的存储过程返回输出参数和一组记录行,则可以在上述代码中定义合适的参数,而不需要调用ExecuteNonQuery(),而应该调用ExecuteReader()。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈