作者:卞功鑫  ,转载请保留http://www.cnblogs.com/BinBinGo/p/6399847.html

            //1   连接字符串
string connectionString
= "server=127.0.0.1;integrated security=true;database=MSPetShop4";
// = "server=.;uid=sa;pwd=SQL@5;database=AdventureWorks2012";
// = "server=.;user id=sa;password=SQL@5;database=AdventureWorks2012";
//2 实例化数据库连接
System.Data.SqlClient.SqlConnection connection = new SqlConnection(connectionString); //也可以先实例化
//System.Data.SqlClient.SqlConnection connection = new SqlConnection();
//然后再设置ConnectionString 属性.
//connection.ConnectionString = connectionString; try
{
//3 打开连接
connection.Open();
Console.WriteLine("成功连接数据计库MSPetShop4");
//4 数据访问对象
//sql字符串存储过程 string sql = "p_proc_name";
/*
create proc p_proc_name (@pin INT ,@pout INT OUTPUT)
AS
delete FROM dbo.A
WHERE 客户='biangongxin'
SET @pout = @pin*100; */
//SqlCommand 表示数据库要执行的sql命令
System.Data.SqlClient.SqlCommand command = new SqlCommand(sql, connection);
//告知数据库现在要执行的是存储过程
//默认为标准SQL语句,可以不用设置.
command.CommandType = CommandType.StoredProcedure; //提供存储过程参数(传入参数) 这里的名称@pin和存储过程中的保持一致
System.Data.SqlClient.SqlParameter pin = new SqlParameter("@pin", System.Data.SqlDbType.Int);
//参数赋值
pin.Value = ;
//将上面的参数加入command中
command.Parameters.Add(pin); //提供存储过程参数(传出参数)这里的名称@pout和存储过程中的保持一致
System.Data.SqlClient.SqlParameter pout = new SqlParameter("@pout", System.Data.SqlDbType.Int); //声明为传出参数 Direction 参数方向 ,默认为传入参数 ParameterDirection.Input
pout.Direction = ParameterDirection.Output; //将上面的参数加入command中
command.Parameters.Add(pout); //ExecuteNonQuery 非查询语句
//默认工作在自动事务之下,直接提交
//执行sql DML 之前,手动开启
System.Data.SqlClient.SqlTransaction trans = connection.BeginTransaction();
//设置命令所属的事务管理
command.Transaction = trans;
int result = command.ExecuteNonQuery();
Console.WriteLine(result); //存储过程执行过之后,可以得到传出的参数(存储过程执行的时候,会把sql中的 output的这个参数的值赋值给C#中的 pout)
object obj = pout.Value; int p_result = Convert.ToInt32(obj); Console.Write("SQL命令已经提交,但是事务还未提交,是否继续执行(Y/N)");
string ans = Console.ReadLine();
//提交与否@pout值的返回值始终为1000,影响的只是 SQL的 DML操作
if (ans.Substring(, ).ToUpper() == "Y")
{ //提交事务
trans.Commit();
}
else
{
//回滚事务;
trans.Rollback();
} Console.WriteLine("存储过程p_proc_name,执行的结果为:{0}",p_result);
}
catch(System.Data.SqlClient.SqlException exception)
{
Console.WriteLine(exception.Message);
} finally
{
//4 注销连接
connection.Dispose();
Console.WriteLine("成功断开数据计库MSPetShop4");
}
Console.ReadLine();

最新文章

  1. 数据库基础,表及SQL语句
  2. HTML和CSS的复习总结
  3. An error I have completed recently
  4. explicit,violate,volatile,mutable小结
  5. HDU 1864
  6. 20141016--for 菱形
  7. jquery easyui中的formatter多用法
  8. 【原】AVAudio录制,播放 (解决真机播放音量太小)
  9. hbase region 分配方式
  10. 进口fbx角色动画read-only解
  11. java设计模式之二抽象工厂模式(Abstract Factory)
  12. yii2.0单文件上传和多文件上传
  13. Jenkins中集成python,支持参数生成Makefile文件
  14. myeclipse快捷键(转载)
  15. PyCharm链接服务器同步代码
  16. 2. Java面向对象之泛型-构造方法中使用
  17. 五、Pyqt5事件、信号和槽
  18. crontab计划不执行问题
  19. vue2入坑随记(一)-- 初始全家桶
  20. HttpHandler与HttpModule介绍

热门文章

  1. Collection接口中方法的使用
  2. scala函数等号省略
  3. Spring的两种动态代理:Jdk和Cglib 的区别和实现
  4. No MaterialLocalizations found (Flutter)
  5. LDAP服务器的概念和原理简单介绍
  6. a标签打开设置
  7. TestNG.xml参数配置-如何控制部分执行@test方法
  8. windows系统如何设置域名解析
  9. yii 生成条码并上传到图片服务器(zimg)
  10. javascript 对象的原型