用Xml2OleDb将XML文件插入到数据库

2016-01-29 18:42 35 1 收藏

用Xml2OleDb将XML文件插入到数据库,用Xml2OleDb将XML文件插入到数据库

【 tulaoshi.com - ASP 】

 

原文:http://aspalliance.com/articleViewer.aspx?aId=477&pId=-1
 
作者:Andrew Mooney 翻译:孟子E章  [下载源代码http://aspalliance.com/download/477/ASPAlliance477.zip]
 
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文件到DataSet
dataSetXml.ReadXml(HttpContext.Current.Server.MapPath(textBoxXml.Text));
// 得到DataSet中的第一个表
dataTableXml = dataSetXml.Tables[0];
// 生成表名
tableName = textBoxXml.Text.Substring(0,textBoxXml.Text.Length -4);

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


// 检查是否有数据存在(rows)
if(dataTableXml.Rows.Count 0)

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/asp/)

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


// 创建数据库连接,打开数据库,得到数据库表的架构信息
OleDbConnection oledbConn = new OleDbConnection(textBoxOleDb.Text);
oledbConn.Open();
DataTable schemaTable =
  oledbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
    new object[] {null, null, tableName, "TABLE"});

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/asp/)


// 检查表是否存在,如果存在在DataTable中将有一条记录
if(schemaTable.Rows.Count < 1)
     
      
sqlCmd = "create table " + tableName + " (";
for(int i = 0;i < dataTableXml.Columns.Count;i++)
{
    // 添加列text/string type 长度 100
    sqlCmd = sqlCmd + dataTableXml.Columns[i].ColumnName.ToString() + " char(100),";
}
sqlCmd  = sqlCmd .Substring(0,sqlCmd.Length - 1) + ");";
OleDbCommand oledbCmd = new OleDbCommand(sqlCmd,oledbConn);
oledbCmd.ExecuteNonQuery();

 
添加XML数据到数据库 

// 遍历DataTable中的Rows
foreach(DataRow dr in dataTableXml.Rows)
{
    string sqlCmd = "insert into [" + tableName + "] (";
    // 遍历Datatable的列
    for(int i = 0;i < dataTableXml.Columns.Count;i++)
    {
        // 添加column name
        sqlCmd = sqlCmd + dataTableXml.Columns[i].ColumnName.ToString() + ",";
    }
    sqlCmd  = sqlCmd.Substring(0,sqlCmd.Length - 1) + ") values (";
    // 遍历 DataTable columns
    for(int x = 0;x < dataTableXml.Columns.Count;x++)
    {
        // 添加column value到row
        sqlCmd = sqlCmd + "'" + dr[x].ToString().Replace("'","''") + "',";
    }
    sqlCmd = sqlCmd.Substring(0,sqlCmd.Length - 1) + ");";
    OleDbCommand oledbCmd = new OleDbCommand(sqlCmd,oledbConn);
    oledbCmd.ExecuteNonQuery();
}

 
注意的问题:
测试时先下载源代码,创建一个空的数据库,设置可修改权限Database.mdb,Database.xls,对FoxPro/dBase 创建空目录

连接字符串例子:
Access: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:datadatabase.mdb;
Excel: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:datadatabase.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=;

 

 

来源:https://www.tulaoshi.com/n/20160129/1506934.html

延伸阅读
标签: Java JAVA基础
  一、JDOM 介绍 我们知道DOM是用于与平台和语言无关的方式表示XML文档的官方W3C标准,利用DOM和SAX API可以解析和处理XML文档。这里我们介绍的JDOM是基于树操作的纯JAVA API,应该说它提供的是一套用于解析、创建、处理和实现XML的解决方案。这些API比DOM和SAX API提供的方法更为直观,对于有JAVA经验的程序员将会发现JDOM非常容...
标签: Web开发
关系数据库 关系数据库中的XML数据库可以分为三种模型:coarse-grained(粗糙纹理型), medium-grained(中等级别纹理型),或 fine-grained(优良纹理型)。 coarse-grained(粗糙纹理型)模型在逻辑上与flat文件模型有些不同。你可以使用一个关系数据库来存放每一个XML文档。例如,以下的代码可以存放一个XML文档: Create table ...
D:\mysql-5.1.26-rc-win32\binmysql -X -utest test -e "select * from t1;" | tee f:\out.xml 代码如下: ?xml version="1.0"? resultset statement="select * from t1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" row field name="id"1/field /row row field name="id"2/field /row /resultset -X 指定为xml格式...
通常有两类形式:模板驱动和模式驱动。1 模板驱动在以模板驱动的映射中,没有预先定义文档结构和数据库结构之间的映射关系,而是使用将命令语句内嵌入模板的方法,让数据传输中间件来处理该模板。例如,下面的模板,在 元素中内嵌了SELECT语句: The following flights have available seats: SELECT Airline, FltNumber, Depart, Arrive ...
标签: Web开发
到了今天,数据库已经成了网站的灵魂,可以说,没有对数据进行集中管理就算不上是一个真正的网站。而ASP加数据库,更成了主流中的主流,网站里的用户登录,论坛,留言本都成了它们用武之地,从前用51个文件才能做成的事,现在用2个文件就可以了,但ASP加数据库,却并非完美,尤其是与服务器进行频繁的交互方面。 比如按ASP+数据库的方...

经验教程

926

收藏

24
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部