c#

位置:IT落伍者 >> c# >> 浏览文章

SQL存储过程在.NET数据库中的应用(2)


发布日期:2023年09月24日
 
SQL存储过程在.NET数据库中的应用(2)

五.创建简单存储过程的数据库应用程序

下面我们就运用上述的不带参数的存储过程来一个数据库应用程序其中还用到了ADONET中的SqlDataAdapter对象以及DataSet对象其中的SqlDataAdapter对象作为SQL Server数据库和DataSet对象的桥梁将两者联系在一起SqlDataAdapter对象包含了两个常用的方法Fill()方法和Update()方法其中的Fill()方法能从数据库中获取相应数据并填充到DataSet对象中而Update()方法顾名思义就是更新数据集的意思了在调用Fill()方法以前我们必须设置好SqlDataAdapter对象的SelectCommand属性该属性其实是一个SqlCommand对象SelectCommand属性中包含有效的SQL语句并能据此从数据库中获取相应数据并填充到DataSet对象中

首先我们创建一个Windows Forms应用程序编程语言为C#在Visual StudioNET中创建一个新的项目后给该项目添加一个新的类-Publishers类该类封装了连接到后台数据库并获取数据集对象的业务逻辑步骤如下

.添加必要的命名空间引用using SystemDataSqlClient;

.给该类添加如下一些必要的变量

.在该类的构造函数中完成连接后台数据库获取SqlDataAdapter对象等业务逻辑

.最后为该类提供一个GetPublisherInfo()方法该方法用SqlDataAdapter对象填充DataSet对象并返回填充后的DataSet对象方法如下(值得注意的是SqlDataAdapter对象会隐式地打开数据库连接并在获取数据后隐式地关闭连接这就是说DataSet对象是工作在非连接模式下的而当你显式地打开数据库连接并获取数据后SqlDataAdapter对象并不会将该连接关闭)

完成Publishers类的设计后我们给主窗体添加一个DataGrid控件并用它来显示DataSet对象中的数据首先给主窗体类添加如下成员变量

这样该应用程序一启动主窗体的DataGrid控件中便显示了运用上述不带参数的存储过程从Pubs数据库中获取的相应数据程序运行图示如下

六.创建带参数的存储过程的数据库应用程序

上面我们创建了一个不带参数的存储过程的应用程序下面我们就来创建一个更加复杂的数据库应用程序在实际的数据库应用中我们往往需要获取数据并更新插入或删除数据这时我们就需要用到带有参数的存储过程了同时在运用SqlDataAdapter对象时我们会调用它的Update()方法该Update()方法会自动根据DataSet对象中的DataTable对象内各条记录的变化情况完成相应操作SqlDataAdapter对象还包含了UpdateCommandInsertCommandDeleteCommand等属性这些属性其实都是SqlCommand对象Update()方法会根据操作的类型选用相应的属性

在运用带有参数的存储过程建立数据库应用程序时我们一般都要用到SqlParameter类该类封装了各种与Sql参数相关的属性和方法其中的属性包括了ParameterNameSqlDBTypeDirectionSizeValueSourceColumn以及SourceVersion等其中ParameterNameSqlDBTypeDirectionSize等属性是用于匹配存储过程中定义的参数的比如下面定义的SqlParameter对象就是用来匹配前面定义的up_UpdatePublisherInfo存储过程中的@pub_id参数的

SqlParameter updParam = new SqlParameter( @pub_id SqlDbTypeChar );

在上面的定义中虽然Direction属性没有明确地给出但是它的默认值为Input所以也就满足了我们的需要而如果一个SqlParameter对象的Direction属性为InputOutput或Output或ReturnValue那么其Direction属性就必须明确地说明了比如下面的代码就明确地声明了一个SqlParameter对象的Direction属性为Output

oParamDirection = ParameterDirectionOutput;

其中的SourceColumn属性是用于匹配一个DataTable对象中的DataColumn对象的这种匹配能在调用Update()方法更新DataTable对象时隐式地导入所需的SqlParameter对象如果在定义时没有声明该属性那么你必须在代码中显式地说明SqlParameter对象的SourceColumn属性

其中的SourceVersion属性的默认值是DataRow对象相应字段中的当前值也就是要更新到数据库中的值当然SourceVersion属性也可以指向DataRow对象相应字段中的原始值也即从数据库中获取的初始值在数据库事务处理系统中数据的同步性问题非常重要下面我们来建立一个能检测数据同步性的存储过程

接着我们在上面的应用程序中调用该存储过程以更新发行商的名称首先在原有应用程序的基础上完善其业务逻辑类-Publishers类

应用程序的业务逻辑类完善之后在主窗体上添加一个名为更新数据集的按钮并添加该按钮的事件响应函数如下

到此为止应用程序的业务逻辑类和主窗体类都已经更新完毕现在的应用程序能根据用户的改用更新数据库中的相关内容了运行程序如图所示你在更新了数据后还可以打开SQL Server中的相应表并验证数据有没有更新成功

七.总结

本文向大家介绍了存储过程的基本知识以及在NET数据库应用程序中如何结合SqlDataAdapter对象DataSet对象等构建数据驱动的应用程序在本文中我们运用到了两类存储过程一类为简单的不带参数的存储过程其运用方法相对容易另一类为带有参数的存储过程在调用该类存储过程时还得运用到SqlParameter对象同时我们不难发现将数据更新业务逻辑封装在存储过程中是一种很好的设计方法它能提高应用程序的可管理性可扩展性以及数据库的安全性类似的插入数据以及删除数据的业务逻辑也可以封装在存储过程中并以相似的方法在应用程序中被运用最后希望本文对大家有不少帮助

源代码文件下载StoredProczip

上一篇:C#的OLE DB方式SQL Server编程

下一篇:如何使用.NET和VB编程创建SQL Server