• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

我有一个梦想。。。

学习.net技术
  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

学习cnblogsGuestBook

今天重新看了一遍【cnBlogsGuestBook v1.0】和【cnBlogsGuestBook v2.0】,顺便对两者做一个比较,同时整理一下自己的思路,对asp.net实现留言本功能的演化,有一个大致的认识:.net到底能为我们的应用实现到什么程度?我们到底能用.net做得更好?
<1>cnBlogsGuestBook v1.0
用asp的写法来实现留言本。(可看偶的“菜鸟留言”
http://www.cnblogs.com/lovewangshu/archive/2005/03/04/113113.html
菜鸟看点:
1。Response.Write(strResponse)发生在显示html代码之前,也就是说,Page_load()先发生。
2。ADO.net连接数据库的一些基本操作。绑定、显示数据库表的一些方法。
3。Response.Write(strResponse)里strResponse的生成。
4。数据库添加记录的方法:先将表同DataSet绑定,通过向DataSet添加记录,实现表添加记录,当然最后得:myAdapter.Update()一下。
5。" 因为不是Submit按钮,所以不能使页面刷新" 有点不懂。Button按了之后不会引发Page_load()???
这些都应该属于asp.net的一些技巧性的东西。对菜鸟而言,技巧性的东西必须掌握,在能熟练应用的基础上能摸索出内在的规律,理解它的架构,对不明白的地方多查一些资料,多看优秀的源代码,提高自己的水平。
再看一遍V1.0 ,会发现代码中有许多重复的代码,主要是ADO.NET连接数据库方面的,如

    private void Page_Load(object sender, System.EventArgs e)
        
{
            
//建立数据库路径存储字符串

            string dbname;
            
//SQL语句字符串

            string strSQL;
            
            dbname
=Server.MapPath(@"data0621/database.mdb"
);
            
//建立一个连接数据库用的Connection

            OleDbConnection conn=new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source="+dbname);
            
//打开这个连接

            conn.Open();
            
            strSQL
="select * from tbl_msg"
;
            DataSet ds
=new
 DataSet();
            OleDbDataAdapter myAdapter
=new
 OleDbDataAdapter(strSQL,conn);
            
            
//将数据填如DataSet对象中

            myAdapter.Fill(ds,"tbl_msg");
          ....
       }
            
//dt中存ds中表tbl_msg的内容

            DataTable dt=ds.Tables["tbl_msg"];

private void btnSubmit_Click(object sender, System.EventArgs e)
        
{
            
//提交数据操作
            
//当然,首先要判断的数据的合法性
            if(txtboxTitle.Text==""||txtboxContent.Text=="")
            
{
                Response.Write(
"<font color='red'>title和content都不能为空</font>");
            }

            
else
            
{
                
string dbname;
                
string strSQL;
                dbname
=Server.MapPath(@"data0621/database.mdb");
                OleDbConnection conn
=new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source="+dbname);
                conn.Open();
                strSQL
="select msg_title,msg_content,msg_time from tbl_msg";
                OleDbDataAdapter myAdapter
=new OleDbDataAdapter(strSQL,conn);
                OleDbCommandBuilder cb
=new OleDbCommandBuilder(myAdapter);
                DataSet dss
=new DataSet();
                myAdapter.Fill(dss,
"tbl_msg");

在本例中,asp.net访问数据库通过DataSet数据集来实现。DataSet相当于一个下载到本地的离线数据库,通过DataSet实现select,Update,insert,delete,最后通过适配器(DataAdapter)的Update(DataSet)操作,实现离线数据库和Web端数据库的同步。
V1.0 里,在需要数据库操作的地方都重新定义了一个DataSet的实例,因为是对同一个数据库表单的操作,所以出现大量的重复代码。虽然可以对重复代码定义一个返回DataSet的函数,不过毫无OO思想而言,并不是优秀的代码。

posted on 2005-03-25 10:31  sooloo  阅读(894)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3