Sql Sereve存储过程及调用过程(详解)

Sql Sereve存储过程及调用过程(详解)一 创建数据表下图为表 custom 结构下图为表 department 结构 id 为外键 作为表 custom 中列 departID 的参考列 二 创建增删查改的存储过程 详细说明 1 创建增加数据的存储过程

大家好,欢迎来到IT知识分享网。

一、创建数据表

下图为表 custom 结构

Sql Sereve存储过程及调用过程(详解)

下图为表 department 结构(id为外键,作为表custom中列 departID的参考列)

Sql Sereve存储过程及调用过程(详解)

二、创建增删查改的存储过程(详细说明)

(1)创建增加数据的存储过程

     

Create Procedure Addcustom --全局变量也称为外部变量,是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。 --接收存入表中的数据 @cname nvarchar(50), @departid int, @age int, @ename nvarchar(50), @password nvarchar(50) --此处 as 不可以省略不写,指定过程要执行的操作 as --begin 和 end 是一对,不可以只写其中一个,但可以都不写 --表示复合语句的开始,结束 begin --执行SQL语句 insert into custom values (@cname,@departid,@age,@ename,@password) end

(2)创建删除数据的存储过程

Create Procedure Delcustom @id int as begin delete from custom where id=@id end

(3)创建查询数据的存储过程

