广

ASP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

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

    2018-05-04 21:20:54 次阅读 稿源:互联网
    零七广告

      原文: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: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=;

       

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告