在机房收费系统过程中,试着使用了存储过程,离之前数据库的学习已经有些日子了。之前对于存储过程的了解也是听过而已,非常不清楚。因此,写这篇博客!
专业概念:存储过程是一个SQL语句和控制结构的集合,创建于数据库。简单的说,就是一组固定操作的SQL语句集合,类似于编程语言当中的函数或过程,可以通过名称直接调用。可以通过T-SQL语句和企业管理器创建。T-SQL语法如下:
CREATE PROCEDURE (创建储存过程)
CREATE PROCEDURE 存储过程名 (参数列表)
BEGIN
SQL语句代码块
END
在vb.net和存储过程的结合有两个非常明显的优点。一是,存储过程的执行速度快。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。二是,存储过程能够减少网络流量,这是因为调用存储过程只需要过程名和参数集合,而直接使用则需要向数据库传递大量的sql语句。另外,安全也是其优点之一,通过执行某一存储过程的权限分配,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。 同时也可以避免对数据库操作出现错误,因为它是预编译的。
vb.net中通过SqlClient.SqlCommand类来调用存储过程:
command = New SqlClient.SqlCommand(“存储过程名”, New SqlClient.SqlConnection(“连接字符串"))
command.Connection.Open()
command.CommandType = CommandType.StoredProcedure
command.Parameters.AddRange(参数集合)
command.ExecuteNonQuery()
其中command.executenoneQuery方法的返回值需要注意,对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1。
存储过程的使用可以优化代码结构,提高编程的灵活性。因为,我们通过存储过程把对数据库的操作独立出来。这符合了解耦和的思想,也符合线程的思想。即将任务划分为功能单一,明确的各个部分。这样也就更好的规避了数据库操作错误对软件的影响。