关于数据库与XML的问题

关于数据库与XML的问题,第1张

这样做应该可以。

string sql="select area_id,area_name from area";

SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);

adapterFill(resultDS, "area");

sql="select province_name,province_id,area_id from province";

adapter = new SqlDataAdapter(sql, conn);

adapterFill(resultDS, "province");

foreach(DataRow row in resultDSTalbes["area"]Rows)

{

string filter="area_id='"+row["area_id"]ToString()+"'";

TreeNode tn = new TreeNode();

tnName = row["area_id"]ToString();

tnText = row["area_name"]ToString();

treeView1NodesAdd(tn);

foreach(DataRow subrow in resultDSTalbes["province"]select(filter))

{

TreeNode subtn = new TreeNode();

subtnName = subrow["province_id"]ToString();

subtnText = subrow["province_name"]ToString();

tnNodesAdd(subtn);

}

}

这要看你的应用模型了,没有结论说数据一定好,或者xml一定好!不过一般来说,数据库比xml安全性要好,比较重要的数据,建议放在数据库里面,比如用户信息!另外的常规数据,可以放到xml里面!同时xml作为传输数据的标准格式是非常好的!

具体应该视情况而定!

不一样,分布式数据库是数据库构架的,XML数据库是数据存取的格式

分布式数据库是指,一个完整的逻辑数据的数据,保存在很多不同的子物理数据库中,这些库通过程序逻辑的连接起来,就好像是用一个库一样

XML数据库, 指数据库中保存的数据是XML格式

布式数据库----是用计算机网络将物理上分散的多个数据库单元连接起来组成的一个逻辑上统一的数据库。每个被连接起来的数据库单元称为站点或结点。分布式数据库有一个统一的数据库管理系统来进行管理,称为分布式数据库管理系统。

分布式数据库的基本特点包括:物理分布性、逻辑整体性和站点自治性。从这三个基本特点还可以导出的其它特点有:数据分布透明性、集中与自治相结合的控制机制、适当的数据冗余度和事务管理的分布性。

分布式数据库按照各站点中数据库管理系统的数据模型的异同分为异构型分布式数据库和同构型分布式数据库,按照控制系统的类型分为全局控制集中性、全局控制分散型和全局控制可变型。

XML本身是不是数据库,从严格的意义上来说,XML仅仅意味着XML文档。因为尽管一个XML文档包含数据,但是如果不通过其他的软件的软件来进行数据处理的话,它本身只不过是一个文本文件。所以XML本身不不能和数据库挂上钩,但是加上一些其他的辅助工具,我们可以把整个XML看成是一个数据库系统,XML文本本身可以看成是数据库中的数据区,DTD或者Schemas可以看成是数据库模式设计,XQL可以看成是数据库查询语言,SAX或DOM可以看成是数据库处理工具。当然它还是缺少数据库所必须的一些东西,比如有效的存储组织、索引结构、安全性、事务处理、数据完整性、触发器、多用户处理机制等等

在XML数据库的研究和开发人员眼里,或许只有支持XML的数据库、纯XML数据库能够称得上是真正意义上的XML数据库。支持XML的数据库可以被看做是支持XML数据的数据库系统,它可能是关系数据库、对象数据库等。就在一年半以前,还有相当多的人在争论关系库支持的XML数据库和纯XML数据库孰优孰劣的问题。但是,纯XML数据库却在这种争论中悄然进步,在技术上有了长足的发展。

人们已经越来越倾向于认为XML数据库就是纯XML数据库

很高兴可以给你解答!

xml实际就是一个本地简单的数据库

我只做了一个简单的。。但是道理是一样的。

//xml文件信息

<abc>

<Field>100</Field>

<item>

<id>1</id>

<name>zhangsan</name>

<sex>男</sex>

</item>

<item>

<id>2</id>

<name>lisi</name>

<sex>男</sex>

</item>

</abc>

//实体类。

public class Information

