zoukankan      html  css  js  c++  java
  • .net 调用存储过程

    语言:C#

    一、调用带输入参数的存储过程

    首先自然是在查询分析器里创建一个存储过程喽~~   如下所示:

    create proc proc_1
    @uid int,
    @pwd varchar(255)
    as
    select UserName from users where uid = @uid and PassWord = @pwd
    go

    create proc proc_1 @uid int, @pwd varchar(255) as select UserName from users where uid = @uid and PassWord = @pwd go

      接下来我们就来看下如何在VS 2005中使用C#调用这个存储过程。

    方法一:

     代码如下:
    SqlConnection conn = new SqlConnection("server=(local);database=sql1;uid=sa;pwd=");
    conn.Open();//打开数据库连接
    SqlCommand cmd = new SqlCommand("exec proc_1 @uid=1,@pwd=admin", conn);//Command中写调用存储过程的语句
    //大家应该看出来了和直接在查询分析器中执行很类似,“exec 存储过程名 @参数1=参数值,@参数2=参数值”
    SqlDataReader sdr = cmd.ExecuteReader();//执行存储过程
    while (sdr.Read())
    {
        Response.Write(sdr["UserName"].ToString());//输出查询到的值
    }
    sdr.Close();
    conn.Close();

    方法二:

    复制代码 代码如下:
    SqlConnection conn = new SqlConnection("server=(local);database=sql1;uid=sa;pwd=");
    conn.Open();//打开数据库连接
    SqlCommand cmd = new SqlCommand("proc_1", conn);//存储过程名
    cmd.CommandType = CommandType.StoredProcedure;//设置命令类型为存储过程
    SqlParameter[] param = new SqlParameter[]{
       new SqlParameter("uid", SqlDbType.Int, 4),
       new SqlParameter("pwd", SqlDbType.VarChar,255),
    };//定义参数,这些是存储过程中要调用的参数,也可以通过直接使用cmd.AddWithValue方法添加参数
    param[0].Value = 1;//给参数赋值
    param[1].Value = "admin";
    cmd.Parameters.AddRange(param);//一定要记得将刚定义的参数添加到cmd的参数中,不然前面的参数就白弄了。
    string sname =(string)cmd.ExecuteScalar();//如果存储过程返回的是单个值,我们可以直接这样取出所要的值
    Response.Write(sname);
    sdr.Close();
    conn.Close();

    二、调用带输出参数的存储过程

    上面所讲的只是调用输入参数的存储过程,下面大概讲一下如何调用有输出参数的存储过程。

    首先,我们先对之前的存储过程修改一下,如下所示:

    复制代码 代码如下:
    create proc proc_1 @uid int, @pwd varchar(255), @UserName varchar(255) output --这里我们增加一个输出变量,记得加上output as select @UserName=UserName from users where uid = @uid and PassWord = @pwd go

    --以下是在查询分析器中调用的方法 declare @n varchar(255) --声明一个变量用来传递参数 exec proc_1 1,admin,@n output --注,要标记为output变量 print @n

    下面我们看看在VS.NET 中的调用方式:

    复制代码 代码如下:
    SqlConnection conn = new SqlConnection("server=(local);database=sql1;uid=sa;pwd=");
    conn.Open();
    SqlCommand cmd = new SqlCommand("proc_1", conn);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("uid", 1);
    cmd.Parameters.AddWithValue("pwd", "admin");
    cmd.Parameters.Add("username", SqlDbType.VarChar, 255);
    cmd.Parameters["username"].Direction = ParameterDirection.Output;//设置参数为输出参数
    cmd.ExecuteNonQuery();
    string sname = (string)cmd.Parameters["username"].Value;//获取输出参数的值
    Response.Write(sname);
    conn.Close();
  • 相关阅读:
    LeetCode链表解题模板
    c++中的new、operator new、placement new
    树的前序、中序、后续、层次遍历的递归和非递归解法
    c++Volatile关键词
    南大算法设计与分析课程OJ答案代码(5)--割点与桥和任务调度问题
    c++右值引用以及使用
    c++选择重载函数
    从4行代码看右值引用
    被遗忘的C结构体打包技术
    南大算法设计与分析课程OJ答案代码(4)--变位词、三数之和
  • 原文地址:https://www.cnblogs.com/nxxshxf/p/6408585.html
Copyright © 2011-2022 走看看