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

原创 2004年07月20日 15:10:00

原文: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)


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


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


// 检查表是否存在,如果存在在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:/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=;

创建Xml文件,并解析该Xml数据,并插入数据库

工作中对xml的操作比较多,这里实现一种。使用dom4j解析xml、 流程: 创建xml----->然后解析--------》然后将数据用Log打印出来。 创建xml: package ...
  • xxm282828
  • xxm282828
  • 2014年03月31日 22:28
  • 2253

oracle将xml导入数据库

将xml导入数据库2007-11-19 05:11 P.M. /********************************************************************...
  • lichangzai
  • lichangzai
  • 2013年01月29日 13:03
  • 2434

解析XML文档,并把数据存到数据库中

最常用的解析方法
  • zhaoming262350
  • zhaoming262350
  • 2013年10月06日 22:23
  • 7682

用dom4j读取xml到数据库

用dom4j读取xml文件到数据库。 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使...
  • u010096526
  • u010096526
  • 2015年10月29日 21:20
  • 2015

Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库

Ajax实现将xml文件数据插入数据库的过程所涉及到的内容比较多,所以对于该过程的讲解本人打算根据交互的过程将其分为三个部分,第一部分为构建解析xml文件的javascript库,第二部分为ajax与...
  • a1314517love
  • a1314517love
  • 2013年07月05日 07:57
  • 2909

直接将XML存入到SQL中(SQL2008)

一、前言 从 SQL Server 2005 开始,就增加了 xml 字段类型,也就是说可以直接把 xml 内容存储在该字段中,并且 SQL Server 会把它当作 xml 来对待,而不是当作 v...
  • xxdddail
  • xxdddail
  • 2013年08月07日 13:12
  • 3164

spring mvc 读取xml文件数据库配置参数

通过属性注入、构造器注入读取xml文件内容,实现把数据库参数放到xml,方便项目部署...
  • u012835032
  • u012835032
  • 2016年05月25日 13:03
  • 2610

xml与数据库的区别

这是风牛马不相及的两个概念,他们的结构,应用范围是完全不同的,目前的数据库基本上都是关系型数据库,以sql与oracle为代表,都是非常大型的,可以进行数据的海量存储;而xml主要解决的是数据在网上传...
  • qq1175421841
  • qq1175421841
  • 2015年12月06日 13:51
  • 2635

解析数据库生成XML文件及解析XML文件插入数据库

package com.sql.xml; import java.io.File; import java.io.FileOutputStream; import java.io.FileWrite...
  • u013046841
  • u013046841
  • 2014年06月29日 16:07
  • 391

Xml数据导入MySQL,SQLite等数据库

导入到mysql数据库和导入到SQLite数据库比较类似,这就演示导入到SQLite数据库中: ①先看下person.xml文件中的数据; ②导入到数据库中(基本图文中一步步来就够了,截图很详...
  • zml_2015
  • zml_2015
  • 2016年03月14日 13:00
  • 11880
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Xml2OleDb将XML文件插入到数据库
举报原因:
原因补充:

(最多只允许输入30个字)