前台:
- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head runat="server">
- <title>将Xml文件导入到数据库</title>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- <TABLE id="Table1" cellSpacing="3" cellPadding="3" bgColor="#99ccff" border="0">
- <TR>
- <TD align="center" colSpan="2"><STRONG><FONT size="6">读取Xml,导入Oracle并显示</FONT></STRONG></TD>
- </TR>
- <TR>
- <TD colSpan="2"><FONT size="2">读取Xml文件中的内容,并将其内容导入到Oracle数据库</FONT></TD>
- </TR>
- <TR>
- <TD bgColor="#cccccc" style="width: 129px; height: 27px;"><FONT size="2"><strong>请输入Xml文件名</strong></FONT></TD>
- <TD bgColor="#cccccc" style="height: 27px">
- <asp:TextBox ID="textBoxXml" runat="server" Font-Names="Arial" Font-Size="X-Small"
- Width="500px"></asp:TextBox></TD>
- </TR>
- <TR>
- <TD colSpan="2" style="height: 18px">
- <asp:Label id="Message" runat="server" Font-Bold="True" Font-Size="X-Small" ForeColor="Red"></asp:Label></TD>
- </TR>
- <TR>
- <TD style="width: 129px; height: 17px"></TD>
- <TD style="height: 17px">
- <asp:Button id="buttonSubmit" runat="server" Text="Submit" OnClick="buttonSubmit_Click"></asp:Button></TD>
- </TR>
- </TABLE>
- <br />
- <strong><span style="color: #0066ff">测试从Xml文件是否能成功读取数据</span><br />
- <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None">
- <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
- <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
- <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
- <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
- <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
- <AlternatingRowStyle BackColor="White" />
- </asp:GridView>
- </strong>
- </div>
- </form>
- </body>
- </html>
后台:
- using System;
- using System.Data;
- using System.Configuration;
- using System.Web;
- using System.Web.Security;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- using System.Web.UI.HtmlControls;
- using System.Data.OracleClient;
- public partial class _Default : System.Web.UI.Page
- {
- protected DataSet dataSetXml;
- protected DataTable dataTableXml;
- protected string tableName;
- protected string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["OracleConnection"].ConnectionString;
- protected void Page_Load(object sender, EventArgs e)
- {
- }
- protected void buttonSubmit_Click(object sender, EventArgs e)
- {
- Message.Text = "";
- dataSetXml = new DataSet();
- dataTableXml = new DataTable();
- try
- {
- dataSetXml.ReadXml(HttpContext.Current.Server.MapPath(textBoxXml.Text));
- dataTableXml = dataSetXml.Tables[0];
- GridView1.DataSource = dataTableXml.DefaultView;
- GridView1.DataBind();
- tableName = textBoxXml.Text.Substring(0, textBoxXml.Text.Length - 4);
- }
- catch
- {
- Message.Text = "不能打开Xml文件或者是Xml文件格式错误";
- }
- if (dataTableXml.Rows.Count > 0)
- {
- TableCheck();
- TableInsert();
- }
- }
- private void TableCheck()
- {
- OracleConnection conn = new OracleConnection(strConn);
- try
- {
- conn.Open();
- int count = 0;
- //conn.Open();
- DataTable schemaTable = conn.GetSchema("TABLES", new string[] { "SCOTT",tableName});
- string sqlCmd = "";
- if (schemaTable.Rows.Count < 1)
- {
- sqlCmd = "create table scott." + tableName + "(";
- for (int i = 0; i < dataTableXml.Columns.Count; i++)
- {
- sqlCmd += dataTableXml.Columns[i].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();
- }
- }
- private void TableInsert()
- {
- OracleConnection conn = new OracleConnection(strConn);
- try
- {
- conn.Open();
- foreach (DataRow dr in dataTableXml.Rows)
- {
- string sqlCmd = "Insert Into scott." + tableName + "(";
- for (int i = 0; i < dataTableXml.Columns.Count; i++)
- {
- sqlCmd += dataTableXml.Columns[i].ColumnName.ToString() + ",";//添加列的字段名
- }
- sqlCmd = sqlCmd.Substring(0, sqlCmd.Length - 1) + ") Values(";
- for (int i = 0; i < dataTableXml.Columns.Count; i++)
- {
- sqlCmd += "'" + dr[i].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();
- }
- }
- }