{

private string id;

public string Id

{

get { return id; }

set { id = value; }

}

private string name;

public string Name

{

get { return name; }

set { name = value; }

}

private string sex;

public string Sex

{

get { return sex; }

set { sex = value; }

}

public Information()

{

}

public Information(string id,string name,string sex)

{

thisId = id;

thisName = name;

thisSex = sex;

}

}

//读取xml里面的文件信息

List<Information> list = new List<Information>();

//实例化xml

XmlDocument xml = new XmlDocument();

//读取xml文件

xmlLoad(@"E:\C#\S2C#\DLCL\打印电脑\MyComputer\XulieHua\XMLxml"); //你的xml地址

string id = "";

string name = "";

string sex = "";

Information info = null;

//////////下面开始循环读取xml文件信息/

///////////////

foreach (XmlNode node in xmlChildNodes)

{

if (nodeName == "abc")

{

foreach (XmlNode node1 in nodeChildNodes)

{

if (node1Name == "item")

{

foreach (XmlNode node2 in node1ChildNodes)

{

switch (node2Name)

{

case "id":

id = node2InnerText;

break;

case "name":

name = node2InnerText;

break;

default:

sex = node2InnerText;

break;

}

}

info = new Information(id, name, sex);

//将信息保存至集合

listAdd(info);

}

}

}

}

xml里面的所有信息就是在list集合里面了。。简单吧。。嘿嘿。。

当然你可以做多个表和多个字段属性咯。。

var tmpquery2:tadoquery;

tmpfile:string;

tmptable:tadotable;

begin

if applicationMessageBox( '导入答案将会清空以前的考生答案,确定是否继续? ', '提醒 ',MB_OKCANCEL or MB_ICONWARNING)=mrok then

begin

IF BSopenExecute then

try

try

begin

tmpfile:=bsopenFileName;

tmptable:=tadotableCreate(self);

tmpquery2:=tadoqueryCreate (self);

tmpquery2Connection :=dmconnect ;

tmptableConnection :=dmconnect ;

tmptableTableName:= 'exam_answer ';

with tmpquery2 do

begin

close;

sqlClear;

sqlAdd( 'delete from exam_answer ');

execsql;

end;

tmptableLoadFromFile(tmpfile);

tmptableFirst;

while not tmptableEof do

begin

with tmpquery2 do

begin

close;

sqlClear;

sqlAdd( 'insert into exam_answer(kh,xm,sj_id,sjts,tk_id,stbh,tx,daa,dab,dac,dad,dae,daf,tkda,df) values(:kh,:xm,:sj_id,:sjts,:tk_id,:stbh,:tx,:daa,:dab,:dac,:dad,:dae,:daf,:tkda,:df) ');

parametersParamByName( 'kh ')Value :=tmptablefieldbyname( 'kh ')AsString;

parametersParamByName( 'xm ')Value :=tmptablefieldbyname( 'xm ')AsString;

parametersParamByName( 'sj_id ')Value :=tmptablefieldbyname( 'sj_id ')AsString;

parametersParamByName( 'tx ')Value :=tmptablefieldbyname( 'tx ')AsString;

parametersParamByName( 'sjts ')Value :=tmptablefieldbyname( 'sjts ')AsString;

parametersParamByName( 'tk_id ')Value :=tmptablefieldbyname( 'tk_id ')AsString;

parametersParamByName( 'stbh ')Value :=tmptablefieldbyname( 'stbh ')AsString;

parametersParamByName( 'daa ')Value :=tmptablefieldbyname( 'daa ')AsBoolean;

parametersParamByName( 'dab ')Value :=tmptablefieldbyname( 'dab ')asboolean;

parametersParamByName( 'dac ')Value :=tmptablefieldbyname( 'dac ')AsBoolean ;

parametersParamByName( 'dad ')Value :=tmptablefieldbyname( 'dad ')AsBoolean ;

parametersParamByName( 'dae ')Value :=tmptablefieldbyname( 'dae ')AsBoolean ;

