数据库原理并发控制问题

数据库原理并发控制问题,第1张

首先我们必须添加引用(dll在安装文件的目录中)

using SystemData;

using MicrosoftPracticesEnterpriseLibraryData;

下面列出一些模块常用的获取数据、更新数据方法,其中有一些和直接使用ADONET中的方法很相似:

方法

功能

ExecuteDataset,创建,加载,返回数据集

LoadDataSet,加载数据到一个已经存在的数据集

TransactionScope,支多项事务同时执行,一旦发生异常则会回滚所有 *** 作

填充一个数据集,使用数据集更新数据库

ExecuteReader,创建,返回一个provider独立的DbDataReader实例

从数据库读取多行数据

ExecuteNonQuery,执行command,返回数据库受影响的行数,可以通过output返回多个值

ExecuteScalar,执行command,返回单个值第一行第一列的值

执行command数据库命令对象

ExecuteSproAccessor,使用存储过程返回一个客户端可以查询的序列对象

ExecuteSqlStringAccessor,使用SQL语句返回一个客户端可以查询的序列对象

以序列对象的形式返回数据

ExecuteXmlReader,返回xml格式的数据,xmlReader类型,这个只能用在SQL Server数据库,通过SqlDatabase类调用,Database类中没有这个方法。

获取xml格式数据(只能用在SQL Server数据库)

GetStoredProcCommand,返回一个存储过程的数据库command对象

GetSqlStringCommand,返回一个SQL语句的数据库command对象

创建一个Command对象

AddInParameter,创建一个新的input参数,并且加入command的参数集合

AddOutParameter,创建一个新的output参数,并且加入command的参数集合

AddParameter,创建一个指定类型的参数,并且加入command的参数集合

GetParameterValue,以Object类型返回指定参数的值

SetParameterValue,给指定参数赋值

处理command的参数

CreateConnection,创建,返回当前数据库的连接,允许你通过这个链接初始化和管理数据库事务

处理数据库事务

下面我们通过案例来演示以上常用的方法的使用:

1、 首先我们来编辑配置文件:

在菜单栏中选定Blocks>Add Data Setting来添加数据库的类型和连接字符串

[转载]如何使用微软企业库对数据库的访问

name

由应用程序访问的数据库实例的逻辑名称。在节中,名称必须是唯一的。此属性是必须的。

providerName

提供程序的名称。默认情况下,提供程序的名称定义在 Machineconfig 文件中。providerName 名称必须是一个在 DBProviderFactory 类中指定的提供程序的名称。此属性是必须的。

connectionString

可用于被选的提供程序的连接字符串,此属性是必须的。

首先我们实例化一个DataBase

private static Database db = DatabaseFactoryCreateDatabase("Test");

1 ExecuteDataset:创建,加载,返回数据集,ExecuteScalar返回单个值第一行第一列的值

string sql = "select from [User]";

DbCommand com = dbGetSqlStringCommand(sql);

//执行并返回数据集

rptTestDataSource = dbExecuteDataSet(com)Tables[0];

rptTestDataBind();

[转载]如何使用微软企业库对数据库的访问

2 LoadDataSet,加载数据到一个已经存在的数据集

private void LoadDataSet()

{

DataSet table;

string sql = "select from [User]";

DbCommand com = dbGetSqlStringCommand(sql);

DbCommand com1 = dbGetSqlStringCommand(sql);

table = dbExecuteDataSet(com1);

// 执行com 并将所得到得结果追加的数据集table中

dbLoadDataSet(com, table, "table");

rptTestDataSource = tableTables["table"];

rptTestDataBind();

}

[转载]如何使用微软企业库对数据库的访问

3.ExecuteReader,创建,返回一个provider独立的DbDataReader实例

private void ExecuteReader()

{

string sql = "select from [User]";

DbCommand com = dbGetSqlStringCommand(sql);

IDataReader read = dbExecuteReader(com);

Label1Text=" <div class='left title'> 姓名</div>

<div class='right title'> 邮箱</div>

<div style='clear: both; width:200px'>";

while (readRead())

{

//获取该列的所有信息

object[] values = new object[3];

readGetValues(values);

Label1Text += "<div class='left'>" + values[0]ToString() + "</div>" + "<div class='left'>" + values[2]ToString() + "</div> ";

}

Label1Text += "</div>";

readClose();

}

[转载]如何使用微软企业库对数据库的访问

4 ExecuteScalar,执行command,返回单个值第一行第一列的值

string sql = "select from [User]";

DbCommand com = dbGetSqlStringCommand(sql);

blText = stringFormat("第一行第一列的数据:{0}", dbExecuteScalar(com)ToString());

[转载]如何使用微软企业库对数据库的访问

5 GetSqlStringCommand方法用于 SQL 文本命令

protected void Page_Load(object sender, EventArgs e)

{

select();

}

private void getSqlStringCommand(string sqlQuery)

{

//GetSqlStringCommand方法的使用

DbCommand com = dbGetSqlStringCommand(sqlQuery);

dbExecuteNonQuery(com);

select();

}

//为了区别添加数据跟已有数据区分开来

private static int ID = 0;

//插入数据

protected void Insert_Click(object sender, EventArgs e)

{

getSqlStringCommand("insert[User] values('江苏迈瑞" + (ID++)ToString() + "'," + "'>

MySQL 事务

什么是事务?

MySQL 事务主要用于处理 *** 作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库 *** 作语句就构成一个事务!

在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。

事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。

事务用来管理 insert,update,delete 语句

一般来说,事务是必须满足4个条件(ACID):原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

原子性:一个事务(transaction)中的所有 *** 作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。

持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT *** 作。因此要显式地开启一个事务务须使用命令 BEGIN 或 START TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动提交。

from 树懒学堂 - 一站式数据知识平台

以上就是关于数据库原理并发控制问题全部的内容,包括:数据库原理并发控制问题、mysql关于事物的常识、数据库详解之事务等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10189046.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存