pdPubs.Connection = cnPubs; cmdUpdPubs.CommandType = CommandType.StoredProcedure; cmdUpdPubs.CommandText = "up_UpdatePublisherName"; // 为上面的SqlCommand对象添加必要的参数 cmdUpdPubs.Parameters.Add( "@pub_id", SqlDbType.Char, 4, "pub_id" ); cmdUpdPubs.Parameters.Add( "@pub_name", SqlDbType.VarChar, 40, "pub_name" ); SqlParameter updParam = new SqlParameter ( "@Original_pub_name", SqlDbType.VarChar, 40, "pub_name" ); updParam.SourceVersion = DataRowVersion.Original; cmdUpdPubs.Parameters.Add( updParam ); 3.指定SqlDataAdapter对象的UpdateCommand属性为上面定义的SqlCommand对象: daPubs.UpdateCommand = cmdUpdPubs; 4.添加方法UpdatePublisherName(): public void UpdatePublisherName( DataSet dsChanges ) { // 更新所有改动 daPubs.Update( dsChanges ); }
应用程序的业务逻辑类完善之后,在主窗体上添加一个名为“更新数据集”的按钮,并添加该按钮的事件响应函数如下:
private void button1_Click(object sender, System.EventArgs e) { if( ds.HasChanges() ) { pubs.UpdatePublisherName( ds.GetChanges() ); ds.Clear(); ds = pubs.GetPublisherInfo(); } }
到此为止,应用程序的业务逻辑类和主窗体类都已经更新完毕,现在的应用程序能根据用户的改用更新数据库中的相关内容了。运行程序如图5所示,你在更新了数据后还可以打开SQL Server中的相应表并验证数据有没有更新成功。
七.总结:
本文向大家介绍了存储过程的基本知识以及在.NET数据库应用程序中如何结合SqlDataAdapter对象、DataSet对象等构建数据驱动的应用程序。在本文中,我们运用到了两类存储过程:一类为简单的不带参数的存储过程,其运用方法相对容易;另一类为带有参数的存储过程,在调用该类存储过程时还得运用到SqlParameter对象。同时,我们不难发现将数据更新业务逻辑封装在存储过程中是一种很好的设计方法,它能提高应用程序的可管理性、可扩展性以及数据库的安全性。类似的,插入数据以及删除数据的业务逻辑也可以封装在存储过程中并以相似的方法在应用程序中被运用。最后,希望本文对大家有不少帮助。
上一页 [1] [2] |