parametersParamByName( 'daf ')Value :=tmptablefieldbyname( 'daf ')AsBoolean ;

parametersParamByName( 'tkda ')Value :=tmptablefieldbyname( 'tkda ')AsString;

parametersParamByName( 'df ')Value :=tmptablefieldbyname( 'df ')AsString;

execsql;

end;

tmptablenext;

end;

showmessage( '导入完成,累死了 ')

end;

finally

tmptableFree;

tmpquery2Free;

end;

except

showmessage( '导入未完成。:( ')

end;

end;

end;

如果单纯的LOAD出来,它是不直接写到后台数据表的。分析下源码就知道它LOAD之前先CLOSE了数据表。只有一条一条增加到后台数据表了。

XML文档的一个普通存在的问题是如何持久保存(Persist) XML文档。在一个关系数据库中存储XML文档是一个非常常用的方法,因为当前关系数据库的使用非常广泛。

将XML文档插入到数据库中不是简单的方法,这其中需要很多其它额外的考虑。现在我提供了一些技巧,你可以使用这些技巧在关系数据库中存储XML文档。

1、文档表:

一个最简单和容易的方法是,在一个具有单一文本域的数据库中建立一个表,由此你可以在表中存储XML数据。由于这些特定数据库和特定XML文档,这一文本域可以是一个二进制大型对象(BLOB,binary large object)。有些数据库需要存储的是大量的BLOB数据而不是文本。

这一方法的优点是,将数据存入表中变得相当简单,而且重新获得也同样很容易。这种文档表的管理也很方便。

这种方法的缺点在于你将可能无法进行一些有用的文本搜索,并且在放置特定文档时也会碰到困难,因为没有任何方法来识别表中的文档;

2、主键表:

下一个比较复杂的方法是使用一个主键表(keyed table)。这种方法与文档表非常相似,但此时你的表中包含两个域:一个唯一的主键和XML文档。使用这种方法,你既可以具有存储和获得整个XML文档的简洁性,也可以使用一些管理这些唯一主键的复杂 *** 作;

建立主键的一种通用方法是使用XML文档中的MD5求和检验。请记住如果你想在表中包括多份XML文档,这一方法远不足够。在这种情况下,你可以添加额外的key fields标识键列。

与文档表一样,主键表很容易执行,它可以在表中查找特定的文档。然而,与文档表一样,你仍然不能执行任何文本查询;

3、有限离散表:

这一方法更加复杂,但它给你带来更多的灵活性。使用有限离散表,你可以建立用于存储有限分散的XML信息的表,这是什么意思?请看以下的例子:

假设你具有一个顺序文档。在文档的根部(Root)有一个Order元素,这一元素包括CustomerInfo, ItemInfo, 以及hippingInfo元素。在数据库中,你可以建立一个OrderDoc表,表中包含一个ID域,一个CustomerInfoId域,一个ItemInfoId域,一个ShippingInfoId域。然而,你还可以建立一个CustomerInfoId表,一个ItemInfoId表,一个ShippingInfoId表。这些表都包含很多信息相关的各自的ID域,这些信息包括用户,选项,邮寄信息。在这一表中,还包含着其它额外的等级。比如,CustomerInfo表包含AddressInfo域,即从AddressInfo表中引用的入口。

这种方法的优点是,允许你更紧密地建立XML数据的模型。这种方法使得你进行数据的一些成熟的查询。它也使得数据的使用性更强,因为你不再需要XML分析器来读取数据。

不足之处是这种方法需要更多的精力来开发和维护。这意味着每一文档都需要解析成分离的部分,然后存储在数据库中。如果这一过程没有得以很好管理,有可能会丢失一些数据。而且,这也意味着,当从一个数据库中获得一个XML文档时,你不得不连接这些分散的部分。

以上就是关于关于数据库与XML的问题全部的内容,包括:关于数据库与XML的问题、到底是用xml好一些,还是用数据库好一些、分布式数据库与XML数据库一样吗若不一样区别是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/sjk/9827884.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存