求用c#编程实现从xml文件中恢复的数据库

求用c#编程实现从xml文件中恢复的数据库,第1张

没有你想的那么复杂,表跟xml之间是可以互相转换的不过要通过dataTableDataSet来转换

DataSet ds = new DataSet();

dsTablesAdd(youTbl);

以下是代码实现:

#region GetDataSetFromXml

/// <summary>

/// 由xml字符串值获取数据

/// </summary>

/// <param name="xmlValue">xml</param>

/// <returns>数据集</returns>

public static DataSet GetDataSetFromXml(string xmlValue)

{

XmlDocument xmlData = new XmlDocument();

xmlDataLoadXml(xmlValue);

XmlTextReader reader = new XmlTextReader(new StringReader(xmlDataOuterXml));

DataSet ds = new DataSet();

dsReadXml(reader);

return ds;

}

#endregion

#region GetXmlValueFromDataSet

/// <summary>

/// 由数据集获取xml字符串值

/// </summary>

/// <param name="dsValue">数据集</param>

/// <returns>xml字符串值</returns>

public static string GetXmlValueFromDataSet(DataSet dsValue)

{

if (dsValue == null || dsValueTablesCount <= 0)

{

return stringEmpty;

}

else

{

return dsValueGetXml();

}

}

#endregion

事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库 *** 纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。

事务的提交是指事务里的所有 *** 作都正常完成。

事务的回滚是指程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。

扩展资料:

事务的特征:

事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。

1、原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸 *** 作要么都做,要么都不做。

2、一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的 *** 作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

4、持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他 *** 作或故障不应该对其有任何影响。

参考资料来源:百度百科-事务

参考资料来源:百度百科-回滚

1 把数据库中的数据通过DataAdapter对象填充DataSet。

这种是在数据库程序开发过程中最常用到的数据填充方式。使用这种方式主要用到DataAdapter对象的Fill和FillSchema两种方法来对数据集进行填充。下面开始详细讲解如何将数据从数据库加载到DataSet中。

DataAdapter填充DataSet的过程分为二步:首先通过DataAdapter的SelectCommand属性从数据库中检索出需要的数据。SelectCommand其实是一个Command对象。然后再通过DataAdapter的Fill方法把检索来的数据填充DataSet。步骤 *** 作如下:

1) 启动Visual StudioNET。

2) 在Visual C#NET中新建一个“ASPNET网站”项目。Visual Studio NET会自动创建一个名称为:Defaultaspx的页面。

3) 在Defaultaspxcs代码界面中确保网页引用System 和 SystemData 这两个命名空间,这两个命名空间在创建的时候是默认存在的。

4) 除了System、SystemData这两个命名空间,还需要SystemDataSqlClient命名空间。可以使用using语句来引用这个命名空间。这样做得好处是,在后面的代码中就不需要在这些命名空间中限定声明了。实现代码如下所示:

//引用命名空间

using System;

using SystemData;

using SystemDataSqlClient;

5) 既然要从数据库中获取数据,那么第一步就是建立数据库连接,这需要一个SqlCommand对象和一个连接字符串。下面代码中的连接字符串连接着位于本地计算机(运行这些代码的计算机)上的 SQL Server 服务器。您必须根据环境相应地修改该连接字符串。创建 SqlConnection 对象后,请调用该对象的 Open 方法以建立实际的数据库链接。实现代码如下所示:

string sConnectionString; //声明一个字符串

//连接数据库字符串

sConnectionString = " Data Source=;Initial Catalog=Northwind;User ID=sa; ";

//创建SqlConnection数据库连接对象

SqlConnection Conn = new SqlConnection(sConnectionString);

//打开Conn

ConnOpen();

6) 接下来需要创建一个DataAdapter对象,它表示数据库和DataSet对象之间的链接。它的作用就相当于在数据库和DataSet对象建立一座桥梁供数据通过。 您可以将 SQL 或另一类型的用于检索数据的命令指定为 DataAdapter 的构造函数对象的一部分。下面的示例使用了一个 SQL 语句从Northwind数据库的Customers表检索记录。实现代码如下所示:

