曾经做过一个管理系统,说到管理系统,毫无疑问的离不开数据库的操作。由于没有什么项目的经验,菜鸟一个,所以在涉及到SQL语句时,没头没脑的就在服务器代码里面写了SQL语句(如下),然后再传送给服务器去执行,殊不知这样会大大增加数据库的解析执行压力。
SqlDataAdapter da1 = new SqlDataAdapter("Select * From Department", conn);
string insert = "Insert Regis(Name,UserName,Sex,Teacher,BirthDay,Tel,Email,OutTime,ClassNum,Department,Major,Job,Career,PostNum,OfficePhone,Province,City,Address,QQ,ColOrStudy,Plus) values (@Name,@UserName,@Sex,@Teacher,@BirthDay,@Tel,@Email,@OutTime,@ClassNum,@Department,@Major,@Job,@Career,@PostNum,@OfficePhone,@Province,@City,@Address,@QQ,@ColOrStudy,@Plus)";
虽然当时也认为这样写不好,可是却不知道怎么解决,今天上课时,讲师刚好讲到了这里,然后记录下来了,保存下来以后慢慢体会。
存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
很明显的,因为在运行存储过程之前,数据库已经对其进行了语法和句法分析,并给出了优化的执行方案,所以可以很快速的执行,而且另一方面,由于从业务逻辑层(服务器)在联系数据库的过程中,传送的字符串也大大减少,从而降低了网络的通信量。
一个用于更新的带参数存储过程如下:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[Student_AddWithParams] ----如果是创建存储过程则用 CREATE
(
@Name nvarchar(50),
@Pwd nchar(10),
@Teacher nvarchar(50),
@Email nvarchar(50),
@Age int ------参数列表
)
AS
BEGIN
INSERT INTO Student
(
[Name],
Pwd,
Teacher,
Email,
Age
)
VALUES
(
@Name,@Pwd,@Teacher,@Email,@Age ----要传递的参数
)
END
EXECUTE Student_AddWithParams 'lw','465546','C','fjsdkl@qq.com','22' ----执行上面的存储过程
以上是今天刚了解的,还是比较浅,对于SQL的流程控制,还有其他有关性能的,比如索引,数据库分页等等,明天上完课再行整理。