Xml2OleDb簡介

來源:互聯網
上載者:User

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=;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.