SqlDataAdapter Customer = new SqlDataAdapter("Select From Customers", Conn);

7) 必须声明并创建 DataSet 对象的一个实例,此时您应为整个 DataSet 提供一个名称,然后才能开始加载任何数据。该名称可包含若干独立的表。实现代码如下所示:

DataSet ds = new DataSet();

8) 在SqlDataAdapter类中提供了两种数据集填充方法。一种是Fill方法,另一种是 FillSchema方法。这两种方法均可将信息加载到DataSet中。不同的是Fill方法加载数据本身,而FillSchema方法加载有关特定表的所有可用的元数据(如列名、主键和约束)。处理数据加载的正确方式是先运行FillSchema,后运行Fill。实现代码如下所示:

CustomerFillSchema(ds,SchemaTypeSource,"Customers"); CustomerFill(ds,"Customers");

其实在很多时候只使用Fill也能实现数据填充功能,则只能加载描述列名和数据类型所需要的基本元数据。Fill方法不能加载主键信息,不过这种方法已经可以满足日常软件开发的需要了。实现代码如下所示:

CustomerFill(ds,"Customers");

9) 这些数据此时作为DataSet的Tables集合内独立的DataTable对象来提供。如果您在对FillSchema和Fill的调用中指定了一个表名,则可以使用该名称访问您需要的特定表。

DataTable tblCustomers; //创建一个DataTable数据表

//将这个创建的数据表

tblCustomers = dsTables["Customers"];

10) 下面使用Foreach循环把DataTable中的“CompanyName”列依次通过探出对话框显示出来。实现代码如下所示:

//以行为基准做循环

foreach (DataRow drCurrent in tblCustomersRows)

{

//在d出对话框的形式显示出来CompanyName烈的数据信息

ResponseWrite("<script>alert('" + drCurrent["CompanyName"]ToString() + "')</script>");

}

11) 保存项目。这样就完成了一个简单的数据集填充 *** 作。

下面给给出全部代码:

string sConnectionString; //声明一个字符串

//连接数据库字符串

sConnectionString = " Data Source=;Initial Catalog=Northwind;User ID=sa; ";

//创建SqlConnection数据库连接对象

SqlConnection Conn = new SqlConnection(sConnectionString);

//打开Conn

ConnOpen();

SqlDataAdapter Customer = new SqlDataAdapter("Select From Customers", Conn);

DataSet ds = new DataSet();

//填充数据集

CustomerFill(ds, "Customers");

DataTable tblCustomers; //创建一个DataTable数据表

//将这个创建的数据表

tblCustomers = dsTables["Customers"];

//以行为基准做循环

foreach (DataRow drCurrent in tblCustomersRows)

{

//在d出对话框的形式显示出来CompanyName烈的数据信息

ResponseWrite("<script>alert('" + drCurrent["CompanyName"]ToString() + "')</script>");

}

2 通过DataAdapter对象 *** 作DataSet实现更新数据库

很多时候通过DataSet完成了用户数据的 *** 作,但是这时候的数据已经被修改了。这些修改的数据要求重新写入到数据库中,那么这时候怎么办呢?传统的思维方式是:把这些数据重新写回到数据库中对应的表里面。但是现在的DataSet是与数据库断开的,所以在这个时候就会遇到怎么用DataSet来更新数据库的问题。

其实在ADONET20中通过DataAdapter对象 *** 作DataSet实现更新数据库。DataAdapter是通过其Update方法实现以DataSet中数据来更新数据库的。当DataSet实例中包含数据发生更改后,此时调用Update方法,DataAdapter 将分析已作出的更改并执行相应的命令(INSERT、UPDATE 或 DELETE),并以此命令来更新数据库中的数据。如果DataSet中的DataTable是映射到单个数据库表或从单个数据库表生成,则可以利用 CommandBuilder对象自动生成DataAdapter的DeleteCommand、InsertCommand和 UpdateCommand。使用DataAdapter对象 *** 作DataSet实现更新数据库具体的实现方法,下面代码可实现删除Customers数据表前5行数据。实现代码如下所示:

