将XML文件导入到Oracle数据库中的思路

上传人:pia****nwu 文档编号:143950829 上传时间:2022-08-26 格式:DOC 页数:8 大小:28.51KB
返回 下载 相关 举报
将XML文件导入到Oracle数据库中的思路_第1页
第1页 / 共8页
将XML文件导入到Oracle数据库中的思路_第2页
第2页 / 共8页
将XML文件导入到Oracle数据库中的思路_第3页
第3页 / 共8页
点击查看更多>>
资源描述
将XML文件导入到Oracle数据库中的思路一、程序源码前台代码: 将Xml文件导入到数据库 读取Xml,导入Oracle并显示 读取Xml文件中的内容,并将其内容导入到Oracle数据库 请输入Xml文件名 测试从Xml文件是否能成功读取数据 后台代码:using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;using System.Data.OracleClient;using System.Data.OleDb;public partial class ImportData : System.Web.UI.Page protected DataSet dataSetXml; protected DataTable dataTableXml; protected string tableName; protected string strConn = System.Configuration.ConfigurationManager.ConnectionStringsConnectionString.ConnectionString; protected void Page_Load(object sender, EventArgs e) protected void buttonSubmit_Click(object sender, EventArgs e) OracleConnection conn = new OracleConnection(strConn); conn.Open(); Message.Text = ; dataSetXml = new DataSet(); dataTableXml = new DataTable(); try dataSetXml.ReadXml(HttpContext.Current.Server.MapPath(textBoxXml.Text); /装载XML文件到DataSet dataTableXml = dataSetXml.Tables0; /得到DataSet的第一个表 tableName = textBoxXml.Text.Substring(0, textBoxXml.Text.Length - 4); /生成表名 GridView1.DataSource = dataTableXml.DefaultView; GridView1.DataBind(); catch Message.Text = 不能打开Xml文件或者是Xml文件格式错误; if (dataTableXml.Rows.Count 0) /检查是否有数据存在(ROWS) TableCheck(); /在数据库中建表 TableInsert(); /添加XML数据到数据库 conn.Close(); #region 在数据库中建表 private void TableCheck() OracleConnection conn = new OracleConnection(strConn); try conn.Open(); int count = 0; DataTable schemaTable = conn.GetSchema(TABLES, new string SCOTT, tableName ); string sqlCmd = ; if (schemaTable.Rows.Count = 1) /检查表是否存在,如果存在在DataTable中将有一条记录 / if (schemaTable.Rows.Count 1) 若这样写的话,程序运行无误,但只是导入了XML的表字段,没有导入数据 sqlCmd = create table + tableName + (; / sqlCmd = create table + tableName + (; for (int i = 0; i dataTableXml.Columns.Count; i+) / 添加列text/string type 长度 100 sqlCmd += dataTableXml.Columnsi.ColumnName.ToString() + varchar2(100),; sqlCmd = sqlCmd.Substring(0, sqlCmd.Length - 1) + );/删除最后一个“,”符号 OracleCommand createcmd = new OracleCommand(); createcmd.Connection = conn; createcmd.CommandText = sqlCmd; createcmd.ExecuteNonQuery(); catch Message.Text = SQL命令或语句连接出问题; finally conn.Close(); #endregion #region 添加XML数据到数据库 private void TableInsert() OracleConnection conn = new OracleConnection(strConn); try conn.Open(); / 遍历DataTable中的Rows foreach (DataRow dr in dataTableXml.Rows) string sqlCmd = Insert Into + tableName + (; / string sqlCmd = Insert Into + tableName + (; / 遍历Datatable的列 for (int i = 0; i dataTableXml.Columns.Count; i+) /添加列的字段名 sqlCmd += dataTableXml.Columnsi.ColumnName.ToString() + ,; sqlCmd = sqlCmd.Substring(0, sqlCmd.Length - 1) + ) Values(; / 遍历Datatable的列 for (int i = 0; i dataTableXml.Columns.Count; i+) /添加列值到row sqlCmd += + dri.ToString() + ,; sqlCmd = sqlCmd.Substring(0, sqlCmd.Length - 1) + ); OracleCommand cmd = new OracleCommand(sqlCmd, conn); cmd.ExecuteNonQuery(); Message.Text = Xml文件中的数据成功加载到数据库中!; catch Message.Text = 在添加数据时产生了错误!; finally conn.Close(); #endregion 二、XML文件导入oracle数据库思路(程序读解)1、将XML文件装载进DataSet,并得到第一个表,这个表就是我们要加入到数据库的DataTable;接下来,去除XML文件的扩展名,文件名字去掉扩展名将是我们数据库中使用的表名。如果XML格式不准确,将会报告错误,源代码中有XML文件格式的例子。/ 装载我们提交的XML文件到DataSetdataSetXml.ReadXml(HttpContext.Current.Server.MapPath(textBoxXml.Text);/ 得到DataSet中的第一个表dataTableXml = dataSetXml.Tables0;/ 生成表名tableName = textBoxXml.Text.Substring(0,textBoxXml.Text.Length -4);(Length -4 :减4是去掉XML文件的后缀,使得数据库中的表名与XML文件名一致,你也可以另取表名)2、检查数据表是否有数据(rows)一旦XML装载成功,首先检查数据表是否有数据(rows),接下来检查数据库是否存在表,如果不存在就创建一个;然后将数据从XML插入到数据库中。/ 检查是否有数据存在(rows)if(dataTableXml.Rows.Count > 0)3、创建数据库表创建数据库连接,得到我们要添加表的数据库架构信息。/ 创建数据库连接,打开数据库,得到数据库表的架构信息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.Columnsi.ColumnName.ToString() + char(100),;sqlCmd = sqlCmd .Substring(0,sqlCmd.Length - 1) + );OleDbCommand oledbCmd = new OleDbCommand(sqlCmd,oledbConn);oledbCmd.ExecuteNonQuery();4、添加XML数据到数据库/ 遍历DataTable中的Rowsforeach(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.Columnsi.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 + + drx.ToString().Replace(,) + ,; sqlCmd = sqlCmd.Substring(0,sqlCmd.Length - 1) + ); OleDbCommand oledbCmd = new OleDbCommand(sqlCmd,oledbConn); oledbCmd.ExecuteNonQuery();
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 机械制造 > 电气技术


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!