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存储过程和自定义函数
新博客文章链接,欢迎大家评论探讨 概述 存储过程和存储函数是指存储在数据库中供所有用户程序调用的子程序叫存储过程.存储函数. 异同点: 存储过程和存储函数的相同点:完成特定功能的程序. 存储过程和存储 ...
随机推荐
- UVa 543 - Goldbach's Conjecture
题目大意:给一个偶数,判断是否是两个素数的和. 先用sieve方法生成一个素数表,然后再进行判断即可. #include <cstdio> #include <vector> ...
- uWSGI参考资料(1.0版本的配置选项列表)
Reference: http://blog.csdn.net/kevin6216/article/details/15378617 uWSGI参考资料(1.0版本的配置选项列表) 下面的内容包含了大 ...
- Intel X710网卡VxLAN offload 性能测试
Intel X710网卡VxLAN offload性能测试 1. 测试环境参数: 交换机:盛科E580 服务器: Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz ...
- 详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
http://www.jb51.net/article/70415.htm 含Grunt系列教程 这篇文章主要通过两种方案详解Grunt插件之LiveReload实现页面自动刷新,需要的朋友可以 ...
- HTML5学习笔记一:与html4的区别(整合)
一 语法的改变 1.1 HTML5中标记方法 1.内容类型(ContentType):扩展符仍为“.html”或".htm",内容类型仍是“text/html”. 2.DOCTYP ...
- 移动App Crash的测试用例设计
一些通用的触发移动App Crash的测试场景,如下: 1. 验证在有不同的屏幕分辨率, 操作系统 和运营商的多个设备上的App行为. 2. 用新发布的操作系统版本验证App的行为. 3. 验证在如隧 ...
- jQuery按键事件响应的Demo
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- dbf导入sqlserver的方法
1. dbf导出为foxpro2.x. 2.打开excel,点击打开,选择dbase文件,选中第一步保存的文件. 3.另存为xls格式 4.使用sql的dts导入xls.
- JWPlayer支持SD/HD
First, we have to render two versions of our video: an SD (standard definition) and HD (high definit ...
- FMS4中的P2P功能
在fms4以前Adobe只允许在stratus中才能使用p2p功能.令人高兴的是,在最新发布的fms4中,p2p功能已经集成进来了,这将给实时视频类的应用带来更高的效率,adobe这次很给力! 为了使 ...