• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-18  評(píng)論-11  文章-12  trackbacks-0

                  本文總結(jié)項(xiàng)目中數(shù)據(jù)庫操作相關(guān)的一些經(jīng)驗(yàn)教訓(xùn),特別是最近一周以來的。項(xiàng)目集成時(shí),數(shù)據(jù)庫出過幾次莫名奇妙的錯(cuò)誤,而我自己,也因?yàn)閿?shù)據(jù)庫表設(shè)計(jì)不當(dāng),而屢嘗苦果。

            一、數(shù)據(jù)讀取

                  常用兩種方法從數(shù)據(jù)庫讀取數(shù)據(jù)。1. 直接讀取。使用SqlConnection建立一個(gè)數(shù)據(jù)庫連接con,將con和查詢語句select封裝到一個(gè)SqlCommand對(duì)象command中,并使用SqlAdapter對(duì)這個(gè)command進(jìn)行包裝,包裝后得到適配器對(duì)象da,使用da.fill()函數(shù),將查詢結(jié)果讀到DataSet中。

                 2. 使用存儲(chǔ)過程。將查詢語句保存到存儲(chǔ)過程中,以后每次調(diào)用數(shù)據(jù)庫中的存儲(chǔ)過程。本質(zhì)上,這種方式和1相同,但將cmd.CommandType = CommandType.StoredProcedure,然后SqlAdapter將會(huì)去數(shù)據(jù)庫中查找相應(yīng)的存儲(chǔ)過程,而不是1中的直接使用select查詢語句。

                  對(duì)于第2種方式,可以將數(shù)據(jù)讀到DataSet中,然后再對(duì)DataSet直接操作。或者使用dataReader = cmd.ExecuteReader();將數(shù)據(jù)對(duì)到DataReader中,然后再從DataReader將數(shù)據(jù)保存到業(yè)務(wù)類中。

            二、表、視圖、存儲(chǔ)過程

                  1. 在設(shè)計(jì)表的時(shí),應(yīng)考慮完備。比如備用字段、字段長度等因素。

                   2. 視圖并不能帶來效率的改善,但可以很好地讓邏輯更清晰。

                   3. 存儲(chǔ)過程不應(yīng)該存在調(diào)用關(guān)系。否在在集成時(shí),極易出錯(cuò)。

                    4.   盡量將數(shù)據(jù)庫連接參數(shù)寫道web.config里,而不是直接寫在程序中。

            源代碼1
            public static int GetQueryList(string strQuery,out DataSet details)
               {
               
                SqlConnection con = null;
                string select = strQuery;
                details = new DataSet();
               
                try
                {
                 if (con == null)
                 {
                  con = new SqlConnection(ConfigurationSettings.AppSettings["HrsConnectionString"]);
                  con.Open();
                 }
                 SqlCommand cmd = new SqlCommand(select, con);;
                 DataSet dsTemp = new DataSet();
                 SqlDataAdapter da = new SqlDataAdapter(cmd);
                 da.Fill(dsTemp);
                 details = dsTemp;
                
                }
                catch(Exception e)
                {  
                 ComLog.ErrSet("","","EplCheckHistory.cs[GetQueryList()]",e.TargetSite.ToString() + e.Message);
                 details = null;
                 return 3;
                }
                finally
                {
                 if (con != null)
                 {
                  con.Close();
                  con.Dispose();
                  con = null;
                 
                 }
                }
                return 0;
               }


            類別:項(xiàng)目回顧 查看評(píng)論
            文章來源:http://hi.baidu.com/hawkingliu/blog/item/b42a9e2b757e17ffe6cd40d4.html
            posted on 2008-04-21 22:01 ronliu 閱讀(161) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            亚洲国产精品久久久久网站| 99精品国产综合久久久久五月天| 人妻无码αv中文字幕久久琪琪布| 97久久精品无码一区二区天美| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 久久久久久久波多野结衣高潮 | 久久久久久无码Av成人影院| 久久Av无码精品人妻系列| 久久亚洲国产欧洲精品一| 午夜福利91久久福利| 91精品国产综合久久婷婷| 久久亚洲av无码精品浪潮| 一本久久a久久精品vr综合| 国内精品久久久久久久久电影网 | 99久久婷婷免费国产综合精品| 国产精品久久久天天影视香蕉| 精产国品久久一二三产区区别| 久久精品国产免费一区| 久久这里的只有是精品23| 中文字幕亚洲综合久久2| 欧美亚洲国产精品久久| 国产日韩久久久精品影院首页| 久久99精品久久久久久久不卡| 久久精品成人一区二区三区| 久久久国产精品网站| 久久久国产乱子伦精品作者| 久久天天躁狠狠躁夜夜2020一| 精品无码久久久久久久动漫| 久久福利青草精品资源站| 亚洲欧洲日产国码无码久久99| 中文成人无码精品久久久不卡| 国产精品成人99久久久久| 777久久精品一区二区三区无码| 久久精品国产亚洲AV无码偷窥 | 中文精品99久久国产| 老司机午夜网站国内精品久久久久久久久 | 久久久久久毛片免费看| AAA级久久久精品无码区| 韩国三级中文字幕hd久久精品| 国产精品久久久久久影院| 国产精品久久久久影视不卡|