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存储过程和自定义函数
新博客文章链接,欢迎大家评论探讨 概述 存储过程和存储函数是指存储在数据库中供所有用户程序调用的子程序叫存储过程.存储函数. 异同点: 存储过程和存储函数的相同点:完成特定功能的程序. 存储过程和存储 ...
随机推荐
- Android手势识别总结
一:首先,在Android系统中,每一次手势交互都会依照以下顺序执行. 1. 接触接触屏一刹那,触发一个MotionEvent事件. 2. 该事件被OnTouchListener监听,在其onTouc ...
- FastJson的用法
一.简单数据的序列化 pubic class UserInfo implements Serializable{ private String name; private int age; publi ...
- Html 定位position
CSS position属性和实例应用 目前几乎所有主流的浏览器都支持position属性("inherit"除外,"inherit"不支持所有包括IE8和 ...
- php调用js变量
<script> function tuichu(skp){ <?php $ok="skp"; echo "alert($ok)";//实验代 ...
- Swoole:重新定义PHP
Swoole PHP语言的高性能网络通信框架,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异 ...
- JavaScript对象属性的基础教程指南
JavaScript是使用“对象化编程”的,或者叫“面向对象编程”的.所谓“对象化编程”,意思是把JavaScript能涉及的范围划分成大大小小的对象,对象下面还继续划分对象直至非常详细为止,所有的编 ...
- IIS8中添加WCF支持几种方法小结[图文]
方法一 最近在做Silverlight,Windows Phone应用移植到Windows 8平台,在IIS8中测试一些传统WCF服务应用,发现IIS8不支持WCF服务svc请求,后来发现IIS8缺少 ...
- MySQL XtraBackup备份脚本
#backup.sh #!/bin/sh #on xtrabackup 2.1.8 # 第一次执行它的时候它会检查是否有完全备份,否则先创建一个全库备份 # 当你再次运行它的时候,它会根据脚本中的设 ...
- Recurrent Neural Network系列2--利用Python,Theano实现RNN
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- python属性查找(attribute lookup)
在Python中,属性查找(attribute lookup)是比较复杂的,特别是涉及到描述符descriptor的时候. 在上一文章末尾,给出了一段代码,就涉及到descriptor与att ...