c#访问存储过程
// 2015/07/04
// 访问存储过程
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient; namespace Ado.netstart_1
{
class Program
{
static void Main(string[] args)
{
// 特殊的字符串,数据库连接串
// 第一种
string connectionString = "server=.;database=BookSample;uid=LJK;pwd=123456;";
// 第二种
// windows身份验证
// 当使用windows身份验证的时候,windows用户就是运行程序的用户
// string connectionString = "server=.;integrated security=true;database=BookSample"; // 用来访问数据库的类
SqlConnection connection = new SqlConnection(connectionString); try
{
// 与数据库建立连接
connection.Open();
Console.WriteLine("已经建立连接"); // sql就是一个字符串
// 存储过程在数据库中有一个名字:execute 名字
// 现在的sql命令只需要存储过程的名字,不需要execute,也不需要参数 string sql = "output";
// SqlCommand 表示发送数据库执行SQL命令
// 现在sql已经不是标准的sql命令,而是一个存储过程
SqlCommand command = new SqlCommand(sql, connection);
// 通知数据库现在执行的是存储过程
// 如果没有设定那么默认为标准的存储过程
command.CommandType = CommandType.StoredProcedure; // 提供存储过程需要的参数
// 表示参数的类SqlParameter SqlParameter pEnd = new SqlParameter("@id", System.Data.SqlDbType.Int);
pEnd.Value = ; //现在存储过程有多了一个传出参数
SqlParameter result = new SqlParameter("@stuname",System.Data.SqlDbType.VarChar);
//默认情况下,Direction的值是传入参数
//现在是传出参数
result.Direction = ParameterDirection.Output; // 在执行存储过程的时候,将参数传递给存储过程
// 在存储过程之前,必须将需要的参数依次准备好
command.Parameters.Add(pEnd);
command.Parameters.Add(result); // 设置实际的参数值 // 将命令发送到数据库执行
// sql语句可分为:查询语句和非查询语句 // 默认工作在自动事务之下
// 如果工作在手动事务之下
// begin transaction
// rollback / commit // 在执行sql dml之前,启动事务
SqlTransaction trans = connection.BeginTransaction();//事务对象 // 设定命令所属的事务管理
command.Transaction = trans; //执行该存储过程对数据库中的行数没有影响
// int effectCount = command.ExecuteNonQuery();
// Console.WriteLine("{0} 行受影响", effectCount); //对于传出参数来说,必须在执行存储过程之后才能取得传出的值
//因为数据库中传出的值,可能是各种类型,所以,value 属性的类型是Object
String presult = (String)result.Value;
Console.WriteLine("pResult: {0}",presult); Console.Write("命令已经执行,事务还没有提交,你确定提交吗?Y/N");
string line = Console.ReadLine();
if (line.Substring(, ).ToUpper() == "Y")
{
trans.Commit();
Console.WriteLine("事务已经提交");
}
else
{
trans.Rollback();
Console.WriteLine("事务已经回滚");
}
}
catch (SqlException exception)
{
Console.WriteLine(exception.Message);
}
finally
{
// 或者断开与数据库的连接
connection.Dispose();
// connection.Close();
Console.WriteLine("已经断开连接");
}
Console.ReadKey();
}
}
}
c#访问存储过程的更多相关文章
- 关于JDBC访问存储过程的问题
最近开发一个应用,需要调用一个入参为List的存储过程. 存储过程为: proc_test(p1 OUT Number, p2 IN Number, p3 IN TAB_CUSTOMER); 这个Li ...
- [译]DbContext API中使用SqlQuery和ExecuteSqlCommand获取存储过程的输入输出参数
水平有限,欢迎指正.原文:http://blogs.msdn.com/b/diego/archive/2012/01/10/how-to-execute-stored-procedures-sqlqu ...
- LoadRunner调用Oracle存储过程
为了测试这个存储过程,我遥了一圈去做这个事情,这里说一下我自己接受到任务和自己开始是怎么想的. 方法一: 一开始我想着可以使用C#直接去调用存储过程,然后用Loadrunner调用C#的dll去测试, ...
- J2EE之oracle、mysql存储过程调用
最近几天在研究hibernate.JPA对存储过程的调用,主要是针对有返回结果集的存储过程的调用方法,个人感觉存储过程是个好东西,虽然说heibernate对数据访问封装的比较不错,再加上他的缓存机制 ...
- C#中使用Oracle存储过程返回结果集
问题: 在MSSQLServer中定义的存储过程可以直接返回一个数据集,如: create procedure sp_getAllEmployees as SELECT * FROM [NORTHWN ...
- SQLHelper.cs的经典代码-存储过程
using System; using System.Collections.Generic; using System.Text; using System.Collections; using S ...
- 一天一点MySQL复习——存储过程
一.存储过程概念 使用SQL编写访问数据库的代码时,可用两种方法存储和执行这些代码,一种是在客户端存储代码,并创建向数据库服务器发送的SQL命令(或SQL语句),比如在C#.Java等客户端编程语言中 ...
- 快速拥有各种数据访问SqlHelper
常加班食不按时,偶得清闲嘴溃疡. 美食一顿成泡汤,自此自认忙命人. 这就是此情此景的我,回来聊代码. 列举ADO.NET中的五个主要对象,并简单描述? 答:Connection连接对象,Command ...
- Oracle存储过程和自定义函数
新博客文章链接,欢迎大家评论探讨 概述 存储过程和存储函数是指存储在数据库中供所有用户程序调用的子程序叫存储过程.存储函数. 异同点: 存储过程和存储函数的相同点:完成特定功能的程序. 存储过程和存储 ...
随机推荐
- ubuntu16安装KVM
apt install qemu-kvm libvirt-bin apt install openvswitch-switch
- C# GridView Edit & Delete, 点击Delete的时候弹出确认框
1. 使用GridView自带属性ShowEditButton和ShowDeleteButton,均设为True <Columns> ... <asp:CommandField S ...
- 安卓能用的modebus CRC16计算,附上对应的C语言的CRC16(转)
源:安卓能用的modebus CRC16计算,附上对应的C语言的CRC16 “源”即是原文地址,想了解作都更多文章及思想请移步到“源”.转过只是为了本人感兴趣的文章查找方便. 正文: 最近写安卓串口通 ...
- STM32标准IIC驱动
IIC(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接 微控制器及其外围设备.也是目前很流行的通讯总线,使用IIC总线做产品能够很大 ...
- js 设置url 参数值
//设置url中参数值 function setParam(param,value){ var query = location.search.substring(1); var p = new Re ...
- 利用Selenium和Browsermob批量嗅探下载Bilibili网站视频
Rerence: http://www.liuhao.me/2016/09/20/selenium_browsermob_sniff_bilibili_video/ 日常生活中,用电脑看视频是非常频繁 ...
- python and or用法
and 和 or 是python的两个逻辑运算符,可以使用and , or来进行多个条件内容的判断.下面通过代码简单说明下and or的用法: 1. or:当有一个条件为真时,该条件即为真.逻辑图如 ...
- PHP检测获取内存信息
PHP也可以检测获取到Windows的内存信息,而且代码还挺简单,无意发现的,觉得以后能用上,在此与大家分享. 本代码将得到总内存.初始使用等内存信息: <?php echo "初始: ...
- linux下的5款桌面环境
以前都用Ubuntu,没有换过桌面环境,不会换,也担心换了不会(真是有病,担心用不习惯,还不如回去用windows) ubuntu 默认的是Unity,用过一段不长的时间,恩,说不出来有什么不好的,也 ...
- 如何在Windows Server 2016启用或关闭Internet Explorer增强的安全配置
一般我们安装完服务器后,开启 Internet Explorer 会发现无法上网或者上网内容被屏蔽掉了 问题的发生原因 在 Windows Server 2016 通常扮演重要的服务器角色,不应该用来 ...