c# 执行 sql service 的存储过程
数据库
/*创建数据库*/ create database QQDB /*|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/ /*使用数据库*/ use QQDB /*|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/ /*创建QQ用户信息表*/ create table Users ( qq int primary key identity(10000,1), --两个参数 --第一个标识种子(从1000开始递增) --第二个增量(步长) pwd varchar(36) not null check(len(pwd)>=6 and len(pwd)<=36), nickname nvarchar(12) default('匿名'), --nvarchar 可变长度 Unicode 数据 --Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。支持中文 caretetime datetime default(getdate()) --创建时间 ) /*|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/ /* 创建存储过程 --注册QQ号(系统提供) --成功:返回QQ号码 --数据库所有的物理结构创建都是 create,修改都是 alter,删除都是drop --procedure 简写 proc 【存储过程的三种参数】 --1.输入参数 input --2.输出参数 output --3.返回参数 return */ alter proc PROC_Register ( @nickname nvarchar(12), @pwd varchar(36), @caretetime datetime output ) as begin --插入 insert into users(pwd,nickname) values(@pwd,@nickname) declare @qq int select @qq=@@identity --返回qq select @caretetime=caretetime from users where qq=@qq return @qq end /*|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
测试存储过程
/* 执行存储过程 关键词 exec :全称 execute */ --1.声明变量 declare @qq int,@caretetime datetime --@qq变量:用于接受存储过程返回值 --2.执行 exec @qq=PROC_Register '李四7','123456',@caretetime output --3.打印结果 select @qq ,@caretetime /*|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
C# 调用 (测试是控制台程序)
static void Main(string[] args) { Register(); } public static void Register() { Console.WriteLine("----------用户注册界面-----------"); //Console.Write("请输入昵称:"); //string nickname = Console.ReadLine(); //Console.Write("请输入密码:"); //string password = Console.ReadLine(); string nickname ="cplvfx"; string password ="123456"; //操作数据库 using (SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=sa;database=QQDB")) { conn.Open();//打开数据库 SqlCommand command = new SqlCommand("PROC_Register", conn); command.CommandType = CommandType.StoredProcedure;//指明执行命令为存储过程 //处理参数 SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@nickname",nickname),//输入参数 new SqlParameter("@pwd",password),//输入参数 new SqlParameter("@caretetime",SqlDbType.DateTime), //输出参数 new SqlParameter("@qq",SqlDbType.Int)//返回值参数 }; paras[2].Direction = ParameterDirection.Output;//输出参数 paras[3].Direction = ParameterDirection.ReturnValue;//返回值参数类型 command.Parameters.AddRange(paras);//添加参数 int result = command.ExecuteNonQuery();//执行脚本 if (result > 0) { string caretetime = paras[2].Value.ToString(); string qq = paras[3].Value.ToString(); Console.WriteLine($"注册成功!您的QQ号码为:{qq},{caretetime}"); } Console.ReadKey(); } }
SQL Server数据库-存储过程(第二讲)
https://www.cnblogs.com/cplvfx/articles/10507951.html
qq:527592435