string sConnectionString; //声明一个字符串

//连接数据库字符串

sConnectionString = " Data Source=;Initial Catalog=Northwind;User ID=sa; ";

//创建SqlConnection数据库连接对象

SqlConnection Conn = new SqlConnection(sConnectionString);

//打开Conn

ConnOpen();

//创建并初始化SqlCommand对象

SqlDataAdapter Customer = new SqlDataAdapter("Select From Customers", Conn);

DataSet ds = new DataSet();

//使用SqlDataAdapter的Fill方法填充DataSet

CustomerFill(ds, "Customers");

DataTable tblCustomers; //创建一个DataTable数据表

//将这个创建的数据表

tblCustomers = dsTables["Customers"];

//关闭数据连接

ConnClose ( ) ;

//删除数据表中前5行数据

for (int i = 0; i < 5; ++i)

{

dsTables["Customers"]Rows[i]Delete ( ) ;

}

//删除DataSet中删除数据表Customers中第一行数据

dsTables["Customers"]AcceptChanges ( ) ;

由于不了解DataSet结构和与数据库关系,很多初学者往往只是更新了DataSet中的数据,就认为数据库中的数据也随之更新,所以当打开数据库浏览时发现并没有更新数据,都会比较疑惑,通过上面的介绍,疑惑应当能够消除了。

3 把XML数据流或文本加载到DataSet

由于ADONET20中增强了与XML文件的结合,所以在这个时候DataSet中的数据可以从XML数据流或文档创建。加载XML数据流和文档到DataSet中是可使用DataSet对象的ReadXml方法。该ReadXml方法读取 XML 流或文档的内容并将数据加载到 DataSet 中。根据所指定的XmlReadMode和关系架构是否已存在,它还将创建DataSet的关系架构。 实现代码如下所示:

DataSet ds= new DataSet("xmlds");

dsReadXml("c:\\databasesxml");

数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列 *** 作,要么完全地执行,要么完全地不执行。

事务处理可以确保除非事务性单元内的所有 *** 作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关 *** 作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。

事务是数据库运行中的一个逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。

相关属性:

原子性(Atomic)(Atomicity)

事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的 *** 作具有共同的目标,并且是相互依赖的。如果系统只执行这些 *** 作的一个子集,则可能会破坏事务的总体目标。原子性消除了系统处理 *** 作子集的可能性。

一致性(Consistent)(Consistency)

事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。某些维护一致性的责任由应用程序开发人员承担,他们必须确保应用程序已强制所有已知的完整性约束。例如,当开发用于转帐的应用程序时,应避免在转帐过程中任意移动小数点。

隔离性(Insulation)(Isolation)

由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为隔离性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。当事务可序列化时将获得最高的隔离级别。在此级别上,从一组可并行执行的事务获得的结果与通过连续运行每个事务所获得的结果相同。由于高度隔离会限制可并行执行的事务数,所以一些应用程序降低隔离级别以换取更大的吞吐量。

持久性(Duration)(Durability)

事务完成之后,它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。

MySQL

是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件。

MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。

:《Python基础教程》

应用环境

与其他的大型数据库例如Oracle、DB2、SQLServer等相比,MySQL自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。

MongoDB

是一个基于分布式文件存储的数据库。由C语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

特点

它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:

面向集合存储,易存储对象类型的数据。

mongodb集群参考

模式自由。

支持动态查询。

支持完全索引,包含内部对象。

支持查询。

支持复制和故障恢复。

使用高效的二进制数据存储,包括大型对象(如视频等)。

自动处理碎片,以支持云计算层次的扩展性。

支持RUBY,PYTHON,JAVA,C,PHP,C#等多种语言。

文件存储格式为BSON(一种JSON的扩展)。

可通过网络访问。

以上就是关于求用c#编程实现从xml文件中恢复的数据库全部的内容,包括:求用c#编程实现从xml文件中恢复的数据库、什么是事务事务中的提交和回滚是什么意思、c#中,datagridview直接更新数据库时出异常!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存