特色栏目

ASP源码

PHP源码

.NET源码

JSP源码

游戏频道
专题合集
关闭菜单
首页> ASP教程> 用Xml2OleDb将XML文件插入到数据库

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

时间:2009-06-24 16:44:45 作者:互联网

原文:http://aspalliance.com/articleViewer.aspx?aId=477&pId=-1
 
作者:Andrew Mooney 翻译:孟子E章  [下载源代码Au***rs.xml


// 装载我们提交的XML文件到DataSet
da***etXml.ReadXml(Ht***ontext.Current.Server.MapPath(te***oxXml.Text));
// 得到DataSet中的第一个表
dataTableXml = da***etXml.Tables[0];
// 生成表名
tableName = te***oxXml.Text.Substring(0,te***oxXml.Text.Length -4);

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


// 检查是否有数据存在(rows)
if(da***ableXml.Rows.Count > 0)

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


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


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

 
添加XML数据到数据库 

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

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

连接字符串例子:
Access: Pr***der=Microsoft.Jet.OLEDB.4.0;Data Source=C:datada***ase.mdb;
Excel: Pr***der=Microsoft.Jet.OLEDB.4.0;Data Source=C:datada***ase.xls;Extended Properties=Excel 8.0;
FoxPro/dBase: Pr***der=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=;

 

相关文章 最新文章

相关应用

热门文章

猜你喜欢

返回顶部