本文總結(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) 編輯 收藏 引用