Create Procedure Checkcustom --全局变量也称为外部变量,是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。 --接收存入表中的数据 @cname nvarchar(50), @departname nvarchar(50), @age int, @ename nvarchar(50), @password nvarchar(50) --此处 as 不可以省略不写,指定过程要执行的操作 as --begin 和 end 是一对,不可以只写其中一个,但可以都不写 --表示复合语句的开始,结束 begin --设置局部变量存储查询语句 --局部变量的定义:必须先用Declare命令定以后才可以使用,declare{@变量名 数据类型} --局部变量的赋值方法:set{@变量名=表达式}或者select{@变量名=表达式} --局部变量的显示:select @变量名 declare @sql varchar(MAX) declare @departid int set @sql='select * from custom where 1=1' --根据department中的departname来查询id值并赋给departid if(@departname !=' ') set @departid=(select id from department where departname=@departname) --执行SQL语句 if(@cname !=' ') --在连接数据库查询语句时,由于与字符串比较时需要加上双引号或单引号,因此需要在变量前后加上'''',否则会出错 --在判断是否为空值时,在sql 中的判断语句为 is not null 但由于在调用过程中无法传null值进来,当空值时赋值' '并判断是否为' ' set @sql = @sql + ' and cname = '+ ''''+ @cname+ '''' if(@ename !=' ') set @sql = @sql + ' and ename = '+ '''' + @ename+ '''' if(@password !=' ') set @sql = @sql + ' and password = '+ '''' + @password+ '''' if(@age > 0) --由于原本类型为int类型不能与字符串进行连接,因此需要使用cast(@age as varchar(10))进行类型转换 set @sql = @sql + ' and age = ' + cast(@age as varchar(10)) if(@departid>0) set @sql = @sql + ' and departId = ' + cast(@departid as varchar(10)) --执行并返回查询语句的结果 exec(@sql); end

(4)创建修改数据的存储过程

Create Procedure Altercustom --全局变量也称为外部变量,是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。 --接收存入表中的数据 @id int, @cname nvarchar(50), @departid int, @age int, @ename nvarchar(50), @password nvarchar(50) --此处 as 不可以省略不写,指定过程要执行的操作 as --begin 和 end 是一对,不可以只写其中一个,但可以都不写 --表示复合语句的开始,结束 begin --执行SQL语句 update custom set cname=@cname,departID=@departid,age=@age,ename=@ename,password=@password where id=@id end

三、调用存储过程

本次调用在VS2015 网页后台中调用

(1)引用连接操作数据库头文件

using System.Data.SqlClient;
using System.Data.Sql;
using System.Data;

(2)调用增加数据存储过程

//创建连接对象conn SqlConnection conn = new SqlConnection(); //设置连接sql字段(参数为:连接的服务器名 .为本地服务器;连接数据库名;用户名;密码) conn.ConnectionString = " Data Source =.; Initial Catalog = web; User ID = Jce; Password = "; //创建调用数据库指令调用存储过程参数为调用的(存储过程名称,连接对象) SqlCommand cmd = new SqlCommand("Addcustom", conn); //将指令类型设置为存储过程 cmd.CommandType = CommandType.StoredProcedure; //设置输入到存储过程的参数(但不能为null,当为null时认为无参数,自定义参数,空值时为"") string cname,id,ename,password; int age; //多值调用 //数据库指令cmd.Parameters中存放参数,只用Add添加多个参数 //SqlDbType设置相应的参数类型 //添加类型后使用.Value属性设置相应的参数值 cmd.Parameters.Add("@cname", SqlDbType.NChar).Value =cname; cmd.Parameters.Add("@departid", SqlDbType.Int).Value = id; cmd.Parameters.Add("@ename", SqlDbType.NChar).Value = ename; cmd.Parameters.Add("@password", SqlDbType.NChar).Value = password; cmd.Parameters.Add("@age", SqlDbType.Int).Value = age; //当将参数输入后执行过程 cmd.ExecuteNonQuery();

(3)调用删除存储过程

SqlConnection conn = new SqlConnection(); conn.ConnectionString = " Data Source =.; Initial Catalog = web; User ID = Jce; Password = "; //创建调用数据库指令调用存储过程参数为调用的(存储过程名称,连接对象) cmd = new SqlCommand("Delcustom", conn); int id; //将指令类型设置为存储过程 cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@id", SqlDbType.Int).Value = id; cmd.ExecuteNonQuery();

(4)调用查询存储过程

//创建连接对象conn SqlConnection conn = new SqlConnection(); //设置连接sql字段(参数为:连接的服务器名 .为本地服务器;连接数据库名;用户名;密码) conn.ConnectionString = " Data Source =.; Initial Catalog = web; User ID = Jce; Password = "; //创建调用数据库指令调用存储过程 SqlCommand cmd = new SqlCommand("Checkcustom", conn); //将指令类型设置为存储过程 cmd.CommandType = CommandType.StoredProcedure; string cname,departID,ename,password; int age; //将值传入存储过程的参数过程中,如果为判断是否为空时传入null时则认为无参数出错,传入""时在存储过程中无法判断,因此在存储过程中判断是否为" " //在判断条件输入框是否为空值时,判断是否="",而不判断是否=null if (cname == "") cmd.Parameters.Add("@cname", SqlDbType.NChar).Value = " "; else cmd.Parameters.Add("@cname", SqlDbType.NChar).Value = cname; if(ename()=="") cmd.Parameters.Add("@ename", SqlDbType.NChar).Value = " "; else cmd.Parameters.Add("@ename", SqlDbType.NChar).Value = ename; if(password=="") cmd.Parameters.Add("@password", SqlDbType.NChar).Value = " "; else cmd.Parameters.Add("@password", SqlDbType.NChar).Value = password; if(departID=="") cmd.Parameters.Add("@password", SqlDbType.NChar).Value = " "; else cmd.Parameters.Add("@departname", SqlDbType.NChar).Value = departID; cmd.Parameters.Add("@age", SqlDbType.Int).Value = age;cmd.ExecuteNonQuery(); SqlDataAdapter dr = new SqlDataAdapter(); dr.SelectCommand = cmd;DataSet ds = new DataSet(); //创建数据集;dr.Fill(ds); //填充数据集 this.GridView1.DataSource = ds;GridView1.DataBind(); //将数据源绑定到控件上 (5)调用修改数据存储过程 //创建连接对象conn SqlConnection conn = new SqlConnection(); //设置连接sql字段(参数为:连接的服务器名 .为本地服务器;连接数据库名;用户名;密码) conn.ConnectionString = " Data Source =.; Initial Catalog = web; User ID = Jce; Password = "; //创建调用数据库指令调用存储过程 SqlCommand cmd = new SqlCommand("Altercustom", conn); //将指令类型设置为存储过程 cmd.CommandType = CommandType.StoredProcedure; //多值调用 //数据库指令cmd.Parameters中存放参数,只用Add添加多个参数 //SqlDbType.NChar设置相应的参数类型 //添加类型后使用.Value属性设置相应的参数值 string cname,departID,ename,password; int age,id; cmd.Parameters.Add("@id", SqlDbType.Int).Value = id; cmd.Parameters.Add("@cname", SqlDbType.NChar).Value = cname; cmd.Parameters.Add("@departid", SqlDbType.Int).Value = departID; cmd.Parameters.Add("@ename", SqlDbType.NChar).Value = ename; cmd.Parameters.Add("@password", SqlDbType.NChar).Value = password; cmd.Parameters.Add("@age", SqlDbType.Int).Value = age;cmd.ExecuteNonQuery(); 

在上述代码中连接数据库的部分是重复的,因此对其进行封装简化代码
空字符串和null的区别
空字符串:已经分配了存储空间但没有存储内容
null:没有分配存储空间


 
         

































免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/141952.html

(0)
上一篇 2025-05-13 19:15
下一篇 2025-05-13 19:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信