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

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

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

    編程之道

    無(wú)論是批評(píng)的,贊揚(yáng)的,指著的都請(qǐng)EMAIL給我,你的建議將是我前進(jìn)的動(dòng)力! 聯(lián)系我

    畢業(yè)設(shè)計(jì),基于3層的.net論壇設(shè)計(jì)思路

        這個(gè)項(xiàng)目我在分析設(shè)計(jì)的時(shí)候采用了3層構(gòu)架。我的基本思想是只要和數(shù)據(jù)庫(kù)交互的字段和控件,我都把它當(dāng)作參數(shù)傳給中間層,然后中間層調(diào)用數(shù)據(jù)層的runCommand()方法,從而達(dá)到了各層分工明細(xì)的目的。在驗(yàn)證表單方面,我使用了JS,在客戶(hù)端驗(yàn)證,可以減低服務(wù)器壓力。
    下面是一段注冊(cè)用戶(hù)的代碼:
     

    //register.cs

    //通過(guò)一個(gè)提交事件,將控件值傳入業(yè)務(wù)層

    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語(yǔ)句                        

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

             //將傳入的參數(shù)放進(jìn)數(shù)組里          

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

        //將數(shù)據(jù)庫(kù)相對(duì)應(yīng)每個(gè)字段的變量放進(jìn)數(shù)組

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

        //調(diào)用數(shù)據(jù)層的runCommand()方法

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

    }

    //Database.cs

    //返回一個(gè)OleDbParameter對(duì)象

    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個(gè)循環(huán)主要是為了創(chuàng)建

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

    //賦值

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

    //我這樣設(shè)計(jì)主要是為了考慮如果以后要添加或刪除用戶(hù)信息的話(huà),

    //我只要修改業(yè)務(wù)層

                       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();                       

    }


          完成項(xiàng)目后,我發(fā)現(xiàn)了很多問(wèn)題,試著想去改,怕破壞原來(lái)的結(jié)構(gòu),總的來(lái)說(shuō)還是失敗了,我總結(jié)了以下經(jīng)驗(yàn)和問(wèn)題:
    1.在多表操作的時(shí)候應(yīng)該使用存儲(chǔ)過(guò)程,因?yàn)榫渥右婚L(zhǎng)很容易錯(cuò),而且調(diào)試后才能知道結(jié)果,如果是存儲(chǔ)過(guò)程的話(huà)可以在MSSQL中驗(yàn)證語(yǔ)句是否錯(cuò)誤。當(dāng)然存儲(chǔ)過(guò)程還有其他優(yōu)點(diǎn)。
    2.用JS腳本驗(yàn)證表單。我覺(jué)得比.NET提供的驗(yàn)證控件方便多了,而且本地驗(yàn)證減少網(wǎng)絡(luò)傳輸中這樣那樣的問(wèn)題。
    3.我有次在別人機(jī)子上調(diào)試的出了問(wèn)題:老是報(bào):“該操作不是一個(gè)可更新的操作?!蔽矣魫灹撕镁茫詈笤趧e人帖子了找到了答案,原來(lái)是WINDOWS權(quán)限問(wèn)題,那機(jī)子用的是WINDOWS2003。
    4.我覺(jué)得象我這樣普通的畢業(yè)生,軟件工程對(duì)我來(lái)說(shuō)太渺茫了,根本就沒(méi)法達(dá)到自己預(yù)期的理想,就算是分析時(shí)設(shè)計(jì)到的功能,但在代碼實(shí)現(xiàn)時(shí)被自己設(shè)計(jì)的框架而卡住。所以我就有個(gè)疑問(wèn):是拿別人的設(shè)計(jì)書(shū)寫(xiě)好,還是自己設(shè)計(jì)自己寫(xiě)好?雖然我時(shí)常偷窺某人設(shè)計(jì)書(shū),但是終不得精髓。(就像有了內(nèi)功新法確缺少套路一樣)
    5.戒驕戒躁。我覺(jué)得驕傲煩躁這是編程大忌。林銳博士一本書(shū)寫(xiě)到他同學(xué)編程的時(shí)候,說(shuō)他編程的時(shí)候簡(jiǎn)直不是人,就是個(gè)指針??赡苓@就是高手和普通人的區(qū)別把

    posted on 2005-08-20 22:40 瘋流成性 閱讀(1144) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): 項(xiàng)目

    評(píng)論

    # re: 畢業(yè)設(shè)計(jì),基于3層的.net論壇設(shè)計(jì)思路 2006-08-06 02:54 XYZ

    寫(xiě)的好
      回復(fù)  更多評(píng)論   

    主站蜘蛛池模板: 久久噜噜噜久久亚洲va久| 我要看WWW免费看插插视频| A毛片毛片看免费| 免费在线观看自拍性爱视频| 亚洲aⅴ天堂av天堂无码麻豆| 亚洲综合无码无在线观看| wwwxxx亚洲| 亚洲精品蜜夜内射| 亚洲精品无码久久久久YW| 亚洲aⅴ无码专区在线观看春色 | 精品在线视频免费| 久久亚洲日韩精品一区二区三区| 免费a级毛片视频| 久久午夜羞羞影院免费观看| 国产精品一区二区三区免费| 一级特黄特色的免费大片视频| 国产午夜亚洲精品不卡电影| 久久久久亚洲国产AV麻豆 | 老司机69精品成免费视频| 中文字幕免费观看视频| 一级黄色毛片免费看| www成人免费视频| 中文在线免费观看| 中文字幕免费人成乱码中国| 97超高清在线观看免费视频| 十八禁视频在线观看免费无码无遮挡骂过| 羞羞漫画在线成人漫画阅读免费| 亚洲精品宾馆在线精品酒店| 精品国产成人亚洲午夜福利| 亚洲欧洲国产精品久久| 亚洲白色白色永久观看| 久久青青成人亚洲精品| 亚洲精品国产福利片| 国产日本亚洲一区二区三区| 亚洲人成人无码.www石榴| 国产AV无码专区亚洲AV蜜芽 | 亚洲一级特黄大片无码毛片 | 人人揉揉香蕉大免费不卡| 亚洲免费视频在线观看| 最近2018中文字幕免费视频| 91香焦国产线观看看免费|