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

 

posted @ 2019-03-10 23:11  橙-极纪元JJYCheng  阅读(767)  评论(0编辑  收藏  举报