• <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   管理


            亚洲七七久久精品中文国产 | 色欲久久久天天天综合网| 精品久久久久久国产牛牛app| 国产成人精品久久亚洲| 亚洲国产婷婷香蕉久久久久久| 久久久久久精品成人免费图片| 久久精品午夜一区二区福利| 国产亚洲美女精品久久久| 欧美亚洲国产精品久久| 免费国产99久久久香蕉| 久久久久高潮综合影院| 国产精品欧美亚洲韩国日本久久 | 亚洲午夜久久久影院伊人| 久久综合久久综合久久| 伊人久久大香线焦AV综合影院 | 久久久久亚洲精品天堂| 久久综合日本熟妇| 9久久9久久精品| 熟妇人妻久久中文字幕| 欧美一区二区久久精品| 久久久久亚洲AV无码专区网站 | 久久人人爽人人爽人人片AV不 | 手机看片久久高清国产日韩| 国产精品18久久久久久vr| 亚洲天堂久久久| 久久一区二区免费播放| 国内精品久久久久久久coent| 国产精品青草久久久久婷婷| 久久精品国产亚洲AV久| 麻豆久久久9性大片| 欧美久久一区二区三区| 久久亚洲国产精品五月天婷| AAA级久久久精品无码区| 久久精品国产精品亚洲精品| 狠狠色丁香久久综合五月| 国产亚洲婷婷香蕉久久精品| 精品久久久久久国产潘金莲| 精品久久久噜噜噜久久久| 久久被窝电影亚洲爽爽爽| 狠狠狠色丁香婷婷综合久久俺| 免费精品99久久国产综合精品|