加入收藏
联系我们
关于我们
 您现在的位置: 亿聪 >> 网络学院 >> 网络编程 >> 数据库 >> 正文  
  SQL存储过程在.NET数据库中的应用       ★★★
SQL存储过程在.NET数据库中的应用
[ 作者:王凯明    转贴自:CCID    点击数:15362    更新时间:2003/8/26    文章录入:亿聪 ]


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

public Publishers()
{
try
{
// 创建一个数据库连接对象
cnPubs = new SqlConnection( "server=localhost;integrated 
security=true;database=pubs" );
// 创建一个SqlCommand对象,并指明其命令类型为存储过程
cmdPubs = new SqlCommand();
cmdPubs.Connection = cnPubs;
cmdPubs.CommandType = CommandType.StoredProcedure;
cmdPubs.CommandText = "up_GetPublisherInfo";
// 创建一个SqlDataAdapter对象,设定其SelectCommand属性为上面的SqlCommand对象
daPubs = new SqlDataAdapter();
daPubs.SelectCommand = cmdPubs;
// 创建一个DataSet对象
dsPubs = new DataSet();
}
catch( Exception ) {}
}


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

public DataSet GetPublisherInfo()
{
// 调用SqlDataAdapter对象的Fill()方法并返回数据集对象
daPubs.Fill( dsPubs );
return dsPubs;
}


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

private Publishers pubs;
private DataSet ds;

之后,修改主窗体类的构造函数如下:
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
pubs = new Publishers();
ds = pubs.GetPublisherInfo();
dataGrid1.DataSource = ds.Tables[0];
}


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



图4


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

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

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

SqlParameter updParam = new SqlParameter( "@pub_id", SqlDbType.Char, 4 );

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

oParam.Direction = ParameterDirection.Output;

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

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

上一页  [1] [2] [3] [4] [5]  下一页

  • 上一篇文章: 精妙SQL语句

  • 下一篇文章: 从数据表中取出第n条到第m条的记录的方法
  • 发表评论】【告诉好友】【打印此文】【关闭窗口
     最新5篇热点文章
  • Knoppix 4.0.2 免硬盘免安…[15098]

  • 通过ASP记录进行分页[19286]

  • ASP开发准则[11237]

  • ASP组件指南[11208]

  • ASP指南[11221]

  •  
     最新5篇推荐文章
  • Knoppix 4.0.2 免硬盘免安…[15098]

  • 如何让Win 2003系统更加安…[12464]

  • Nero超刻简明教程[33945]

  • PS商业实战-来杯茶,行吗?…[7083]

  • ASP深度揭密(下)[12213]

  •  
     相 关 文 章
    没有相关文章

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论
    设为首页 | 加入收藏 | 关于我们 | 联系我们 | 友情链接 | 版权声明 | 管理登录
    Copyright © 2000-2022 Yicong.com.All Rights Reserved.
    亿聪 版权所有 E-mail: