官方首页
 计算机科学与技术
 湖畔文学
 真缘不夜天
 湖畔艺术
 湖畔科技
 本站留言
热门关键字:    dreamlandcn.com    蓝色湖畔
 >>相关文章
·经典的asp代码分享
·ASP文件无组件直接上传功能
·ASP中利用服务器组件 用st
·使用ASPJPEG让图片保存到
·ASP中很好用的防止盗链的方法
·常用的6个ASP程序
·本站首页模板已更改完成
·旗袍碎语--让年轮倒转,让美丽
·陈果导演的“香港回归三部曲”
·北京奥运 完美谢幕
 >>点击排行TOP10
·多种排序算法,多种语言讲解(前言)
·多种排序算法,多种语言讲解(简单选
·多种排序算法,多种语言讲解(堆排序
·多种排序算法,多种语言讲解(快速排
·【其它欣赏】少儿不宜的设计
·多种排序算法,多种语言讲解(冒泡排
·VC中使用GetModuleFil
·多种排序算法,多种语言讲解(树形选
·C#中DataSet绑定XML的代
·多种排序算法,多种语言讲解(希尔排
·【其它欣赏】一辆卡车车身广告引发P
·多种排序算法,多种语言讲解(交换排
·多种排序算法,多种语言讲解(直接插
·如何使用 Visual Basic
·多种排序算法,多种语言讲解(总结)
 
 当前位置:网站首页 > 计算机科学与技术 > .net编程 > C#.net > 浏览正文
C#中DataSet绑定XML的代码
作者:佚名    来源:本站原创    点击数:   更新时间:2008年07月06 【字体:
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.OleDb; //数据库需要的命名空间
using System.IO; //这个命名空间是用来绑定XML的,以及XML文件的读与写
//using System.Xml;
//using System.Xml.Schema;
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            string strDSN = Server.MapPath(@"App_Data/bloglustarking.mdb");
            //连接字符串,指定为当前目录内的App_Data/bloglustarking.mdb数据库地址。
            OleDbConnection thisConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strDSN);
            //打开ACCESS数据库的连接。
            thisConnection.Open();
            //打开操作,一般添加在try中,以防止数据库的打开异常错误,有关异常在此忽略。
            OleDbDataAdapter thisDataAdapter = new OleDbDataAdapter();
            //使用OLEDB读取数据需要的DataAdapter
            thisDataAdapter.SelectCommand = new OleDbCommand("Select [id], [title], [writer], [articleid], From [article]", thisConnection);
            //使用数据库语句SELECT将数据库的内容读取,这是预先命令,然后将DataSet绑定。
            DataSet thisDataSet = new DataSet();
            //创建新的DataSet来绑定内容。
            thisDataAdapter.Fill(thisDataSet);
            thisConnection.Close(); //关闭数据库
            //数据库部分请查阅相关资料,《C#入门经典》(第3版),ADO.net章节,在此不详细写出。
            //这是一个测试改变字符串长度的代码。
            string infString = ""; //这个是用于交换字符串的中间变量
            foreach (DataRow myDataRow in thisDataSet.Tables[0].Rows)
            {
                if (myDataRow["title"].ToString().Length > 10)
                {
                    infString = myDataRow["title"].ToString().Substring(0, 10) + "...";
                    myDataRow["title"] = infString;
                }
            }
            //如果"title"字符串长度大于10,那么将显示前10个字符数,后将用"..."省略。
            /*
            GridView1.DataSource = thisDataSet;
            GridView1.DataBind();
             * 这两行去掉是直接绑定控件,以下实验用XML绑定后的结果。
             * 这里为了绑定XML,我们便不绑定此DataSet了。
            */
            //用变量声明文件所在地址。
            string XMLname = @"App_Data/myXML.xml";
            string XMLPath = Server.MapPath(XMLname);
            //以下是绑定XML文件的实验代码
            FileStream thisFileStream = new FileStream(XMLPath, FileMode.OpenOrCreate, FileAccess.Write);
            //上一行代码直接用FileStream文件读写对象打开了XML文件。
            StreamWriter streamWriterXML = new StreamWriter(thisFileStream);
            //读取XML文件所需要的StreamWriter对象。
            streamWriterXML.WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
            //以上这行标记着XML的版本和使用的编码方式,可以去掉。只是我不知道加上或不加会不会对文件显示造成影响。
            //笔者认为,默认为ASCII码文档,可是通常我们使用的文档都以UTF-8的编码形式出现,在页顶部还是说明清楚比较好。
            thisDataSet.Tables[0].WriteXml(streamWriterXML, XmlWriteMode.WriteSchema);
            //以上这行使用WriteXML来写入XML的内容,经笔者查阅MSDN后得:
            // WriteXML 表示一个编写器,该编写器提供一种快速、非缓存和只进的方式来生成包含 XML 数据的流或文件。
            //XMLWriteMode有以下属性:DiffGram、IgnoreSchema和WriteSchema,表示的意义不在此写出了,感兴趣的读者请查阅微软MSDN上的XmlWriteMode
            //thisDataSet1.ReadXml(streamReaderXML); //此行有错?
            //错误已解决,不能直接使用同一个FileStream,此Stream指针已到文件末尾,因此会找不到数据。
            thisFileStream.Close();
            //一定要有此操作,否则将不能再次使用。
            //因为是流,所以上面那个不能继续使用了,只能重新创建一个FileStream对象来读取XML文件的内容。
            FileStream thisFileStream1 = new FileStream(XMLPath, FileMode.Open, FileAccess.Read);
            StreamReader streamReaderXML = new StreamReader(thisFileStream1);
            //方法同上,用只读方式打开XML文件。
            DataSet thisDataSet1 = new DataSet();
            //产生新的DataSet,以便取得新的值,和上面从数据库中取得的区别开。
            thisDataSet1.ReadXml(streamReaderXML, XmlReadMode.ReadSchema);
            thisFileStream1.Close();
            GridView1.DataSource = thisDataSet1;
            GridView1.DataBind();
            //将thisDataSet1的内容绑入到GridView1控件,以便显示,这个方法同上。
            Label1.Text = "绑定XML文档成功!文档地址: <a href=" + XMLname + " target=\"_blank\">" + XMLname + "</a>";
        }
        catch (Exception e1)
        {
            Label1.Text += "\n读取发生错误:\n错误信息:" + e1.ToString() + "<br>";
        }
        finally
        {
            //附代码写出。
            string foottext = "", strLine = "";
            FileStream afile = new FileStream(Server.MapPath("Default.aspx.cs"), FileMode.Open);
            StreamReader sr = new StreamReader(afile, System.Text.Encoding.Default);
            foottext = sr.ReadLine();
            while (foottext != null)
            {
                strLine += foottext + "<br>";
                foottext = sr.ReadLine();
            }
            sr.Close();
            afile.Close();
            Label2.Text += strLine.ToString();
        }
        /* 在ASP.Net 2.0中使用XML的心得体会:
         * 今天下午,雷雨交加,终于学会了,从数据库绑定到DataSet的对象中,然后又从DataSet对象成功导入数据到XML里,
         * 最后通过XML绑定到DataSet里,显示到GridView控件中。我最后成功的那一刻,感到非常高兴。
         * 也许这样的代码,对于某些高手来说,还比较幼稚,但是我已经心满意足了。因为我终于体验到了,什么叫XML的强大了。
         * 以后我会更刻苦地去钻研这些强大的东西,XML我已经被诱惑了,它能解决我目前很想很想解决的表格的问题。
         * 我本还以为我今生对XML已经无缘,以前看到这个东西就头疼眼花,翻过很多资料,看不懂,原来我最后理解它了,它就
         * 是传说中的数据容器,它可以存储很多通用的信息,只要好好编辑可以给它使用的程序来读取它,它的功能无处不在。
         * 而且还可以从前台的JS中绑定,应该QQ空间就是这么做的吧。这个也是我想学到的一个功能。
         * 呵呵,不过千万不要只往这个方向努力哦……小心陷进去出不来了……^_^,其他功能同样要学。
         * 比如还有很多很多的用户控件,如Login控件,还有好多算法要掌握。虽然今天很累,那么就休息会吧。
         * 只要用功,没有什么学不会的。世上无难事,只怕有心人。
         * 下一步,准备学习XML的构架,我的新目标来了。
         *                                                        ----2007年8月11日 Writted by 思念天灵
         */
    }
}
Tags:dreamlandcn.com
Google
 
关于我们 | 服务指南 | 著作权与商标声明 | 法律声明 | 服务条款 | 隐私声明 | 诚征英才  | 友情链接
Powered by ACTCMS 2.0
Copyrights©2008-2009 蓝色湖畔 www.dreamlandcn.comAll Rights Reserved.