利用OleDb对象,将数据库中全部表转换成XML文件

利用OleDb对象,将数据库中全部表转换成XML文件

    ASP.NET Dataset让你在页面中使用XML格式的文件提供了便利。如果您的数据全部都在一个数据库中,该如何进行转换呢?如果你的数据库与OleDb兼容的话,下面就看看如何把数据库中的所有表转换成XML文件。文件名字与数据库中的表的名字相同。本代码包含两个版本:C#版本和VB.NET版本。

C#版本:[测试]

<xmp style="padding:10px;background-color:#FFD780;border:1px solid #FF9801;word-break:break-all"> <%@ Page Language="C#" %> <%@ import Namespace="System" %> <%@ import Namespace="System.Data" %> <%@ import Namespace="System.Data.OleDb" %> <script runat="server"> void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { TextBox1.Text = "PROVIDER=SQLOLEDB; Data Source=.; Initial Catalog=pubs;User ID=sa;Password=;"; Label1.Text = ""; } } void CreateXml(object sender, EventArgs e) { OleDbConnection dataConn = new OleDbConnection(TextBox1.Text); Uri Path = Request.Url; String ServerUrl = Path.ToString(); ServerUrl = ServerUrl.Substring(0,ServerUrl.LastIndexOf("/") +1 ); try { Literal1.Text = "已经在你的相同目录下创建了一下文件:
" ; dataConn.Open(); DataTable schemaTable = dataConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[] {null, null, null, "TABLE"}); for(int i = 0; i < schemaTable.Rows.Count; i++){ OleDbDataAdapter dbAdapter= new OleDbDataAdapter("select * from [" + schemaTable.Rows[i].ItemArray[2].ToString() + "]",dataConn); DataSet tableData = new DataSet(); dbAdapter.Fill(tableData,schemaTable.Rows[i].ItemArray[2].ToString()); tableData.WriteXml(HttpContext.Current.Server.MapPath(schemaTable.Rows[i].ItemArray[2].ToString() + ".xml")); Literal1.Text = Literal1.Text + " "; Literal1.Text = Literal1.Text + schemaTable.Rows[i].ItemArray[2].ToString() + ".xml
"; } } catch(Exception ex) { Label1.Text = ex.Message.ToString(); } finally { dataConn.Close(); } } </script> <html> <head> leDb2XML:数据库转换成XML文件例子 </head> <body bgcolor="#FFFFFF">

OleDb2XML:数据库转换成XML文件例子

请输入OleDb连接字符串,然后点“生成XML文件”按钮。

<asp:textbox id="TextBox1" width="600" runat="server"></asp:textbox>

<asp:button text="生成XML文件" id="Button1" onclick="CreateXml" runat="server"></asp:button>

<asp:label id="Label1" font-bold="True" forecolor="Red" runat="server"></asp:label>

<asp:literal id="Literal1" runat="server"></asp:literal>

</body> </html> </xmp>

VB.NET版本:[测试]

<xmp style="padding:10px;background-color:#FFD780;border:1px solid #FF9801;word-break:break-all"> <%@ import Namespace="System.Data.OleDb" %> <%@ import Namespace="System.Data" %> <%@ import Namespace="System" %> <%@ Page Language="VB" %> <html> <head>

leDb2XML:数据库转换成XML文件例子 <script runat="server"> Sub Page_Load(sender As Object, e As EventArgs) If Not IsPostBack Then 'TextBox1.Text = "Provider=SqlOLEDB; Data Source=.; Initial Catalog=pubs;User ID=sa;Password=;" Label1.Text = "" TextBox1.Text = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("Test.mdb") End If End Sub Sub CreateXml(sender As Object, e As EventArgs) Dim dataConn As New OleDbConnection(TextBox1.Text) Dim Path As Uri = Request.Url Dim ServerUrl As String = Path.ToString() ServerUrl = ServerUrl.Substring(0,ServerUrl.LastIndexOf("/") + 1 ) Try Literal1.Text = "已经在你的相同目录下创建了一下文件:
" dataConn.Open() Dim schemaTable As DataTable schemaTable = dataConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"}) Dim i As Integer For i = 0 To schemaTable.Rows.Count - 1 Dim dbAdapter As New OleDbDataAdapter("select * from [" + schemaTable.Rows(i).ItemArray(2).ToString() + "]", dataConn) Dim tableData As New DataSet() dbAdapter.Fill(tableData, schemaTable.Rows(i).ItemArray(2).ToString()) tableData.WriteXml(HttpContext.Current.Server.MapPath((schemaTable.Rows(i).ItemArray(2).ToString() + ".xml"))) Literal1.Text = Literal1.Text + " " Literal1.Text = Literal1.Text + schemaTable.Rows(i).ItemArray(2).ToString() + ".xml
" Next i Catch ex As Exception Label1.Text = ex.Message.ToString() Finally dataConn.Close() End Try End Sub </script> </head> <body bgcolor="#ffffff">

OleDb2XML:数据库转换成XML文件例子

请输入OleDb连接字符串,然后点“生成XML文件”按钮。

<asp:textbox id="TextBox1" width="600" runat="server"></asp:textbox>

<asp:button text="生成XML文件" id="Button1" onclick="CreateXml" runat="server"></asp:button>

<asp:label id="Label1" font-bold="True" forecolor="Red" runat="server"></asp:label>

<asp:literal id="Literal1" runat="server"></asp:literal>

</body> </html> </xmp>

对于数据量大的数据库,处理可能会需要更多的时间,因此有可能需要更改machine.config文件中processModel的responseDeadlockInterval 属性,比如为5分钟,默认为3分钟。

<processModel
    enable="true"
    timeout="Infinite"
    idleTimeout="Infinite"
    shutdownTimeout="0:00:05"
    requestLimit="Infinite"
    requestQueueLimit="5000"
    restartQueueLimit="10"
    memoryLimit="60"
    webGarden="false"
    cpuMask="0xffffffff"
    userName="machine"
    password="AutoGenerate"
    logLevel="Errors"
    clientConnectedCheck="0:00:05"
    comAuthenticationLevel="Connect"
    comImpersonationLevel="Impersonate"
    responseRestartDeadlockInterval="00:09:00"
    responseDeadlockInterval="00:05:00" default is 00:03:00
    maxWorkerThreads="25"
    maxIoThreads="25" />

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值