数据库之存储过程

什么是存储过程?使用存储过程的优缺点?

存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库(经过第一次编译后再次调用不需要再次编译)。


注意:用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。

如下为ASP.NET更新事件处理,使用Command对象修改数据库中的数据,展示指定存储过程及给参数。

 1  protected void btn_Update_Click(object sender, EventArgs e)
 2     {
 3         int intUpdateCount;  //记录修改次数
 4 
 5         SqlCommand sqlCommand = new SqlCommand();
 6         SqlConnection conn = CreateConnection();
 7         sqlCommand.Connection = conn;
 8         sqlCommand.CommandText = "update_student";  //将存储过程名称赋给Command对象的CommandText属性
 9 
10         /*---------说明命令类型为存储过程--------*/
11         sqlCommand.CommandType = System.Data.CommandType.StoredProcedure;
/*-----------------------------------*/
12 sqlCommand.Parameters.AddWithValue("@No", TextBox1.Text); 13 sqlCommand.Parameters.AddWithValue("@Name", TextBox2.Text); 14 sqlCommand.Parameters.AddWithValue("@Sex", DropDownList1.Text); 15 sqlCommand.Parameters.AddWithValue("@birth", TextBox3.Text); 16 sqlCommand.Parameters.AddWithValue("@Address", TextBox4.Text); 17 sqlCommand.Parameters.AddWithValue("@Photo", FileUpload1.FileName); 18 19 try 20 { 21 conn.Open(); 22 intUpdateCount=sqlCommand.ExecuteNonQuery(); 23 if (FileUpload1.HasFile == true) 24 { 25 FileUpload1.SaveAs(Server.MapPath(("~/images/") + FileUpload1.FileName)); 26 } 27 if (intUpdateCount > 0) 28 Label1.Text = "修改记录成功!"; 29 else 30 Label1.Text = "该记录不存在!"; 31 }catch(Exception ex) 32 { 33 Label1.Text = "错误原因:" + ex.Message; 34 } 35 finally 36 { 37 sqlCommand = null; 38 conn.Close(); 39 conn = null; 40 } 41 }

使用存储过程的优缺点?

优点:

(1)减少网络通信量。

调用一个行数不多的存储过程与直接调用SQL 语句的网络通信量可能不会有很大的差别,可是如果存储过程包含上百行SQL 语句,那么其性能绝对比一条一条的调用SQL 语句要高得多。

(2)执行速度更快。

首先,在存储过程创建的时候,数据库已经对其进行了一次解析和优化。其次,存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可直接从内存中调用。

(3)更强的适应性。

由于存储过程对数据库的访问是通过存储过程来进行的,因此数据库开发人员可以在不改动存储过程接口的情况下对数据库进行任何改动,而这些改动不会对应用程序造成影响。

(4) 分布式工作。

应用程序和数据库的编码工作可以分别独立进行,而不会相互压制。

缺点:

1.如果更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新 GetValue() 调用,等等,这时候估计比较繁琐了。

2.可移植性差

由于存储过程将应用程序绑定到 SQL Server,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。

你可能感兴趣的:(数据库之存储过程)