C#调用SQLServer存储过程


********************************
使用 C# 调用sqlserver存储过程
********************************

// 1. 创建 存储过程
create procedure proc_name
(
@para1 int,
@para2 varchar(20) output,
@para3 char(2)=default,
...
)
as
--执行的sql语句
go

// 2. 在 C#中 调用存储过程
//1.引入命名空间
using System.Data;
using System.Data.SqlClient;

//2.创建 数据库 连接字符串
// 使用 sa 身份登录
string connStr = @"Data Source=服务器名; Initial Catalog=数据库名; User ID=sa; Pwd=数据库_密码";
// 使用 windows身份 登录
string connStr = @"Data Source=服务器名; Initial Catalog=数据库名; Integrated Security=true";

//3.创建 sql 命令
string sql = "存储过程名称";
注:调用存储过程时,sql语句是所调用的存储过程的名称,否则就是你要执行的sql语句。
存储过程名称 前后不能有空格,否则报错:不能找到该存储过程。

//4.根据 数据库连接字符串 创建 数据库连接对象
SqlConnection conn = new SqlConnection(connStr);

//5.根据 数据库连接字符串和连接对象 创建 执行对象
SqlCommand cmd = new SqlCommand(sql,conn);

//6.设置 执行sql命令 的类型为:存储过程
cmd.CommandType = CommandType.StoredProcedure;

//7.为 带参数的存储过程 添加参数( 如果没有参数,可以省略 )
SqlParameter[] paras = new SqlParameter[]
{
// 输入参数
new SqlParameter("@参数名",value),
// 输出参数
new SqlParameter("@参数名",SqlDbType.数据类型,数据长度)
};
// 设置 第二个参数的方向:输出
paras[1].Direction = ParameterDirection.Output;

// 给 cmd(执行对象) 添加参数
cmd.Parameters.AddRange(para); //Add() 添加单个参数,AddRange() 添加多个参数

//8.打开 数据库
conn.Open();

//9.执行 sql命令
// 情况一:返回 存储过程中 *执行所有增、删、改语句* 所受影响的行数
int count = cmd.ExecuteNonQuery();

// 情况二:返回 存储过程中 *执行第一条查询语句* 所返回的结果集
SqlDataReader dr = cmd.ExecuteReader();

// 情况三:返回 存储过程中 *执行第一条查询语句* 所返回的第一行第一列的值
object obj = cmd.ExecuteScalar();

注:上面的 3个方法都会 把存储过程执行完毕,只是返回的结果不同而已。

//10.获取 输出参数的值( 如果没有输出参数,可以省略 )
object obj = paras[1].Value;
// 通过上面声明的SqlParameter[]元素的Value获取
//或者
// 通过cmd.Parameters[1].Value获取

//11.关闭数据库连接资源
注:可以使用 using 实现自动关闭。


注意:实际过程中,还需进行 异常捕获等。如:SQLException

数据库: a、存储过程的参数 可以不用括号括起来。
b、数据类型发生自动类型转换时,会向范围大的那个值的类型进行转换,需注意发生转换异常
如:select ‘123a‘+1 这里1的int类型,范围比‘123a‘的字符型大,所以系统会把‘123a‘
转换成int类型,但是‘123a‘无法转换成int,系统报错。

C#调用SQLServer存储过程,布布扣,bubuko.com

C#调用SQLServer存储过程

上一篇:EXECL文件导入数据库


下一篇:Java8特性大全(最新版)