知识大全 事务处理和命令

Posted

篇首语:案头见蠹鱼,犹胜凡俦侣。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 事务处理和命令相关的知识,希望对你有一定的参考价值。

C#高级编程:事务处理和命令  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    ——此文章摘自《C#高级编程(第 版)》定价 元 特价 元 购买

    事务处理

    通常 对数据库要进行多次更新 这些更新必须在事务处理的范围内进行 ADO NET中的事务处理首先要在数据库连接对象上调用BeginTransaction()方法 这些方法返回实现IDbTransaction接口的对象 而该对象是在System Data中定义的

    下面的代码序列是在Sql Server连接上开始事务处理的     string source = server=(local)\\\\NetSDK; + integrated security=SSPI; + database=Northwind ;    SqlConnection conn = new SqlConnection(source);    conn Open();    SqlTransaction tx = conn BeginTransaction();    // Execute some mands then mit the transaction    tx Commit();    conn Close();

    在开始一个事务处理时 可以选择在该事务处理中执行的命令独立级别 该级别确定了如何在一个数据库会话中查看在另一个数据库会话中所进行的修改 并不是所有的数据库引擎都支持表 所示的 个级别

 独 立 级 别  说    明  ReadCommitted  SQL Server默认级别 这个级别可以确保只有第一个事务处理结束后 在第二个事务处理中才能访问第一个事务处理写入的数据  ReadUnmitted   即使一个事务处理还没有处理完数据 也允许另一个事务处理从数据库中读取数据 例如 如果两个用户在访问同一个数据库 第一个用户插入一些数据 但没有完成事务处理(通过Commit或Rollback方法) 第二个用户把它们的独立级别设置为ReadUnmitted 因此可以访问数据 RepeatableRead 这个级别扩展了ReadCommitted级别 如果在事务处理中使用了相同的语句 无论是否有其他潜在的数据库更新 总是可以返回相同的数据 这个级别要求对数据进行额外的锁定 这会降低性能  这个级别可以保证 对于初始查询的每一行 都不会修改数据 但允许显示 假想(phantom) 行—— 这些行是在进行事务处理时 由另一个事务处理插入的全新数据行 Serializable 这是最 高级 的事务处理级别 对数据库中的数据进行序列化的访问 利用这种独立级别 不会显示假想行 所以在序列化的事务处理中使用的SQL语句总是检索相同的数据 序列化事务处理对性能的负面影响不应低估 如果肯定不需要这个独立级别 最好不要加上它

表 

    SQL Server的默认独立级别ReadCommitted是数据一致性和数据可用性的一种很好的折衷 因为它比RepeatableRead 或 Serializable模式中需要的数据锁定都少 但是 有时应提高独立级别 这样在 NET中 才能用一种非默认的级别开始事务处理 使用哪个级别没有硬性规则 全凭经验

    注意 如果当前使用的是不支持事务处理的数据库 应转而使用支持它的数据库 一旦我们成为可以完全信任的雇员 且拥有错误数据库的全部访问权限 就可能试键入id= 以删除对应的错误 但实际上输入的是<而不是= 此时会删除整个错误数据库 这可不是我们希望的 幸好I S 小组每天晚上都会备份该数据库 可以恢复它 但使用回滚命令会更简单

    命令

    在 节中简要介绍了针对数据库执行的命令 简言之 命令就是一个要在数据库上执行的SQL文本字符串 命令也可以是一个存储过程 或者返回表中所有列和所有行的表名(例如SELECT *样式的子句)

    把SQL子句作为一个参数传递给Command类的构造函数 就可以构造一个命令 如下   所示     string source = server=(local)\\\\NetSDK; + integrated security=SSPI; +database=Northwind ;    string select = SELECT ContactName CompanyName FROM Customers ;    SqlConnection conn = new SqlConnection(source);    conn Open();    SqlCommand cmd = new SqlCommand(select conn);

    <provider>Command类的属性CommandType可以定义某个命令是一个SQL子句 一个存储过程的调用 或者是一个完整的表语句(仅从给定的表中选择所有的列和行) 表 总结了CommandType枚举     

命 令 类 型样    例Text(默认)String select = SELECT ContactName FROM Customers ;SqlCommand cmd = new SqlCommand(select conn);StoredProcedureSqlCommandcmd=new SqlCommand( CustOrderHist conn);cmd CommandType = CommandType StoredProcedure;cmd Parameters Add( @CustomerID QUICK );TableDirectOleDbCommand cmd = new OleDbCommand( Categories conn);cmd CommandType = CommandType TableDirect;

表 

    在执行一个存储过程时 需要把参数传送给过程 上面的示例直接设置了参数@CustomerID 但设置参数的值还可以使用其他方式 详见本章的后面

cha138/Article/program/net/201311/14747

相关参考

知识大全 ASP.NET事务处理和异常处理

ASP.NET事务处理和异常处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!使用SQLTrans

知识大全 ASP.NET中的事务处理和异常处理

ASP.NET中的事务处理和异常处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 使用SQLTr

知识大全 事务处理概念和 MS DTC 概述 (简述)

MSSQLServer:事务处理概念和MSDTC概述(简述)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 开源技术分析:AOP和Spring事务处理

开源技术分析:AOP和Spring事务处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一为什

知识大全 dOOdad提供的数据绑定、特殊函数和事务处理

dOOdad提供的数据绑定、特殊函数和事务处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &

知识大全 hibernate的优化-事务处理

  事务概述  事务就是指作为单个逻辑工作单元执行的一组数据操作这些操作要么必须全部成功要么必须全部失败以保证数据的一致性和完整性事务具有ACID属性  原子性自然界最小的事务的内容要么都做要么都不做

最早提出立法权、行政权和处理外交事务权力分属议会和君主的是__

最早提出立法权、行政权和处理外交事务权力分属议会和君主的是_____A、霍布斯B、洛克C、伏尔泰D、孟德斯鸠答案:B解析:英国哲学家洛克最早提出三权分立学说,认为国家权力有三种:立法权、行政权和处理外

知识大全 轻松处理命令行参数

  轻松处理命令行参数        作者翻译Java研究组织-公飞    TuesdayApril:PM    你能够轻松地使用java标准的传递标志的方式获得一个简单且功能强大的命令行应用事实上传

知识大全 ASP.NET里的事务处理

ASP.NET里的事务处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  事务是一组组合成逻辑工

知识大全 Spring+Ibatis+事务处理

Spring+Ibatis+事务处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  applic