六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

用Xml2OleDb將XML文件插入到數(shù)據(jù)庫

[摘要]原文:http://aspalliance.com/articleViewer.aspx?aId=477&pId=-1 作者:Andrew Mooney 翻譯:孟子E章 [下載源代碼http://aspalliance.com/download/477/ASPAlliance477.zi...

原文:http://aspalliance.com/articleViewer.aspx?aId=477&pId=-1
 
作者:Andrew Mooney 翻譯:孟子E章  [下載源代碼http://aspalliance.com/download/477/ASPAlliance477.zip]
 
Xml2OleDb簡介
XML是互聯(lián)網(wǎng)共享數(shù)據(jù)的最好的方法,XML格式的數(shù)據(jù)可以很輕松的集成到不同的Web應(yīng)用中去。但如果你想將XML文件插入到數(shù)據(jù)庫,怎么辦?Xml2OleDb將向您說明往OleDb數(shù)據(jù)庫,比如SQL Server, Access, Excel, Visual FoxPro, FoxPro, and dBase等插入XML文件的數(shù)據(jù)是如何輕松。

首先,將XML文件裝載進(jìn)DataSet,并得到第一個(gè)表,這個(gè)表就是我們要加入到數(shù)據(jù)庫的DataTable;接下來,去除XML文件的擴(kuò)展名,文件名字去掉擴(kuò)展名將是我們數(shù)據(jù)庫中使用的表名。如果XML格式不準(zhǔn)確,將會(huì)報(bào)告錯(cuò)誤,源代碼中有XML文件格式的例子。參見Authors.xml


// 裝載我們提交的XML文件到DataSet
dataSetXml.ReadXml(HttpContext.Current.Server.MapPath(textBoxXml.Text));
// 得到DataSet中的第一個(gè)表
dataTableXml = dataSetXml.Tables[0];
// 生成表名
tableName = textBoxXml.Text.Substring(0,textBoxXml.Text.Length -4);

一旦XML裝載成功,首先檢查數(shù)據(jù)表是否有數(shù)據(jù)(rows),接下來檢查數(shù)據(jù)庫是否存在表,如果不存在就創(chuàng)建一個(gè);然后將數(shù)據(jù)從XML插入到數(shù)據(jù)庫中。


// 檢查是否有數(shù)據(jù)存在(rows)
if(dataTableXml.Rows.Count > 0)

 
創(chuàng)建數(shù)據(jù)庫表
創(chuàng)建數(shù)據(jù)庫連接,得到我們要添加表的數(shù)據(jù)庫架構(gòu)信息。


// 創(chuàng)建數(shù)據(jù)庫連接,打開數(shù)據(jù)庫,得到數(shù)據(jù)庫表的架構(gòu)信息
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數(shù)據(jù)到數(shù)據(jù)庫 

// 遍歷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();
}

 
注意的問題:
測試時(shí)先下載源代碼,創(chuàng)建一個(gè)空的數(shù)據(jù)庫,設(shè)置可修改權(quán)限D(zhuǎn)atabase.mdb,Database.xls,對FoxPro/dBase 創(chuàng)建空目錄

連接字符串例子:
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=;

 




主站蜘蛛池模板: 手机看片精品高清国产日韩 | 午夜亚洲国产精品福利 | 一级黄色在线视频 | 三级第一页 | 日本免费看片在线播放 | 婷婷草| 视频二区 素人 欧美 日韩 | 伊人高清视频 | 永久毛片 | 伊人色综合久久天天人手人停 | 色在线网| 日韩免费不卡视频 | 又大又硬又爽免费视频 | 天堂网在线最新版www | 手机看片久久国产免费不卡 | 亚洲国产高清精品线久久 | 日本二区在线观看 | 亚洲欧美国产精品专区久久 | 日韩手机看片福利精品 | 青草视频.com | 日韩欧美在线视频 | 日本成人免费观看 | 思思99re66在线精品免费观看 | 在线观看亚洲精品专区 | 天天躁| 四虎影视免费看 | 日韩高清免费观看 | 水蜜桃一区一区三全集 | 亚洲欧洲尹人香蕉综合 | 天天草夜夜 | 天天操夜夜爽 | 四虎永久免费影院 | 无极色影院 | 色窝窝免费播放视频在线 | 色天天综合色天天天天看大 | 日本视频网站在线观看 | 日本免费不卡在线一区二区三区 | 欧美系列在线观看 | 午夜合集 | 天天色天天爱 | 五月激情丁香婷婷综合第九 |