<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    編程之道

    無論是批評的,贊揚的,指著的都請EMAIL給我,你的建議將是我前進的動力! 聯系我

    畢業設計,基于3層的.net論壇設計思路

        這個項目我在分析設計的時候采用了3層構架。我的基本思想是只要和數據庫交互的字段和控件,我都把它當作參數傳給中間層,然后中間層調用數據層的runCommand()方法,從而達到了各層分工明細的目的。在驗證表單方面,我使用了JS,在客戶端驗證,可以減低服務器壓力。
    下面是一段注冊用戶的代碼:
     

    //register.cs

    //通過一個提交事件,將控件值傳入業務層

    private void Submit_ServerClick(object sender, System.EventArgs e)

    {

             UserInfo user=new UserInfo();                    
             user.AddUser(this.UserName.Value,this.PasswordR.Value,this.Email.Value,this.Homepage.Value,

                                         this.show_face.Src);

    }

    //UserInfo.cs                                

    public void AddUser(string username,string passwords,string email,

             string homepage,string face)

    {

             Database data = new Database();

             OleDbParameter[] prams={                       

                                                            data.MakeInParam("@username",OleDbType.VarChar,16),

                                                            data.MakeInParam("@passwords",OleDbType.VarChar,12),

                                                             data.MakeInParam("@email",OleDbType.VarChar,50),

                                                           data.MakeInParam("@homepage",OleDbType.VarChar,50),

                                                           data.MakeInParam("@face",OleDbType.VarChar,50)

                                                        };

        //SQL語句                        

             strcmd="insert into Users(username,passwords,email,homepage,face) values (@username, @passwords, @email, @homepage, @face)";

             //將傳入的參數放進數組里          

             string[] values={username,passwords, email, homepage, face};

        //將數據庫相對應每個字段的變量放進數組

             string[] datacolumn={"@username","@passwords", "@email", "@homepage", "@face"};

        //調用數據層的runCommand()方法

             data.runCommand(strcmd,prams,datacolumn,values);      

    }

    //Database.cs

    //返回一個OleDbParameter對象

    public OleDbParameter MakeInParam(string ParamName, OleDbType DbType,int size)

    {

             OleDbParameter param;

             return param=new OleDbParameter(ParamName,DbType,size);

    }

     

    public void runCommand(string strcmd,OleDbParameter[] prams,string[] datacolumn,string[] values)

    {

             OleDbDataAdapter cmd = new OleDbDataAdapter(strcmd, conn);    

        this.Open();

             if (prams != null)

             {

            //2個循環主要是為了創建

            // cmd.SelectCommand.Parameters.Add(new OleDbParameter ("@username",OleDbType.VarChar,16));

    //賦值

    // cmd.SelectCommand.Parameters[@username].Value=username;

    //我這樣設計主要是為了考慮如果以后要添加或刪除用戶信息的話,

    //我只要修改業務層

                       foreach (OleDbParameter parameter in prams)

                       {

                                cmd.SelectCommand.Parameters.Add(parameter);                                       

                       }

                       for(int i=0;i<values.Length;i++)

                       {

                                cmd.SelectCommand.Parameters[datacolumn[i]].Value=values[i];

                       }

             }                

             cmd.SelectCommand.ExecuteNonQuery();

             this.Close();                       

    }


          完成項目后,我發現了很多問題,試著想去改,怕破壞原來的結構,總的來說還是失敗了,我總結了以下經驗和問題:
    1.在多表操作的時候應該使用存儲過程,因為句子一長很容易錯,而且調試后才能知道結果,如果是存儲過程的話可以在MSSQL中驗證語句是否錯誤。當然存儲過程還有其他優點。
    2.用JS腳本驗證表單。我覺得比.NET提供的驗證控件方便多了,而且本地驗證減少網絡傳輸中這樣那樣的問題。
    3.我有次在別人機子上調試的出了問題:老是報:“該操作不是一個可更新的操作。”我郁悶了好久,最后在別人帖子了找到了答案,原來是WINDOWS權限問題,那機子用的是WINDOWS2003。
    4.我覺得象我這樣普通的畢業生,軟件工程對我來說太渺茫了,根本就沒法達到自己預期的理想,就算是分析時設計到的功能,但在代碼實現時被自己設計的框架而卡住。所以我就有個疑問:是拿別人的設計書寫好,還是自己設計自己寫好?雖然我時常偷窺某人設計書,但是終不得精髓。(就像有了內功新法確缺少套路一樣)
    5.戒驕戒躁。我覺得驕傲煩躁這是編程大忌。林銳博士一本書寫到他同學編程的時候,說他編程的時候簡直不是人,就是個指針。可能這就是高手和普通人的區別把

    posted on 2005-08-20 22:40 瘋流成性 閱讀(1148) 評論(1)  編輯  收藏 所屬分類: 項目

    評論

    # re: 畢業設計,基于3層的.net論壇設計思路 2006-08-06 02:54 XYZ

    寫的好
      回復  更多評論   

    主站蜘蛛池模板: 亚洲va无码专区国产乱码| 中文日韩亚洲欧美制服| 曰韩亚洲av人人夜夜澡人人爽| 国产精品亚洲美女久久久| 亚洲精品国产自在久久| 久久亚洲中文字幕精品有坂深雪| 亚洲国产精品成人AV在线| 男的把j放进女人下面视频免费| 最近中文字幕免费mv视频8| 国产亚洲色婷婷久久99精品91| 午夜亚洲乱码伦小说区69堂| 亚洲黄色免费网站| 亚洲天堂免费在线视频| 又黄又大的激情视频在线观看免费视频社区在线 | 美女被免费网站91色| 免费A级毛片无码无遮挡内射| 久久精品国产精品亚洲艾草网美妙| 国产AV日韩A∨亚洲AV电影| 亚洲成?Ⅴ人在线观看无码| 亚洲男人天堂2018av| 最近中文字幕无吗免费高清| 亚洲av乱码中文一区二区三区| xxxxx免费视频| 亚洲2022国产成人精品无码区| 一级做性色a爰片久久毛片免费| 手机在线毛片免费播放| 亚洲av永久无码精品秋霞电影秋| 国产成人免费a在线视频app| 久久精品国产亚洲αv忘忧草 | 亚洲人色婷婷成人网站在线观看| 亚洲国产成人久久精品软件| 国产免费av片在线无码免费看| 亚洲AV无码一区二区三区牛牛| 日韩免费观看一级毛片看看| 久久久久se色偷偷亚洲精品av | 久久青青草原亚洲av无码app| 免费AA片少妇人AA片直播| 久久亚洲AV成人无码国产电影| 国产国拍亚洲精品福利 | 亚洲AV成人片无码网站| 中文字幕亚洲综合久久菠萝蜜 |