欢迎光临
我们一直在努力

用Xml2OleDb将XML文件插入到数据库-.NET教程,XML应用

建站超值云服务器,限时71元/月

xml2oledb简介

xml是互联网共享数据的最好的方法,xml格式的数据可以很轻松的集成到不同的web应用中去。但如果你想将xml文件插入到数据库,怎么办?xml2oledb将向您说明往oledb数据库,比如sql server, access, excel, visual foxpro, foxpro, and dbase等插入xml文件的数据是如何轻松。

首先,将xml文件装载进dataset,并得到第一个表,这个表就是我们要加入到数据库的datatable;接下来,去除xml文件的扩展名,文件名字去掉扩展名将是我们数据库中使用的表名。如果xml格式不准确,将会报告错误,源代码中有xml文件格式的例子。参见authors.xml

// 装载我们提交的xml<a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/soft/tools/file/index.html" target="_blank" rel="nofollow" >文件</a>到dataset<br /> datasetxml.readxml(httpcontext.current.server.mappath(textboxxml.text));<br /> // 得到dataset中的第一个表<br /> datatablexml = datasetxml.tables[0];<br /> // 生成表名<br /> tablename = textboxxml.text.substring(0,textboxxml.text.length -4);

一旦xml装载成功,首先检查数据表是否有数据(rows),接下来检查数据库是否存在表,如果不存在就创建一个;然后将数据从xml插入到数据库中。

// 检查是否有数据存在(rows)<br /> if(datatablexml.rows.count > 0)

创建数据库表

创建数据库连接,得到我们要添加表的数据库架构信息。

// 创建<a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/index.html" target="_blank" rel="nofollow" >数据库</a>连接,打开<a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/index.html" target="_blank" rel="nofollow" >数据库</a>,得到<a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/index.html" target="_blank" rel="nofollow" >数据库</a>表的架构信息<br /> oledbconnection oledbconn = new oledbconnection(textboxoledb.text);<br /> oledbconn.open();<br /> datatable schematable =<br /> oledbconn.getoledbschematable(oledbschemaguid.tables,<br /> new object[] {null, null, tablename, &#8220;table&#8221;});</p> <p>// 检查表是否存在,如果存在在datatable中将有一条记录<br /> if(schematable.rows.count < 1) <a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/mssql/index.html" target="_blank" rel="nofollow" >sql</a>cmd = &#8220;create table &#8221; + tablename + &#8221; (&#8220;;<br /> for(int i = 0;i < datatablexml.columns.count;i++) { // 添加列text/string type 长度 100 <a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/mssql/index.html" target="_blank" rel="nofollow" >sql</a>cmd = <a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/mssql/index.html" target="_blank" rel="nofollow" >sql</a>cmd + datatablexml.columns[i].columnname.tostring() + &#8221; char(100),&#8221;;<br /> }<br /> <a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/mssql/index.html" target="_blank" rel="nofollow" >sql</a>cmd = <a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/mssql/index.html" target="_blank" rel="nofollow" >sql</a>cmd .substring(0,<a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/mssql/index.html" target="_blank" rel="nofollow" >sql</a>cmd.length &#8211; 1) + &#8220;);&#8221;;<br /> oledbcommand oledbcmd = new oledbcommand(<a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/mssql/index.html" target="_blank" rel="nofollow" >sql</a>cmd,oledbconn);<br /> oledbcmd.executenonquery();

添加xml数据到数据库

// 遍历datatable中的rows<br /> foreach(datarow dr in datatablexml.rows)<br /> {<br /> string <a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/mssql/index.html" target="_blank" rel="nofollow" >sql</a>cmd = &#8220;insert into [&#8221; + tablename + &#8220;] (&#8220;;<br /> // 遍历datatable的列<br /> for(int i = 0;i < datatablexml.columns.count;i++) { // 添加column name <a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/mssql/index.html" target="_blank" rel="nofollow" >sql</a>cmd = <a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/mssql/index.html" target="_blank" rel="nofollow" >sql</a>cmd + datatablexml.columns[i].columnname.tostring() + &#8220;,&#8221;;<br /> }<br /> <a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/mssql/index.html" target="_blank" rel="nofollow" >sql</a>cmd = <a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/mssql/index.html" target="_blank" rel="nofollow" >sql</a>cmd.substring(0,<a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/mssql/index.html" target="_blank" rel="nofollow" >sql</a>cmd.length &#8211; 1) + &#8220;) values (&#8220;;<br /> // 遍历 datatable columns<br /> for(int x = 0;x < datatablexml.columns.count;x++) { // 添加column value到row <a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/mssql/index.html" target="_blank" rel="nofollow" >sql</a>cmd = <a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/mssql/index.html" target="_blank" rel="nofollow" >sql</a>cmd + &#8220;&#8221; + dr[x].tostring().replace(&#8220;&#8221;,&#8221;&#8221;) + &#8220;,&#8221;;<br /> }<br /> <a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/mssql/index.html" target="_blank" rel="nofollow" >sql</a>cmd = <a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/mssql/index.html" target="_blank" rel="nofollow" >sql</a>cmd.substring(0,<a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/mssql/index.html" target="_blank" rel="nofollow" >sql</a>cmd.length &#8211; 1) + &#8220;);&#8221;;<br /> oledbcommand oledbcmd = new oledbcommand(<a href="http://www.west999.com/www/go/?url=http://www.chinaitpower.com/dev/database/mssql/index.html" target="_blank" rel="nofollow" >sql</a>cmd,oledbconn);<br /> oledbcmd.executenonquery();<br /> }

注意的问题:

测试时先下载源代码,创建一个空的数据库,设置可修改权限database.mdb,database.xls,对foxpro/dbase 创建空目录

连接字符串例子:

access: provider=microsoft.jet.oledb.4.0;data source=c:\data\database.mdb;
excel: provider=microsoft.jet.oledb.4.0;data source=c:\data\database.xls;extended properties=excel 8.0;
foxpro/dbase: provider=microsoft.jet.oledb.4.0;data source=c:\data;extended properties=dbase iv;
sql server: provider=sqloledb; data source=localhost; initial catalog=database;user id=sa;password=;

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 用Xml2OleDb将XML文件插入到数据库-.NET教程,XML应用
分享到: 更多 (0)