IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> C#执行SQL Server的储存过程命令 -> 正文阅读

[大数据]C#执行SQL Server的储存过程命令

一、执行常规SQL语句

SqlConnection conn = new SqlConnection("连接字符串"); 
conn.Open();
//建立连接,并执行sql语句命令
SqlCommand cmd = new SqlCommand(SQLString, conn);
// 执行SQL语句,返回影响的记录数
res = cmd.ExecuteNonQuery();

二、执行储存过程

想执行储存过程命令,需要设置SqlCommand的CommandType类型,CommandType类型有两种:

1、cmd.CommandType = CommandType.Text;

SqlCommand(string cmdText, SqlConnection connection);中cmdText可以是"存储过程名称",也可以是“EXEC 存储过程名称”;CommandType.Text指定类型是SQL文本命令,要求必须符合sql语法,而在SqlServer中存储过程可以不加“EXEC”直接使用存储过程名称执行,也可以在名称前加“EXEC”;

如果存储过程有参数,必须带上参数,输出参数必须用OUTPUT标识,否则返回空值;

示例:

SqlConnection conn = new SqlConnection("连接字符串"); 
conn.Open();
//建立连接,并执行sql语句命令
string sqltxt="EXEC 储存过程名称 N'参数1',参数2,参数3";
SqlCommand cmd = new SqlCommand(sqltxt, conn);
cmd.CommandType = CommandType.Text;
// 执行SQL语句
res = cmd.ExecuteNonQuery();

补充:

ExecuteNonQuery()执行存储过程返回-1的原因:存储过程里设置了set nocount on,意思是打开不计数的开关;设置为set nocount off 就是计数,这样ExecuteNonQuery()就会返回一个大于或等于0的正数。

2、cmd.CommandType = CommandType.StoredProcedure;

SqlCommand(string cmdText, SqlConnection connection);中cmdText只能是“存储过程名称”;CommandType.StoredProcedure指定类型是存储过程名称,所以不能加EXEC,也不能加参数,也不能在存储过程名前出现空白;

    /// <summary>
    /// 存储过程的调用
    /// </summary>
    /// <param name="name">存储过程的名字</param>
    /// <param name="paras">需要传入的参数列表</param>
    /// <returns></returns>
        public DataTable ExecSql(string name, SqlParameter[] paras = null)
        {
            DataTable dt = new DataTable();
            try
            {
                //当连接处于打开状态时关闭,然后再打开,避免有时候数据不能及时更新
                if (conn.State == ConnectionState.Open)
                    conn.Close();
                conn.Open();
                SqlCommand cmd = new SqlCommand(name, conn);
                //给命令对象指定 要执行的是存储过程
                cmd.CommandType = CommandType.StoredProcedure;
                if (paras != null)
                {
                    //将参数列表添加到命令对象的参数列表中
                    cmd.Parameters.AddRange(paras);
                }
                SqlDataAdapter sda = new SqlDataAdapter(cmd);
                sda.Fill(dt);
            }
            catch (Exception)
            {
            }
            finally
            {
                conn.Close();
            }           
            return dt;
        }

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-24 18:15:37  更:2022-05-24 18:18:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:29:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码